📄 register.asm
字号:
ORG 0000H
AJMP REGISTER
ORG 0030H
;*****************************************************************
;报到子程序
REGISTER: MOV A,50H ;50H存放地址命令标志
CJNE A,#255,REG_2 ;Ra=255?不等则跳转
CLR P2.3 ;报到状态灯亮,允许报到
SETB EA ;开中断
REG_1: MOV C,P2.3 ;p2.3是报到状态显示位
JC REG_3 ;(P2.3=1)报到取消则转移
MOV C,P1.0 ;扫描P1.0,P1.0是S1按键
LCALL DELAY_10ms ;延时10ms消抖
ORL C,P1.0 ;再读P1.0状态,看两次结果是否都为0
JC REG_1 ;(P1.0=1)S1键没有按下则转移重新扫描
CLR EA ;关中断
;******************************************************
;需要修改的地址Ra和命令Ri
MOV R2,#00H ;R2存放本机地址,需要修改
MOV R3,#01H ;R3存放命令(01代表报到).需要修改
;******************************************************
; LCALL SEND ;调发送子程序
CLR P2.4 ;已报到灯亮
AJMP REG_END ;返回
REG_2: CJNE A,#254,REG_ERR ;Ra=254?不等则跳转
SETB P2.3 ;取消报到状态
SETB P2.4
REG_3: CLR EA ;开中断
AJMP REG_END ;返回
REG_ERR: MOV P2,#00H ;出错,灯全亮
REG_END: RET
;***********************************************************************
;延时子程序
DELAY_10ms: MOV R7,#32
DEL1: MOV R6,#142 ;因为晶振为11.0592MHZ,所以t=12/(11.0592×1000000)
NOP
DEL2: DJNZ R6,DEL2 ;142×2t+2t=286t
DJNZ R7,DEL1 ;(286t+2t)×32+t=10.001ms
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -