ORG 00H ;复位后主程序入口
JMP START ;转移至主程序
ORG 0BH ;中断服务程序入口
JMP TIMER ,转移至中断
START: MOV TMOD,#01H ;选择定时器工作方式 1
MOV TH0,#0BDH ;定时器 0 高 8 位给初始值
MOV TL0,#0C0H ;定时器 0 给低八位初始值
MOV IE,#82H
MOV 20H,#10 ;地址位 20H 的寄存器赋值
MOV 21H,#10 ;同上
MOV R7,#16 ;同上
CLR TR0
A4: MOV P2,#19H
CALL DELAY ;调用延时子程序
ANL P2,#00H ;与 p2 口数据进行与运算
MOV P2,#29H
CALL DELAY ;调用延时子程序
ORL P2,#00H
JB P1.0,A4
SETB TR0 ;打开定时器 0
A1: MOV A,20H
MOV DPTR,#TABLE
MOVC A,@A+DPTR
ADD A,#10H
MOV P2,A
CALL DELAY
ANL P2,#00H
MOV A,21H
MOV DPTR,#TABLE
MOVC A,@A+DPTR
ADD A,#20H
MOV P2,A
CALL DELAY
ANL P2,#00H
MOV A,#01H
CJNE A,21H,A1 ;判断是否到 10
MOV A,#01
CJNE A,20H,A1 ;判断是否到 10
JMP START ;跳入主程序
TIMER: DJNZ R7,A2
MOV TH0,#0BDH
MOV TL0,#0C0H
MOV R7,#16
DJNZ 20H,A2