简易电子棋盘程序设计 ORG 0000H AJMP MAIN ORG 000BH AJMP ONEWIN ORG 001BH AJMP RING ORG 0030H ;****************定时器T1 中断子程序 RING: INC R0 CJNE R0,#7FH,RETU SETB P1
2 ;若等待8 秒未按键,则蜂鸣器响 MOV R0,#0 RETU: RETI ;*******************主程序 MAIN: CLR P1
0 ;所有T 触发器复位,所有LED 熄灭 MOV TMOD,#10H MOV TH1,#0 MOV TL1,#0 SETB EA ;中断允许 SETB ET1 ;开定时中断1 SETB ET0 ;开定时中断0 SETB P1
0 ;置位P1
0,T 触发器有效,可以点亮LED MOV DPTR,#7FFFH ;键盘端8255A 初始化 MOV R0,0 ;R0 初始化 MOV A,#90H ;A 口输入模式,B 口输出模式 MOVX @DPTR,A MOV DPTR,#BFFH ;LED 端8255A 初始化 MOV A,#80H ;A、B 口均为输出模式 MOVX @DPTR,A ` SETB TR1 ;开始计时 KEYSCAN:ACALL IFPRESS ;检查是否有按键按下 JZ KEYSCAN ;若无按键按下,返回KEYSCAN 继续等待 ACALL D10MS ;若有按键,延时10ms去抖动处理 ACALL IFPRESS ;再次检查是否有按键 JZ KEYSCAN ;无按键按下,返回KEYSCAN 继续等待 KEY1: MOV R2,#0FEH ;使第0 行为低电平 MOV R5,#00H ;行寄存器清0 KEY2: MOV DPTR,#7FFDH ;扫描行 MOV A,R2 MOVX @DPTR,A MOV D