〖說明〗24LC65 I2C EEPROM字節(jié)讀寫驅(qū)動(dòng)程序,芯片A0-A1-A2要接VCC。 現(xiàn)缺頁寫、頁讀,和CRC校驗(yàn)程序。以下程序經(jīng)過50臺(tái)驗(yàn)證,批量的效果有待考 察。 為了安全起見,程序中很多nop是冗余的,希望讀者能進(jìn)一步精簡,但必須經(jīng)過驗(yàn) 證。
上傳時(shí)間: 2016-01-24
上傳用戶:lixinxiang
123456uyygbb溫度傳感器ds1820 的匯編程序 晶振:12M TEMPER_L EQU 36H TEMPER_H EQU 35H TEMPER_NUM EQU 60H FLAG1 BIT 00H DQ BIT P3.3 AAA:MOV SP,#70H LCALL GET_TEMPER LCALL TEMPER_COV LJMP AAA nop ------------------讀出轉(zhuǎn)換后的溫度值 GET_TEMPER: SETB DQ 定時(shí)入口 BCD:LCALL INIT_1820 JB FLAG1,S22 LJMP BCD 若DS18B20不存在則返回 S22:LCALL DELAY1 MOV A,#0CCH 跳過ROM匹配------0CC LCALL WRITE_1820 MOV A,#44H 發(fā)出溫度轉(zhuǎn)換命令 LCALL WRITE_1820
標(biāo)簽: EQU TEMPER_NUM TEMPER_L TEMPER_H
上傳時(shí)間: 2013-12-26
上傳用戶:ainimao
RISC狀態(tài)機(jī)由三個(gè)功能單元構(gòu)成:處理器、控制器和存儲(chǔ)器。 RISC狀態(tài)機(jī)經(jīng)優(yōu)化可實(shí)現(xiàn)高效的流水線操作。 RISC 中的數(shù)據(jù)線為16位。 在數(shù)據(jù)存儲(chǔ)器中的0到15的位置放置16個(gè)隨機(jī)數(shù),求16個(gè)數(shù)的和,放在數(shù)據(jù)存儲(chǔ)器的16、17的位置,高位在前 對(duì)這16個(gè)數(shù)進(jìn)行排序,從大到小放置在18到33的位置 求出前16個(gè)數(shù)的平均數(shù),放在34的位置 基本指令有nop, ADD, SUB, AND, RD, WR, BR,BC。 因?yàn)椴捎?6位指令,有擴(kuò)充的余地。
標(biāo)簽: RISC 狀態(tài) 處理器 控制器
上傳時(shí)間: 2013-11-29
上傳用戶:縹緲
本模擬I2C軟件包包含了I2C操作的底層子程序,使用前要定義 好SCL和SDA。在標(biāo)準(zhǔn)8051模式(12 Clock)下,對(duì)主頻要求是不高于12MHz(即1個(gè) 機(jī)器周期1us) 若Fosc>12MHz則要增加相應(yīng)的nop指令數(shù)。(總線時(shí)序符合I2C標(biāo) 準(zhǔn)模式,100Kbit/S)。
上傳時(shí)間: 2013-12-08
上傳用戶:ruixue198909
unsigned char WriteInData(unsigned char Address,unsigned char DataByte) { unsigned char mark WREN() Write_Byte(0x02) Write_Byte(Address) Write_Byte(DataByte) //nop() X25_cs=1 lag(3000) mark=Read_Byte(Address) if(DataByte==mark) SystemError=0 if(mark!=DataByte) SystemError=1 // return(SystemError) } //雖然是一讀一寫,但是其中暗藏殺機(jī),讓人很難調(diào)通。一定注意接口的位置!呵呵!不信你就按普通的SPI程序方法寫寫試試!
標(biāo)簽: unsigned char WriteInData DataByte
上傳時(shí)間: 2016-12-14
上傳用戶:invtnewer
虛擬I2C總線匯編程序軟件包 I2C 軟件包的底層子程序,使用前要定義好SCL和SDA。在標(biāo)準(zhǔn)80C51模式(12 Clock)下,對(duì)主頻要求是不高于12MHz(1個(gè)機(jī)器周期1us)若Fosc>12MHz,則要增加相應(yīng)的nop指令數(shù)。在使用本軟件包時(shí),請(qǐng)?jiān)谀愕某绦虻奈次布尤?INCLUDE (VI2C_ASM.ASM)即可。
上傳時(shí)間: 2014-12-01
上傳用戶:yimoney
MCS-51單片機(jī)模擬I2C軟件包本模擬I2C軟件包包含了I2C操作的底層子程序,使用前要定義 好SCL和SDA。在標(biāo)準(zhǔn)8051模式(12 Clock)下,對(duì)主頻要求是不高于12MHz(即1個(gè) 機(jī)器周期1us) 若Fosc>12MHz則要增加相應(yīng)的nop指令數(shù)。(總線時(shí)序符合I2C標(biāo) 準(zhǔn)模式,100Kbit/S)
上傳時(shí)間: 2014-11-04
上傳用戶:wang5829
程序所在目錄:ex6_AD 板上引出的兩路A/D 轉(zhuǎn)換對(duì)應(yīng)DSP 的A/D 模塊分別是通道0 和通道8,輸入電壓0-5V 。 本開發(fā)板使用DA 的輸出作為AD 的輸入,因此需將5J2 的1-2,3-4 分別用短路子短接。 打開CC2000,進(jìn)行如下操作: 1.Project->Open ,打開該目錄中的工程文件。 2.Project->Rebuild ALL,編譯鏈接 3.File->Load Program 4.光標(biāo)移到Que()函數(shù)的asm(" nop ")所處的行。 5. Debug->Toggle breakpoint (快捷鍵F9) 6. Debug->Animate (快捷鍵F12) 7. View->Watch Window ,在出現(xiàn)的watch 窗體中點(diǎn)右鍵分別插入變量AD_SIG0,AD_SIG8,則可看到所采到的這兩路信號(hào)的電壓值。 如果結(jié)果稍微不精確,請(qǐng)不要在意,這可能是因?yàn)闆]有采用專用基準(zhǔn)源,以及信號(hào)不穩(wěn)定的緣故。另外,TMS320LF2407 的內(nèi)置A/D 的精度并不是很高。在前面兩種情況已得到保證的情況下,變化幅度仍較大。( ^_^ 呵呵,外面好一點(diǎn)的一片A/D 芯片就不低于100 塊,所以想想能湊合著用也就可以了。)
上傳時(shí)間: 2013-12-17
上傳用戶:refent
/**************************************************************** 外部晶振8M PA0~3:四位數(shù)碼管的位選 PB0~7:數(shù)碼管的8位段選 外部中斷0用于計(jì)數(shù) 定時(shí)器0溢出中斷的定時(shí)為1ms 說明 :檢測到水流較小時(shí),繼電器延時(shí)1秒關(guān)閉 ******************************************************************/ #include<iom16v.h> #include<macros.h> #define uchar unsigned char #define uint unsigned int char led_7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //數(shù)碼管段選 char position[4]={0xfe,0xfd,0xfb,0xf7};//數(shù)碼管位選 uint sumnum=0; //用于記錄1000ms內(nèi)進(jìn)入中斷的次數(shù) uint time=0; //記錄進(jìn)入比較定時(shí)器0的次數(shù) uint num=0; //記錄1ms內(nèi)進(jìn)入中斷的次數(shù) uint count=0; //進(jìn)入外部中斷0的次數(shù) uchar flag; uint sumnum1; //記錄100ms內(nèi)的數(shù)目 /***************************函數(shù)聲明***************************/ void delay(); void display(uint m ); void init(); void init_0(); void init_2(); void _delay_us(uint l) { unsigned int i; for(i=0;i<l;i++) { asm("nop"); } } /**************************主函數(shù)***********************************/ void main() { init(); init_0(); init_2(); while(sumnum<5) { PORTD=0XBF; segdisplay(sumnum1); } while(1) { segdisplay(sumnum1); } } /*************************掃描數(shù)碼管時(shí)的延時(shí)函數(shù)*********************/ void delay() { uchar i,j; for(i=6;i>0;i--) for(j=225;j>0;j--); } /************************數(shù)碼管顯示函數(shù)*****************************/ void segdisplay( int temp) { int seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; int temp1,temp2,temp3,temp4; temp1=temp/1000; temp2=(temp/100)%10; temp3=(temp/10)%10; temp4=temp%10; DDRB=0xff; DDRA|=0x0f; PORTA=~BIT(3); PORTB=seg[temp1]; _delay_us(100); PORTA=~BIT(2); PORTB=seg[temp2]; _delay_us(100); PORTA=~BIT(1); PORTB=seg[temp3]; _delay_us(100); PORTA=~BIT(0); PORTB=seg[temp4]; _delay_us(100); } /***********************管腳初始化函數(shù)*********************/ void init() { DDRD|=0X40; //PD4 設(shè)置為輸出 PORTD=0XBF; DDRA=0XFF; DDRB=0XFF; PORTA=0XFF; PORTB=0XFF; } /***********************外部中斷0初始化*********************/ void init_0() { MCUCR=0X02; //INT0為下降沿觸發(fā) GICR=0X40; //使能INT0中斷 SREG=0X80; //使能總中斷 } /**********************定時(shí)器2初始化***********************/ void init_2() { TCCR0=0x03; // 內(nèi)部時(shí)鐘,64 分頻(8M/64=125KHz) TCNT0=0x83; //裝初值 TIMSK=0x01; // 允許 T/C0溢出中斷中斷 } /***********************外部中斷0子函數(shù)********************/ #pragma interrupt_handler int0_isr:2 void int0_isr(void) { count++; } /*********************定時(shí)計(jì)數(shù)器0溢出中斷子函數(shù)*****************/ #pragma interrupt_handler int0_over:10 void int0_over(void) { TCNT0=0x83; //重裝初值 if((time%100) == 0) sumnum1 = num; if(time == 1000) { sumnum=num; if(sumnum<10) { if((flag==1)&&(sumnum<10)) { PORTD=0XFF; flag=0; } flag++; } else PORTD=0XBF; num=0; time=0; } num+=count; count=0; ++time; }
標(biāo)簽: C語言
上傳時(shí)間: 2016-03-09
上傳用戶:彥 yan
蟲蟲下載站版權(quán)所有 京ICP備2021023401號(hào)-1