📄 ex10-2.sdi
字号:
000B,,,S_SET BIT P1.0 ;数字钟秒控制位
000B,,,M_SET BIT P1.1 ;分钟控制位
000B,,,H_SET BIT P1.2 ;小时控制位
,,,SECOND EQU 30H
,,,MINUTE EQU 31H
,,,HOUR EQU 32H
,,,TCNT EQU 34H
,,, ORG 00H
0000,80 0C,, SJMP START
,,, ORG 0BH
000B,02 00 91,, LJMP INT_T0
000E,90 01 32,START,START: MOV DPTR,#TABLE
0011,75 32 00,, MOV HOUR,#0 ;初始化
0014,75 31 00,, MOV MINUTE,#0
0017,75 30 00,, MOV SECOND,#0
001A,75 34 00,, MOV TCNT,#0
001D,75 89 01,, MOV TMOD,#01H
0020,75 8C 3C,, MOV TH0,#3CH ;fosc=12MHz,定时50毫秒
0023,75 8A B0,, MOV TL0,#0B0H
0026,75 A8 82,, MOV IE,#82H
0029,D2 8C,, SETB TR0
,,,;****************************************************
,,,;判断是否有控制键按下,是哪一个键按下
002B,12 00 C9,A1,A1: LCALL DISPLAY
002E,30 90 09,, JNB S_SET,S1
0031,30 91 19,, JNB M_SET,S2
0034,30 92 29,, JNB H_SET,S3
0037,02 00 2B,, LJMP A1
003A,12 01 3C,S1, S1: LCALL DELAY ;去抖动
003D,20 90 EB,, JB S_SET,A1
,,,
0040,05 30,, INC SECOND ;秒值加1
0042,E5 30,, MOV A,SECOND
0044,B4 3C 32,, CJNE A,#60,J0 ;判断是否加到60秒
0047,75 30 00,, MOV SECOND,#0
004A,02 00 53,, LJMP K1
004D,12 01 3C,S2, S2: LCALL DELAY
0050,20 91 D8,, JB M_SET,A1
,,,
0053,05 31,K1, K1: INC MINUTE ;分钟值加1
0055,E5 31,, MOV A,MINUTE
0057,B4 3C 27,, CJNE A,#60,J1 ;判断是否加到60分
005A,75 31 00,, MOV MINUTE,#0
005D,02 00 66,, LJMP K2
0060,12 01 3C,S3, S3: LCALL DELAY
0063,20 92 C5,, JB H_SET,A1
,,,
0066,05 32,K2, K2: INC HOUR ;小时值加1
0068,E5 32,, MOV A,HOUR
006A,B4 18 1C,, CJNE A,#24,J2 ;判断是否加到24小时
006D,75 32 00,, MOV HOUR,#0
0070,75 31 00,, MOV MINUTE,#0
0073,75 30 00,, MOV SECOND,#0
0076,02 00 2B,, LJMP A1
,,,;****************************************************
,,,;等待按键抬起
0079,20 90 AF,J0,J0: JB S_SET,A1
007C,12 00 C9,, LCALL DISPLAY
007F,80 F8,, SJMP J0
0081,20 91 A7,J1,J1: JB M_SET,A1
0084,12 00 C9,, LCALL DISPLAY
0087,80 F8,, SJMP J1
0089,20 92 9F,J2,J2: JB H_SET,A1
008C,12 00 C9,, LCALL DISPLAY
008F,80 F8,, SJMP J2
,,,;***********************************************
,,,;定时器中断服务程序,对秒,分钟和小时的计数
0091,75 8C 3C,INT_T0,INT_T0: MOV TH0,#3CH
0094,75 8A B0,, MOV TL0,#0B0H
0097,05 34,, INC TCNT
0099,E5 34,, MOV A,TCNT
009B,B4 14 2A,, CJNE A,#20,RETUNE ;计时1秒
009E,05 30,, INC SECOND
00A0,75 34 00,, MOV TCNT,#0
00A3,E5 30,, MOV A,SECOND
00A5,B4 3C 20,, CJNE A,#60,RETUNE
00A8,05 31,, INC MINUTE
00AA,75 30 00,, MOV SECOND,#0
00AD,E5 31,, MOV A,MINUTE
00AF,B4 3C 16,, CJNE A,#60,RETUNE
00B2,05 32,, INC HOUR
00B4,75 31 00,, MOV MINUTE,#0
00B7,E5 32,, MOV A,HOUR
00B9,B4 18 0C,, CJNE A,#24,RETUNE
00BC,75 32 00,, MOV HOUR,#0
00BF,75 31 00,, MOV MINUTE,#0
00C2,75 30 00,, MOV SECOND,#0
00C5,75 34 00,, MOV TCNT,#0
00C8,32,RETUNE,RETUNE: RETI
,,,;******************************************
,,,;显示控制子程序
00C9,E5 30,DISPLAY,DISPLAY:MOV A,SECOND ;显示秒
00CB,75 F0 0A,, MOV B,#10
00CE,84,, DIV AB
00CF,C2 B6,, CLR P3.6
00D1,93,, MOVC A,@A+DPTR
00D2,F5 80,, MOV P0,A
00D4,12 01 3C,, LCALL DELAY
00D7,D2 B6,, SETB P3.6
00D9,E5 F0,, MOV A,B
00DB,C2 B7,, CLR P3.7
00DD,93,, MOVC A,@A+DPTR
00DE,F5 80,, MOV P0,A
00E0,12 01 3C,, LCALL DELAY
00E3,D2 B7,, SETB P3.7
,,,
00E5,C2 B5,, CLR P3.5
00E7,75 80 40,, MOV P0,#40H ;显示分隔符
00EA,12 01 3C,, LCALL DELAY
00ED,D2 B5,, SETB P3.5
,,,
00EF,E5 31,, MOV A,MINUTE ;显示分钟
00F1,75 F0 0A,, MOV B,#10
00F4,84,, DIV AB
00F5,C2 B3,, CLR P3.3
00F7,93,, MOVC A,@A+DPTR
00F8,F5 80,, MOV P0,A
00FA,12 01 3C,, LCALL DELAY
00FD,D2 B3,, SETB P3.3
00FF,E5 F0,, MOV A,B
0101,C2 B4,, CLR P3.4
0103,93,, MOVC A,@A+DPTR
0104,F5 80,, MOV P0,A
0106,12 01 3C,, LCALL DELAY
0109,D2 B4,, SETB P3.4
,,,
010B,C2 B2,, CLR P3.2
010D,75 80 40,, MOV P0,#40H ;显示分隔符
0110,12 01 3C,, LCALL DELAY
0113,D2 B2,, SETB P3.2
,,,
0115,E5 32,, MOV A,HOUR ;显示小时
0117,75 F0 0A,, MOV B,#10
011A,84,, DIV AB
011B,C2 B0,, CLR P3.0
011D,93,, MOVC A,@A+DPTR
011E,F5 80,, MOV P0,A
0120,12 01 3C,, LCALL DELAY
0123,D2 B0,, SETB P3.0
0125,E5 F0,, MOV A,B
0127,C2 B1,, CLR P3.1
0129,93,, MOVC A,@A+DPTR
012A,F5 80,, MOV P0,A
012C,12 01 3C,, LCALL DELAY
012F,D2 B1,, SETB P3.1
0131,22,, RET
,,,
0132,3F 06 5B 4F,TABLE,TABLE: DB 3FH,06H,5BH,4FH,66H
0137,6D 7D 07 7F,, DB 6DH,7DH,07H,7FH,6FH
013C,7E 0A,DELAY,DELAY: MOV R6,#10
013E,7F FA,D1,D1: MOV R7,#250
0140,DF FE,, DJNZ R7,$
0142,DE FA,, DJNZ R6,D1
0144,22,, RET
,,,
000E,,, END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -