⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex10-2.sdi

📁 《单片机原理实用教程——基于Proteus虚拟仿真》一书的配套光盘
💻 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 + -