📄 ex5-4.sdi
字号:
,,, ORG 0000H ;复位入口
0000,02 00 1E,, LJMP MAIN ;转到主程序
,,, ORG 000BH ;T0中断入口
000B,02 00 3E,, LJMP TT0 ;转到T0中断服务程序
,,, ORG 0030 ;主程序入口
001E,75 81 60,MAIN,MAIN: MOV SP,#60H ;设置堆栈指针
0021,75 20 0A,, MOV 20H,#0AH ;设置中断次数
0024,75 30 00,, MOV 30H,#00H ;时、分、秒单元清0
0027,75 31 00,, MOV 31H,#00H
002A,75 32 00,, MOV 32H,#00H
002D,75 89 01,, MOV TMOD,#01H ;设置T0工作方式
0030,75 8C 3C,, MOV TH0,#3CH ;装入T0初值
0033,75 8A B0,, MOV TL0,#0B0H
0036,D2 8C,, SETB TR0 ;启动T0
0038,D2 AF,, SETB EA ;开中断
003A,D2 A9,, SETB ET0 ;允许T0中断
003C,80 FE,, SJMP $ ;等待中断
003E,C0 D0,TT0,TT0: PUSH PSW ;保护现场
0040,C0 E0,, PUSH ACC
0042,75 8C 3C,, MOV TH0,#3CH ;重装T0初值
0045,75 8A B0,, MOV TL0,#0B0H
0048,D5 20 33,, DJNZ 20H,RT ;1秒定时未到,返回
004B,75 20 0A,, MOV 20H,#0AH ;重置中断次数
004E,74 01,, MOV A,#01H
0050,25 32,, ADD A,32H ;秒单元加1
0052,D4,, DA A ;十进制调整
0053,F5 32,, MOV 32H,A ;转换为BCD码
0055,B2 90,, CPL P1.0
0057,B4 60 24,, CJNE A,#60H,RT ;未到60秒,返回
005A,75 32 00,, MOV 32H,#00H ;到60秒,秒单元清0
005D,74 01,, MOV A,#01H
005F,25 31,, ADD A,31H ;分单元加1
0061,D4,, DA A ;十进制调整
0062,F5 31,, MOV 31H,A ;转换为BCD码
0064,B2 92,, CPL P1.2
0066,B4 60 15,, CJNE A,#60H,RT ;未到60分,返回
0069,75 31 00,, MOV 31H,#00H ;到60分,分单元清0
006C,74 01,, MOV A,#01H
006E,25 30,, ADD A,30H ;时单元加1
0070,D4,, DA A ;十进制调整
0071,F5 30,, MOV 30H,A ;转换为BCD码
0073,B2 94,, CPL P1.4
0075,B4 24 06,, CJNE A,#24H,RT ;未到24小时,返回
0078,75 30 00,, MOV 30H,#00H ;到24小时,时单元清0
007B,75 90 00,, MOV P1,#00H
007E,D0 E0,RT,RT: POP ACC ;恢复现场
0080,D0 D0,, POP PSW
0082,32,, RETI ;中断返回
000E,,, END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -