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

📄 ad0808.sdi

📁 电子时钟的单片机设计
💻 SDI
字号:
,,,zb      equ     50h
,,,        org     0000h
0000,02 00 30,,        ljmp    main
,,,        org     0003h
0003,02 00 B3,,        ljmp    int00
,,,        org     000bh
000B,02 00 B9,,        ljmp    tr00
,,,
,,,        org     0030h
0030,75 90 FF,main,main:   mov     p1,#0ffh
0033,75 2A 00,,        mov     2Ah,#00h        ;2Ah设为标志位
0036,75 20 01,,        mov     20h,#01h        ;显示最高位缓冲
0039,75 21 02,,        mov     21h,#02h
003C,75 22 03,,        mov     22h,#03h
003F,75 23 04,,        mov     23h,#04h
0042,75 24 05,,        mov     24h,#05h
0045,75 25 06,,        mov     25h,#06h
0048,75 26 07,,        mov     26h,#07h
004B,75 27 08,,        mov     27h,#08h        ;显示最地位缓冲
004E,D2 B5,,        setb    p3.5
0050,D2 88,,        setb    it0             ;外部中断0为边沿触发方式
0052,D2 A8,,        setb    ex0             ;允许外部中断0
0054,75 89 00,,        mov     tmod,#00h       ;定时方式0
0057,75 8A 09,,        mov     tl0,#09h        ;T0置初值
005A,75 8C F8,,        mov     th0,#0f8h
005D,D2 8C,,        setb    tr0             ;启动T0
005F,D2 A9,,        setb    et0             ;允许T0中断
0061,D2 AF,,        setb  ea                ;允许中断
0063,75 3A FF,,        mov     3ah,#0ffh
0066,12 01 4D,,        lcall   dirv
,,,;-------------------------;
,,,;         读键            ;
,,,;-------------------------;
0069,,kl0,kl0:
0069,12 01 4D,,        lcall dirv
,,,
006C,7B 00,,        mov   r3,#00h
006E,AA 3A,,        mov   r2,3ah
0070,12 00 C2,,        lcall lh                ;量化(转换成um)
0073,78 32,,        mov   r0,#32h           ;被解压BCD码高位存32h
0075,79 23,,        mov   r1,#23h           ;解压后BCD码高位存20h
0077,7A 35,,        mov   r2,#35h           ;被解压BCD码最低位:r2-1
0079,12 00 DE,,        lcall bcdjy             ;BCD码解压缩(5字节)
,,,
,,,;       jb    zb,kl0
,,,
007C,C0 24,,        push  24h
007E,C0 1F,,        push  1fh
0080,C0 28,,        push  28h
,,,
0082,7B 00,,        mov   r3,#00h
0084,AA 3A,,        mov   r2,3ah
0086,12 00 C2,,        lcall lh                ;量化(转换成um)
0089,78 32,,        mov   r0,#32h           ;被解压BCD码高位存32h
008B,79 1F,,        mov   r1,#1fh           ;解压后BCD码高位存20h
008D,7A 35,,        mov   r2,#35h           ;被解压BCD码最低位:r2-1
008F,12 00 DE,,        lcall bcdjy             ;BCD码解压缩(5字节)
,,,
0092,D0 28,,        pop   28h
0094,D0 1F,,        pop   1fh
0096,D0 24,,        pop   24h
,,,
0098,E5 20,,        mov   a,20h             ;最高位为加小数点
009A,24 0A,,        add   a,#0ah
009C,F5 20,,        mov   20h,a
009E,E5 24,,        mov   a,24h             ;最高位加小数点
00A0,24 0A,,        add   a,#0ah
00A2,F5 24,,        mov   24h,a
00A4,12 01 4D,,        lcall dirv
,,,
00A7,C2 B5,,        clr   p3.5              ;选通0808
00A9,F0,,        movx  @dptr,a           ;启动AD转换
00AA,D2 AF,,        setb  ea                ;允许中断
00AC,D2 A8,,        setb    ex0             ;允许外部中断0
00AE,D2 50,,        setb  zb
00B0,02 00 69,,        ljmp  kl0               ;无键按下继续
,,,;---------------------;
,,,;     外部中断0       ;
,,,;---------------------;
00B3,,int00,int00:
00B3,E0,,       movx   a,@dptr
00B4,F5 3A,,       mov    3ah,a
,,,  ;     setb   p3.5
00B6,C2 50,,       clr    zb
00B8,32,,       reti
,,,;---------------------;
,,,;     定时中断0       ;
,,,;---------------------;
00B9,,tr00,tr00:
00B9,75 8A FF,,       mov    tl0,#0ffh ;T0置初值
00BC,75 8C F9,,       mov    th0,#0f9h
00BF,B2 B4,,       cpl    p3.4      ;产生0808时钟
00C1,32,,       reti
,,,;---------------------;
,,,;     量化(转换成um) ;
,,,;---------------------;
00C2,12 00 EF,lh,lh:     lcall B16BCD            ;二进制到BCD码(双字节)
00C5,8E 30,,        mov   30h,r6            ;被乘数十万、万位
00C7,8D 31,,        mov   31h,r5            ;被乘数干位、百位
00C9,8C 32,,        mov   32h,r4            ;被乘数十位、个位
00CB,75 40 01,,        mov   40h,#01h          ;乘数百位、十位
00CE,75 41 95,,        mov   41h,#95h          ;乘数个位、小数点后第一位(2.443um)
00D1,75 42 31,,        mov   42h,#31h          ;乘数小数点后第二位、小数点后第三位
00D4,78 30,,        mov   r0,#30h           ;被乘数入口指针
00D6,79 40,,        mov   r1,#40h           ;乘数入口指针
00D8,7B 03,,        mov   r3,#03h           ;参加乘法运算的压缩的BCD码位数
00DA,12 01 0B,,        lcall CMUL              ;无符号压缩BCD码乘法(CMUL)(积的小数位舍去送显示)
00DD,22,,        ret
,,,;---------------------------------------;
,,,;     @r0中BCD码解压缩到@r1(r2-r1字节);
,,,;---------------------------------------;
,,,
00DE,E6,bcdjy,bcdjy:  mov   a,@r0             ;分解一字节高位
00DF,54 F0,,        anl   a,#0f0h
00E1,C4,,        swap  a
00E2,F7,,        mov   @r1,a
00E3,09,,        inc   r1
00E4,E6,,        mov   a,@r0             ;分解一字节低位
00E5,54 0F,,        anl   a,#0fh
00E7,F7,,        mov   @r1,a
00E8,09,,        inc   r1
00E9,08,,        inc   r0
00EA,E8,,        mov   a,r0
00EB,6A,,        xrl   a,r2
00EC,70 F0,,        jnz   bcdjy
00EE,22,,        ret
,,,;-------------------------------;
,,,;     二进制到BCD码(双字节)   ;
,,,;-------------------------------;
,,,;    (1)入口,R3R2,(16位无符号二进制整数).
,,,;    (2)出口:R6(万位)、R5(干位、百位)、R4(十位、个位)存放5位BCD码。
,,,;2.程序清单
,,,
00EF,,B16BCD,B16BCD:
00EF,E4,,        CLR  A          ;BCD码寄存器清零
00F0,FC,,        MOV  R4,A
00F1,FD,,        MOV  R5,A
00F2,FE,,        MOV  R6,A
00F3,7F 10,,        MOV  R7,#10H    ;设循环指针
00F5,C3,LP0,LP0:    CLR  C          ;左移一位,移入c
00F6,EA,,        MOV  A,R2
00F7,33,,        RLC  A
00F8,FA,,        MOV  R2,A
00F9,EB,,        MOV  A,R3
00FA,33,,        RLC  A
00FB,FB,,        MOV  R3,A
00FC,EC,,        MOV  A,R4       ;实现(…)X2十ai运算
,,,
00FD,3C,,        ADDC A,R4
00FE,D4,,        DA   A
00FF,FC,,        MOV  R4,A
0100,ED,,        MOV  A,R5
0101,3D,,        ADDC A,R5
0102,D4,,        DA   A
0103,FD,,        MOV  R5,A
0104,EE,,        MOV  A,R6
0105,3E,,        ADDC A,R6
0106,D4,,        DA   A
0107,FE,,        MOV  R6,A
0108,DF EB,,        DJNZ R7,LP0
010A,22,,        RET
,,,;-------------------------------------;
,,,;     无符号压缩BCD码乘法子程序(CMUL) ;
,,,;-------------------------------------;
,,,
,,,        ;功能:将(R0)指向的n字节压缩的BCD码乘以(R1)指向的n
,,,        ;字节压缩的BCD码。
,,,        ;入口:十进制被乘数存放在addrl—addr+n—1单元,高位在前。
,,,        ;十进制乘数存放在addr2—acldr2+n—1单元,高位在前。
,,,        ;(R0):addrl,(R1)=addr2,(R3)=n
,,,        ;出口:积存放在addr-addrl+2n—1单元中,(R0)=addrl。
,,,        ;使用寄存器:A,R0,R1,n2,R3,R6,R7及标志cy0
,,,        ;例如:(R0)=20;(20)=01;(21)=25;(R1)=40;(40)=00;
,,,        ;(41)=25;(R3)=02
,,,        ;执行后得:(R0)=20;(20)=00;(21)=00;(22)=31; (23)=25
,,,        ;程序清单:
010B,EB,CMUL,CMUL:   MOV    A, R3
010C,FE,,        MOV    R6, A
010D,2B,,        ADD    A, R3
010E,FA,,        MOV    R2, A
010F,EB,,        MOV    A, R3
0110,28,,        ADD    A, R0
0111,F8,,        MOV    R0, A
0112,E9,,        MOV    A, R1
0113,2B,,        ADD    A, R3
0114,14,,        DEC    A
0115,F9,,        MOV    R1, A
0116,E4,,        CLR    A
0117,F6,CMUL1,CMUL1:  MOV    @R0, A
0118,08,,        INC    R0
0119,DE FC,,        DJNZ   R6, CMUL1
011B,EA,,        MOV    A, R2
011C,FE,,        MOV    R6, A
011D,18,,        DEC    R0
011E,E4,CMUL2,CMUL2:  CLR    A
011F,C6,CMUL3,CMUL3:  XCH    A, @R0
0120,C4,,        SWAP   A
0121,D6,,        XCHD   A, @R0
0122,C6,,        XCH    A, @R0
0123,18,,        DEC    R0
0124,DA F9,,        DJNZ   R2,CMUL3
0126,FF,,        MOV    R7, A
0127,60 1C,,        JZ     CMUL7
0129,EB,CMUIA,CMUIA:  MOV    A, R3
012A,FA,,        MOV    R2, A
012B,2B,,        ADD    A, R3
012C,28,,        ADD    A, R0
012D,F8,,        MOV    R0, A
012E,C3,,        CLR    C
012F,E6,CMUL5,CMUL5:  MOV    A, @R0
0130,37,,        ADDC   A, @R1
0131,D4,,        DA     A
0132,F6,,        MOV    @R0,A
0133,18,,        DEC    R0
0134,19,,        DEC    R1
0135,DA F8,,        DJNZ   R2, CMUL5
0137,EB,,        MOV    A, R3
0138,FA,,        MOV    R2, A
0139,E4,CMUL6,CMUL6:  CLR    A
013A,36,,        ADDC   A, @R0
013B,D4,,        DA     A
013C,F6,,        MOV    @R0,A
013D,18,,        DEC    R0
013E,DA F9,,        DJNZ   R2, CMUL6
0140,EB,,        MOV    A, R3
0141,29,,        ADD    A, R1
0142,F9,,        MOV    R1, A
0143,DF E4,,        DJNZ   R7, CMUIA
0145,EB,CMUL7,CMUL7:  MOV    A, R3
0146,2B,,        ADD    A, R3
0147,FA,,        MOV    R2, A
0148,28,,        ADD    A, R0
0149,F8,,        MOV    R0, A
014A,DE D2,,        DJNZ   R6, CMUL2
014C,22,,        RET
,,,;-------------------------;
,,,;       显示              ;
,,,;-------------------------;
,,,;********************************************************
014D,78 FE,dirv,dirv:   mov   r0,#0feh
014F,79 27,,        mov   r1,#27h
0151,E8,,        mov   a,r0
0152,20 E0 05,di1,di1:    jb   acc.0,di10         ;位选
0155,C2 90,,        clr   p1.0
0157,02 01 A0,,        ljmp  di17
015A,D2 90,di10,di10:   setb  p1.0
015C,20 E1 05,,        jb   acc.1,di11
015F,C2 91,,        clr   p1.1
0161,02 01 A2,,        ljmp  di18
0164,D2 91,di11,di11:   setb  p1.1
0166,20 E2 05,,        jb   acc.2,di12
0169,C2 92,,        clr   p1.2
016B,02 01 A2,,        ljmp  di18
016E,D2 92,di12,di12:   setb  p1.2
0170,20 E3 05,,        jb   acc.3,di13
0173,C2 93,,        clr   p1.3
0175,02 01 A2,,        ljmp  di18
0178,D2 93,di13,di13:   setb  p1.3
017A,20 E4 05,,        jb   acc.4,di14
017D,C2 94,,        clr   p1.4
017F,02 01 A2,,        ljmp  di18
0182,D2 94,di14,di14:   setb  p1.4
0184,20 E5 05,,        jb   acc.5,di15
0187,C2 95,,        clr   p1.5
0189,02 01 A2,,        ljmp  di18
018C,D2 95,di15,di15:   setb  p1.5
018E,20 E6 05,,        jb   acc.6,di16
0191,C2 96,,        clr   p1.6
0193,02 01 A2,,        ljmp  di18
0196,D2 96,di16,di16:   setb  p1.6
0198,20 E7 05,,        jb   acc.7,di17
019B,C2 97,,        clr   p1.7
019D,02 01 A2,,        ljmp  di18
01A0,D2 97,di17,di17:   setb  p1.7
01A2,90 01 BC,di18,di18:   mov   dptr,#tabdis         ;查段选表
01A5,E7,,        mov   a,@r1
01A6,93,,        movc  a,@a+dptr
01A7,F5 A0,,        mov   p2,a                 ;段选
,,,;       mov   r7,#01h
,,,;di2:    mov   r6,#01h
,,,;di3:    djnz  r6,di3
,,,;        djnz  r7,di2
01A9,7F 03,,        mov   r7,#03h
01AB,7E FF,di2,di2:    mov   r6,#0ffh
01AD,DE FE,di3,di3:    djnz  r6,di3
01AF,DF FA,,        djnz  r7,di2
01B1,19,,        dec   r1                   ;
01B2,E8,,        mov   a,r0
01B3,30 E7 05,,        jnb   acc.7, di4
01B6,23,,        rl    a                    ;下一位(左移)
01B7,F8,,        mov   r0,a
01B8,02 01 52,,        ljmp  di1
01BB,22,di4,di4:    ret
,,,
,,,;********************************************************
,,,
01BC,,tabdis,tabdis:
01BC,3F 06 5B 4F,,DB 03fh,06H,05bH,04fH,066H,06dH,07dH,07H
,,,;  "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"
01C4,7F 6F BF 86,,DB 07fH,06fH,0Bfh,86H,0dbH,0cfH,0e6H,0edH
,,,;  "8"  "9"  "0." "1." "2." "3." "4." "5."
01CC,7D 07 FF EF,,DB 07dH,07H,0ffH,0efH,077H,07cH,039H,05eH
,,,;  "6." "7.""8."  "9." "A"  "b"  "C"  "d"
01D4,79 71 3D 76,,DB 079H,071H,03dH,076H,00fH,00eH,0f0H,038H
,,,;  "E"  "F"  "G"  "H"  "I"  "J"  "k"  "L"
01DC,D4 54 5C 73,,DB 0d4H,054H,05cH,073H,0dcH,050H,0d8H,078H
,,,;   "m"  "n" "o"  "P"  "Q"  "r   "s"  "t"
01E4,3E 18 98 F2,,DB 03eH,018H,098H,0f2H,06eh,0ccH,000h
,,,;  "U"  "v"  "w"  "x"  "y"  "z"  "  "
,,,
000E,,,end

⌨️ 快捷键说明

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