SDA24 EQU P3.7 SCLK24 EQU P3.6 ORG 0000H AJMP MAIN ORG 0030H MAIN:CLR P3.7 ;打开写保护 MOV DPTR,#TAB MOV A,#00H ;读地址 LCALL RD24 CJNE A,#10,TT TT: JNC TT1 AJMP TT2 TT1: MOV A,#00 TT2: MOV 30H,A MOVC A,@A+DPTR CLR P2.6 ;开数码管 MOV P0,A ;送显示 MOV A,30H INC A MOV B,A MOV A,#00H LCALL WT24 AJMP $ TAB: DB 28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H RD24: PUSH ACC ;读24C02子程序。 SETB SDA24 CLR SCLK24 CALL START24 ;启动 MOV A,#0A0H CALL SHIFT8 ;移位 CALL ACK ;响应 POP ACC CALL SHIFT8 CALL ACK CALL START24 MOV A,#0A1H CALL SHIFT8 CALL ACK SETB SDA24 MOV R7,#8 CLR A SETB SDA24 RD000: RL A ;8个位 | SETB SCLK24 MOV C,SDA24 MOV ACC.0,C CLR SCLK24 DJNZ R7,RD000 RET WT24: PUSH ACC;写入24C02程序: SETB SDA24 CLR SCLK24 CALL START24 MOV A,#0A0H CALL SHIFT8 CALL ACK POP ACC CALL SHIFT8 CALL ACK MOV A,B CALL SHIFT8 CALL ACK CALL STOP CALL DELAY2 RET START24:CLR SDA24;开始条件 SETB SDA24 SETB SCLK24 CLR SDA24 CLR SCLK24 RET STOP: CLR SDA24;停止条件 SETB SCLK24 SETB SDA24 RET ACK: SETB SCLK24;应答信号 CLR SCLK24 RET SHIFT8: MOV R7,#8;读、写数据 SH01: RLC A MOV SDA24,C SETB SCLK24 CLR SCLK24 DJNZ R7,SH01 RET DELAY2: NOP END |