;說明: ;入口條件:數(shù)據(jù)放在ADAT_I2C中,頁面放在APAG_IC2,字節(jié)地址放在AADR_I2C,如準備向AT24CXX第一頁的字節(jié)地址03H中寫入值0FH,則置APAG_IC2=01H,AADR_I2C=03H,ADAT_I2C=0FH。 ;出口信息:讀出的數(shù)據(jù)在累加器A中。 ;影響資源:PSW、A、R7 堆棧需求: 6字節(jié) ;ASLK EQU P3.3 ;AT24CXX卡的SLK ;ASDA EQU P3.4 ;AT24CXX卡的SDA ASLK EQU P1.4 ;AT24CXX芯片的SLK ASDA EQU P1.5 ;AT24CXX芯片的SDA AADR_I2C EQU 30H ; AT24CXX的字節(jié)地址 ADAT_I2C EQU 31H ;讀出、寫入的地址 APAG_IC2 EQU 32H ; AT24CXX的頁面 AWRTBYTE: ;向AT24C01寫入一個字節(jié)---寫串行E2PRAM NOP LCALL ASTABIT ;初始化 MOV A,APAG_IC2 ANL A,#0FH RL A ADD A,#0A0H LCALL AWRTBIT ;送出寫控制字 MOV A,AADR_I2C LCALL AWRTBIT ;送出地址 MOV A,ADAT_I2C LCALL AWRTBIT ;寫入數(shù)據(jù) LCALL ASTPBIT ;停止 LCALL ADELAY SETB ASDA RET AREADBYTE: ;從24C01讀入一個字節(jié)---讀串行E2PRAM NOP LCALL ASTABIT ;初始化 MOV A,APAG_IC2 ANL A,#0FH RL A ADD A,#0A0H LCALL AWRTBIT ;送出寫控制字 MOV A,AADR_I2C LCALL AWRTBIT ;送出地址 LCALL ASTABIT ;第二次初始化 MOV A,#0A1H LCALL AWRTBIT ;送出讀控制字 LCALL AREADBIT ;讀出數(shù)據(jù) SETB ASDA RET ASTABIT: NOP SETB ASLK SETB ASDA LCALL ADELAY CLR ASDA LCALL ADELAY SETB ASDA RET AWRTBIT: NOP MOV R7,#08H AWRTLOP: NOP CLR ASLK NOP RLC A MOV ASDA,C NOP SETB ASLK NOP DJNZ R7,AWRTLOP CLR ASLK LCALL ADELAY SETB ASLK LCALL ADELAY CLR ASLK LCALL ADELAY SETB ASDA RET AREADBIT: NOP SETB ASDA NOP MOV R7,#08H AREADLP: NOP SETB ASLK NOP MOV C,ASDA RLC A NOP CLR ASLK NOP DJNZ R7,AREADLP LCALL ADELAY RET ASTPBIT: NOP CLR ASDA LCALL ADELAY SETB ASLK LCALL ADELAY SETB ASDA LCALL ADELAY1MS RET ADELAY1MS: MOV R7,#0FFH DJNZ R7,$ MOV R7,#0FFH DJNZ R7,$ MOV R7,#0FFH DJNZ R7,$ RET ADELAY: MOV R7,#0FH DJNZ R7,$ RET |
|