📄 限电器.asm
字号:
ORG 0000H
SJMP START
SCL BIT P2.4
SDA BIT P2.3
START: MOV R1,#30H
MOV R7,#01H
MOV DPTR,#0FEF9H
QD: MOVX @DPTR,A
JNB P2.0, XIE ;判定P2。0是否为1,为0的时候则进行XIE操作其中XIE为24c02写
DJNZ R7,QD
LCALL DU ;DU为24C02读
MOVX A,@DPTR
MOVX @R1,A
MOV A,@R1
MOV B,A
;//////////////////////////////////////////////////////////////////////////////////////
MOV A,R3 ;+5比较开始
ADDC A,#05H
CJNE A,B,LOOP1 ;不相等则转
SJMP GZ ;相等51工作
LOOP1: JNC BGZ
KK: MOV A,R3 ;KK为 -5的比较
SUBB A,#05H
CJNE A,B,LOOP2
SJMP GZ
LOOP2: JC BGZ
SJMP GZ ;将24C02中的数读出来与0809的数做比较,如果不为0,就控制计电器让51停止工作,也就是传说中的跳砸。
LJMP START
RET
GZ: CLR P1.0 ;51GZ为51工作
LJMP START
RET
BGZ: SETB P1.0
LJMP START
RET
;////////////////////////////////////////////////////////////////////////////////////////////
XIE: LCALL ST24
MOV A,#0A0H
LCALL XIECX
MOV A,#80H
LCALL XIECX
MOV A,#30H
LCALL XIECX
LCALL STOP24
RET
DU: LCALL ST24
MOV A,#0A0H
LCALL XIECX
MOV A,#80H
LCALL XIECX
NOP
LCALL ST24
MOV A, #0A1H
LCALL XIECX
LCALL DUCX
LCALL STOP24
RET
XIECX: NOP
MOV R5,#08H
YYY: CLR SCL
RLC A
MOV SDA,C
SETB SCL
DJNZ R5,YYY
CLR SCL
NOP
SETB SCL
NOP
JB SDA,$
CLR SCL
NOP
RET
DUCX: NOP
MOV R5,#8
ZZZ: CLR SCL
NOP
SETB SCL
NOP
MOV C,SDA
RLC A
DJNZ R5,ZZZ
MOV R3,A
CLR SCL
NOP
SETB SDA
NOP
SETB SCL
NOP
RET
ST24: CLR SCL
NOP
SETB SDA
NOP
SETB SCL
NOP
CLR SDA
NOP
CLR SCL
RET
STOP24: CLR SCL
NOP
CLR SDA
NOP
SETB SCL
NOP
SETB SDA
NOP
CLR SCL
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -