📄 floor.asm
字号:
ORG 0000H
AJMP FLOOR
ORG 0030H
;*****************************************************************
;报到子程序
FLOOR: MOV A,50H ;50H存放地址命令标志
CJNE A,#255,FLOOR_2 ;Ra=255?不等则跳转
CLR P2.0 ;报到状态灯亮,允许报到
SETB EA ;开中断
FLOOR_1: MOV C,P2.0 ;p2.0是发言状态显示位
JC FLOOR_3 ;(P2.0=1)发言取消则转移
MOV C,P1.1 ;扫描P1.1,P1.1是S2按键
LCALL DELAY_10ms ;延时10ms消抖
ORL C,P1.1 ;再读P1.1状态,看两次结果是否都为0
JC FLOOR_1 ;(P1.1=1)S2键没有按下则转移重新扫描
CLR EA ;关中断
;******************************************************
;需要修改的地址Ra和命令Ri
MOV R2,#00H ;R2存放本机地址,需要修改
MOV R3,#02H ;R3存放命令(02代表发言申请).需要修改
;******************************************************
LCALL SEND ;调发送子程序
CLR P2.1 ;已报到灯亮
AJMP FLOOR_END ;返回
FLOOR_2: CJNE A,#254,FLOOR_ERR ;Ra=254?不等则跳转
SETB P2.0 ;取消报到状态
SETB P2.1
SETB P2.2
FLOOR_3: CLR EA ;关中断
AJMP FLOOR_END ;返回
FLOOR_ERR: MOV P2,#00H ;出错,灯全亮
FLOOR_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 + -