女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當前位置:首頁 > 單片機 > 單片機
[導讀]/******************************************************************************** 模塊名稱: spi.h 模塊說明: c51單片機的i/o模擬spi操作 創(chuàng)建時間: 2005/03/09 創(chuàng)建者: xichen ************

/********************************************************************************

模塊名稱: spi.h

模塊說明: c51單片機的i/o模擬spi操作


創(chuàng)建時間: 2005/03/09

創(chuàng)建者: xichen

********************************************************************************/


#ifndef SPI_H

#define SPI_H


sbit SPIS_N = P2^1;

sbit SPIC = P2^3;

sbit SPID = P2^2;

sbit SPIQ = P2^4;


extern void spi_reset();

extern void spi_write(unsigned char spi_bValue);

extern unsigned char spi_read();


#endif




/*******************************************************************************

模塊名稱: spi.c

模塊說明: c51單片機的i/o模擬spi操作


創(chuàng)建時間: 2005/03/09

創(chuàng)建者: xichen

********************************************************************************/

#include "includes.h"


#define set_spi_cs() SPIS_N =1

#define clr_spi_cs() SPIS_N =0

#define set_spi_clk() SPIC =1

#define clr_spi_clk() SPIC =0

#define set_spi_di() SPID =1

#define clr_spi_di() SPID =0

#define read_spi_do() SPIQ


//------------------------------------------

void spi_reset()

{

set_spi_cs();

}

//-----------------------------------------

void spi_write(unsigned char spi_bValue)

{

unsigned char no;


clr_spi_cs();


for (no=0;no<8;no++)

{

clr_spi_clk();


if ((spi_bValue &0x80)==0x80)

set_spi_di();

else

clr_spi_di();


set_spi_clk();


spi_bValue = (spi_bValue <<1);

}

}

//----------------------------------------------

unsigned char spi_read()

{

unsigned char no,spi_bValue;


clr_spi_cs();


for (no=0;no<8;no++)

{

clr_spi_clk();

spi_bValue = (spi_bValue <<1);

set_spi_clk();


if (read_spi_do() ==1)

spi_bValue |=0x01;

else

spi_bValue &=~0x01;

}

return spi_bValue;

}



再一個SPI模擬

#i nclude "COMMON.h"

#i nclude "SPI.H"

#i nclude "INTRINS.H"

/*------------------------------------------------------------------------*/

void SPIReset(void)

{

SPICLK = 0;

}

/*------------------------------------------------------------------------*/

void SPISendByte(unsigned char UC)

{

unsigned chari = 0;

CloseInt(); //要關中斷

for(i=0;i<8;i++)

{

SPICLK = LOW;

SPIDI= (bit)(UC&0x80);UC<<=1;//Delay(0);

SPICLK = HIGH;//4個nop 8us

_nop_();

_nop_();

_nop_();

_nop_();

}

SPICLK = LOW;

OpenInt();//開中斷

//開中斷

/*

#pragma ASM

PUSH ACC;

PUSH 01H;

MOV 01H,#08H

LOOP:

SETB SPICLK

MOV A,R7;

RLC A;

MOV SPIDI,C;

DJNZ 01,LOOP

POP 01H;

popACC;

#pragma ENDASM

*/

}

/*-------------------------------------------------------------------------*/

void SPIInit(void)

{

SPICLK = LOW;

SPIDI= LOW;

SPIDO= HIGH;


}

/*------------------------------------------------------------------------*/

unsigned char SPIReadByte(void)

{


unsigned char i = 0,SPIData = 0;


CloseInt();

//要關中斷


for(i=0;i<8;i++)

{

SPICLK = LOW;Delay8us();

SPICLK = HIGH;//Delay(10);//這個時間真還不太好控制

SPIData=(SPIData<<1)|SPIDO;

}

SPICLK = LOW;



// #pragma ASM

// #pragma ENDASM

OpenInt();//開中斷

return SPIData;

}

/*------------------------------------------------------------------------*/

unsigned long SPIRead24Bit(void)

{

unsigned long SPIData = 0;

unsigned char Data[3] = {0,0,0};


unsigned char i;

CloseInt();//要關中斷

/*

for(i=0;i<3*8;i++)

{


SPICLK = LOW;Delay8us();Delay8us();Delay8us();Delay8us();Delay8us();Delay8us();

SPICLK = HIGH;//Delay(8);//這個時間真還不太好控制


if(SPIDO)

{

SPIData=SPIData<<1;

SPIData|=0x01;

}

else

{

SPIData=(SPIData<<1);

SPIData|=0x00;

}


}

*/

for(i=0;i<8;i++)

{

SPICLK = LOW;Delay8us();Delay8us();Delay6us();

SPICLK = HIGH;

Data[0]=(Data[0]<<1)|SPIDO;


}

for(i=0;i<8;i++)

{

SPICLK = LOW;Delay8us();Delay8us();Delay6us();

SPICLK = HIGH;

Data[1]=(Data[1]<<1)|SPIDO;

}

for(i=0;i<8;i++)

{

SPICLK = LOW;Delay8us();Delay8us();Delay6us();

SPICLK = HIGH;

Data[2]=(Data[2]<<1)|SPIDO;


}

SPICLK = LOW;

SPIData = Data[0]*65536+Data[1]*256+Data[2];

OpenInt();//開中斷

return SPIData;

}


本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅(qū)動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅(qū)動性能的關鍵。

關鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質(zhì)量和效率直接關系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅(qū)動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關鍵字: LED 驅(qū)動電源 開關電源

LED驅(qū)動電源是把電源供應轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅(qū)動電源
關閉