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

📄 counter.sdi

📁 多个仿真例子
💻 SDI
字号:
,,,COUNT   EQU     30H     ;计数单元
,,,BUF     EQU     31H     ;显示缓冲区首地址,共2字节
,,,        ORG     0
0000,02 00 30,,        LJMP    START
,,,        ORG     3
0003,02 00 B6,,        LJMP    JS
,,,        ORG     30H
0030,75 81 60,START,START:  MOV     SP,#60H
0033,D2 88,,        SETB    IT0             ;设INT0为边沿中断
0035,D2 A8,,        SETB    EX0             ;允许INT0中断
0037,75 30 00,,        MOV     COUNT,#0        ;计数单元清零
003A,D2 B2,,        SETB    P3.2            ;设置INT0管脚为输入状态
003C,D2 AF,,        SETB    EA              ;开中断
003E,AE 30,LOOP,LOOP:   MOV     R6,COUNT        ;取计数值
0040,12 00 A5,,        LCALL   HTOB            ;将计数值转换为BCD码
0043,8A 31,,        MOV     BUF,R2          ;存转换后的计数值
0045,8B 32,,        MOV     BUF+1,R3
0047,12 00 4C,,        LCALL   DISP
004A,80 F2,,        SJMP    LOOP
,,,;显示程序
,,,;将BUF单元的2字节BCD码送数码管显示
004C,78 31,DISP,DISP:   MOV     R0,#BUF
004E,7A 02,,        MOV     R2,#2           ;共显示2个字节的BCD码
0050,7B 01,,        MOV     R3,#1           ;位码初值
0052,E6,,        MOV     A,@R0
0053,54 0F,,        ANL     A,#0FH
0055,90 00 94,,        MOV     DPTR,#DISP_TAB
0058,93,,        MOVC    A,@A+DPTR
0059,F5 80,,        MOV     P0,A            ;送段码
005B,EB,,        MOV     A,R3
005C,75 A0 02,,        MOV     P2,#2
005F,12 00 CD,,        LCALL   DELAY           ;延时1ms
0062,E6,,        MOV     A,@R0
0063,C4,,        SWAP    A
0064,54 0F,,        ANL     A,#0FH
0066,90 00 94,,        MOV     DPTR,#DISP_TAB
0069,93,,        MOVC    A,@A+DPTR
006A,F5 80,,        MOV     P0,A            ;送段码
006C,75 A0 01,,        MOV     P2,#1
006F,12 00 CD,,        LCALL   DELAY
0072,08,,        INC     R0
0073,E6,,        MOV     A,@R0
0074,54 0F,,        ANL     A,#0FH
0076,90 00 94,,        MOV     DPTR,#DISP_TAB
0079,93,,        MOVC    A,@A+DPTR
007A,F5 80,,        MOV     P0,A            ;送段码
007C,EB,,        MOV     A,R3
007D,75 A0 08,,        MOV     P2,#8
0080,12 00 CD,,        LCALL   DELAY           ;延时1ms
0083,E6,,        MOV     A,@R0
0084,C4,,        SWAP    A
0085,54 0F,,        ANL     A,#0FH
0087,90 00 94,,        MOV     DPTR,#DISP_TAB
008A,93,,        MOVC    A,@A+DPTR
008B,F5 80,,        MOV     P0,A            ;送段码
008D,75 A0 04,,        MOV     P2,#4
0090,12 00 CD,,        LCALL   DELAY
0093,22,,        RET
0094,C0 F9 A4 B0,DISP_TAB,DISP_TAB:DB     0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
009C,80 90 88 83,,        DB      80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH
,,,;这是一个将16进制数转换为BCD码的程序
,,,;待转换的16进制数在R6中,转换完的结果在R2R3中
,,,;使用的寄存器A,,B,R6,R2,R3
00A5,EE,HTOB,HTOB:   MOV     A,R6
00A6,75 F0 64,,        MOV     B,#100
00A9,84,,        DIV     AB
00AA,FA,,        MOV     R2,A
00AB,E5 F0,,        MOV     A,B
00AD,75 F0 0A,,        MOV     B,#10
00B0,84,,        DIV     AB
00B1,C4,,        SWAP    A
00B2,25 F0,,        ADD     A,B
00B4,FB,,        MOV     R3,A
00B5,22,,        RET
,,,;计数程序
,,,;计数值为1字节 存在COUNT单元
00B6,C0 D0,JS,JS:     PUSH    PSW
00B8,C0 E0,,        PUSH    ACC
00BA,C0 83,,        PUSH    DPH
00BC,C0 82,,        PUSH    DPL
00BE,C2 D4,,        CLR     RS1
00C0,D2 D3,,        SETB    RS0     ;选择1区工作寄存器
00C2,05 30,,        INC     COUNT
00C4,D0 82,,        POP     DPL
00C6,D0 83,,        POP     DPH
00C8,D0 E0,,        POP     ACC
00CA,D0 D0,,        POP     PSW
00CC,32,,        RETI
00CD,7E FA,DELAY,DELAY:  MOV     R6,#250
00CF,00,L1,L1:     NOP
00D0,00,,        NOP
00D1,DE FC,,        DJNZ    R6,L1
00D3,22,,        RET
000E,,,        END

⌨️ 快捷键说明

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