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

📄 clock.sdi

📁 多个仿真例子
💻 SDI
字号:
,,,HOUR    EQU     30H     ;小时计数单元
,,,MIN     EQU     31H     ;分钟计数单元
,,,SEC     EQU     32H     ;秒计数单元
,,,COUNT   EQU     33H     ;50ms计数单元
,,,BUF     EQU     38H     ;显示缓冲区首地址,共3字节
,,,        ORG     0
0000,02 00 30,,        LJMP    START
,,,        ORG     0BH
000B,02 00 A0,,        LJMP    TS
,,,        ORG     30H
0030,75 81 60,START,START:  MOV     SP,#60H
0033,75 89 01,,        MOV     TMOD,#01H       ;设T0为方式0
0036,75 8C 3C,,        MOV     TH0,#3CH
0039,75 8A B0,,        MOV     TL0,#0B0H       ;50ms定时初值
003C,D2 B9,,        SETB    PT0             ;设T0为高级中断
003E,D2 A9,,        SETB    ET0             ;允许T0中断
0040,75 33 14,,        MOV     COUNT,#20       ;50ms计数单元赋初值
0043,75 30 00,,        MOV     HOUR,#0         ;小时计数单元清零
0046,75 31 00,,        MOV     MIN,#0          ;分钟计数单元清零
0049,75 32 00,,        MOV     SEC,#0          ;秒计数单元清零
004C,D2 8C,,        SETB    TR0             ;启动计数
004E,C2 AF,LOOP,LOOP:   CLR     EA              ;关中断,避免读数时显示跳动
0050,85 30 38,,        MOV     BUF,HOUR        ;存小时数到显示缓冲区
0053,85 31 39,,        MOV     BUF+1,MIN       ;存分钟数到显示缓冲区
0056,85 32 3A,,        MOV     BUF+2,SEC       ;存秒数到显示缓冲区
0059,D2 AF,,        SETB    EA              ;开中断
005B,12 00 60,,        LCALL   DISP
005E,80 EE,,        SJMP    LOOP
,,,;显示程序
,,,;将BUF单元的2字节BCD码送数码管显示
0060,78 38,DISP,DISP:   MOV     R0,#BUF
0062,7A 03,,        MOV     R2,#3           ;共显示3个字节的BCD码
0064,7B 01,,        MOV     R3,#1           ;位码初值
0066,E6,DISP1,DISP1:  MOV     A,@R0
0067,54 0F,,        ANL     A,#0FH
0069,90 00 8F,,        MOV     DPTR,#DISP_TAB
006C,93,,        MOVC    A,@A+DPTR
006D,54 7F,,        ANL     A,#7FH          ;点亮末尾小数点以便于区分时间
006F,F5 80,,        MOV     P0,A            ;送段码
0071,EB,,        MOV     A,R3
0072,F5 A0,,        MOV     P2,A
0074,23,,        RL      A
0075,FB,,        MOV     R3,A
0076,12 00 E8,,        LCALL   DELAY           ;延时1ms
0079,E6,,        MOV     A,@R0
007A,C4,,        SWAP    A
007B,54 0F,,        ANL     A,#0FH
007D,90 00 8F,,        MOV     DPTR,#DISP_TAB
0080,93,,        MOVC    A,@A+DPTR
0081,F5 80,,        MOV     P0,A            ;送段码
0083,EB,,        MOV     A,R3
0084,F5 A0,,        MOV     P2,A
0086,23,,        RL      A
0087,FB,,        MOV     R3,A
0088,12 00 E8,,        LCALL   DELAY
008B,08,,        INC     R0
008C,DA D8,,        DJNZ    R2,DISP1
008E,22,,        RET
008F,C0 F9 A4 B0,DISP_TAB,DISP_TAB:DB     0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0D8H
0097,80 90 88 83,,        DB      80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
,,,;时钟定时中断服务程序
00A0,C0 D0,TS,TS:     PUSH    PSW
00A2,C0 E0,,        PUSH    ACC
00A4,C0 83,,        PUSH    DPH
00A6,C0 82,,        PUSH    DPL
00A8,C2 8C,,        CLR     TR0
00AA,75 8C 3C,,        MOV     TH0,#3CH
00AD,75 8A B0,,        MOV     TL0,#0B0H
00B0,D2 8C,,        SETB    TR0
00B2,D5 33 2A,,        DJNZ    COUNT,EXIT
00B5,75 33 14,,        MOV     COUNT,#20
00B8,E5 32,,        MOV     A,SEC
00BA,24 01,,        ADD     A,#1            ;秒加1
00BC,D4,,        DA      A               ;调整为BCD码
00BD,F5 32,,        MOV     SEC,A           ;存秒
00BF,B4 60 1D,,        CJNE    A,#60H,EXIT     ;不到60秒则退出
00C2,75 32 00,,        MOV     SEC,#0          ;秒单元清零
00C5,E5 31,,        MOV     A,MIN
00C7,24 01,,        ADD     A,#1            ;分加1
00C9,D4,,        DA      A               ;调整为BCD码
00CA,F5 31,,        MOV     MIN,A           ;存分
00CC,B4 60 10,,        CJNE    A,#60H,EXIT     ;不到60分则退出
00CF,75 31 00,,        MOV     MIN,#0
00D2,E5 30,,        MOV     A,HOUR
00D4,24 01,,        ADD     A,#1            ;小时加1
00D6,D4,,        DA      A               ;调整为BCD码
00D7,F5 30,,        MOV     HOUR,A          ;存小时
00D9,B4 24 03,,        CJNE    A,#24H,EXIT     ;不到24小时则退出
00DC,75 30 00,,        MOV     HOUR,#0
00DF,D0 82,EXIT,EXIT:   POP     DPL
00E1,D0 83,,        POP     DPH
00E3,D0 E0,,        POP     ACC
00E5,D0 D0,,        POP     PSW
00E7,32,,        RETI
00E8,7E FA,DELAY,DELAY:  MOV     R6,#250
00EA,00,L1,L1:     NOP
00EB,00,,        NOP
00EC,DE FC,,        DJNZ    R6,L1
00EE,22,,        RET
000E,,,        END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -