铜陵学院毕业设计
RL A MOV R2,A AJMP K1
MOV P1,#0FH MOV A,P1 XRL A,#0FH RET
KS:
DELAY:
MOV R4,200
D6: MOV R5,249 DJNZ R5,$
READ: MOV MACHINEAD,#10100000B AJMP START1 ;程序开始 START1:
MOV P2,#0FEH
MOV SP,#60H
MOV R0,#40H
MAIN1: LCALL KEY JNZ M21 MOV R6,#6
MOV R2,#0
MOV RAMADDRESS,R0 ;从EEPROM读出数据存到单片机RAM中 INC R0
MOV I2CADDRESS,R2 ;读取I2C中的地址 LCALL I2CREAD INC R2 DJNZ R6,M11
M11:
DJNZ R4,D1 RET
LJMP MAINSEND M21: CJNE A,#1,M31 MOV R6,#6 MOV R2,#6
- 31 -
陈洋德:基于51单片机的自学习型遥控器设计与实现
M41: MOV RAMADDRESS,R0 ;从EEPROM读出的数据存储到单片机的RAM单元
INC R0
MOV I2CADDRESS,R2 ;读取I2C中的地址 LCALL I2CREAD INC R2 DJNZ R6,M41
M31: LJMP MAINSEND
;************************************************** ; 读串行E2PROM子程序I2CREAD
;************************************************** I2CREAD: SETB RS0 ;选择寄存器3组 SETB RS1 ;以保护0、1、2组内容 MOV R1,RAMADDRESS SETB SCL SETB SDA
CLR SDA ;发开始信号 MOV A,#MACHINEAD ;送器件地址
CALL BITS ;调发送单字节子程序 MOV A,I2CADDRESS ;送片内字节地址 CALL BITS SETB SCL SETB SDA
CLR SDA ;再发开始信号 MOV A, #MACHINEAD
SETB ACC.0 ;发读命令 CALL BITS CALL BITR MOV @R1,A CLR SDA CALL DELAYI2C SETB SCL CALL DELAYI2C
SETB SDA ;送停止信号 RET
;**************************************************
- 32 -
铜陵学院毕业设计
; 接受单字节子程序
;************************************************** BITR: MOV R0,#08H NOOP: SETB SCL CALL DELAYI2C MOV C,SDA RLC A CLR SCL CALL DELAYI2C DJNZ R0,NOOP SETOK: LCALL DELAYI2C SETB SCL CALL DELAYI2C CLR SCL CALL DELAYI2C
SETB SDA RET MAINSEND:
CLR P2.5 LCALL D912MS SETB P2.5 LCALL D45MS MOV R0,#40H MOV R1,#26 M22:
MOV A,@R0 MOV R3,#08H M12:
CLR C RLC A DJNZ R1,M32 N1:
MOV A,44H MOV R3,#08H N2:
;应答毕,SDA置1 - 33 -
陈洋德:基于51单片机的自学习型遥控器设计与实现
CLR C RLC A JC SEND12 LCALL SEND0 N22:
DJNZ R3,N2 MOV A,45H MOV R3,#08H N3:
CLR C RLC A JC SEND13 LCALL SEND0 N33:
DJNZ R3,N3 LJMP HIGH23MS M32:
JC SEND11 LCALL SEND0 M42:
DJNZ R3,M12 INC R0 LJMP M22
HIGH23MS:
SETB P2.5 MOV R7,#100 D7: MOV R6,#116
NOP DJNZ R6,$ DJNZ R2,D7 CLR P2.5 LCALL D912MS SETB P2.5 LCALL D45MS
- 34 -
铜陵学院毕业设计
LJMP SELECT D912MS:
MOV R7,#60 D8:
MOV R6,#74 NOP DJNZ R6,$ DJNZ R2,D8 RET D45MS:
MOV R7,#50 D9:
MOV R6,#42 NOP DJNZ R6,$ DJNZ R2,D9 RET
D0565MS:
MOV R7,#2 D10:
MOV R6,#138 NOP DJNZ R6,$ DJNZ R2,D10 RET
D1685MS:
MOV R7,#5 D11:
MOV R6,#166
- 35 -
陈洋德:基于51单片机的自学习型遥控器设计与实现
NOP DJNZ R6,$ DJNZ R7,D11 RET SEND11:
CLR P2.5 LCALL D0565MS SETB P2.5 LCALL D1685MS LJMP M42 SEND12:
CLR P2.5 LCALL D0565MS SETB P2.5 LCALL D1685MS LJMP N22 SEND13:
CLR P2.5 LCALL D0565MS SETB P2.5 LCALL D1685MS LJMP N33 SEND0:
CLR P2.5 LCALL D0565MS SETB P2.5 LCALL D0565MS RET END
- 36 -