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

📄 pxsjpgb.sdi

📁 电子时钟的单片机设计
💻 SDI
📖 第 1 页 / 共 2 页
字号:
0219,02 02 3D,,       ljmp  kw
021C,75 42 2E,k171,k171:  mov   42h,#2eh       ;减一后的显示指针是指向最高显示位,当前显示"灭"
021F,A6 42,,       mov   @r0,42h
0221,E5 41,kw3,kw3:   mov   a,41h
0223,04,,       inc   a
0224,65 5B,,       xrl   a,5bh          ;是否第一次按k34
0226,60 0A,,       jz     kw12
0228,E5 41,,       mov   a,41h          ;不是第一次按k34
022A,04,,       inc   a
022B,95 5B,,       subb  a,5bh          ;
022D,50 0E,,       jnc   kw
022F,75 42 2E,,       mov   42h,#2eh
0232,A6 42,kw12,kw12:  mov   @r0,42h        ;当前显示位是显示"灭"
0234,A8 41,,       mov   r0,41h
0236,76 30,,       mov   @r0,#30h
0238,86 42,,       mov   42h,@r0
023A,02 00 6A,,       ljmp  kl0
023D,,kw,kw:
023D,A6 42,,       mov   @r0,42h
023F,A8 41,,       mov   r0,41h
0241,86 42,,       mov   42h,@r0
0243,02 00 6A,,        ljmp  kl0
,,,
0246,,k41,k41:                            ;键c
0246,12 03 22,,       lcall xshg               ;显示退一位(向20h方向)
0249,A8 41,,       mov   r0,41h             ;当前显示位(23h--20h)指针取到r0
024B,E6,,       mov   a,@r0              ;当前显示内容取到a
024C,64 2E,,       xrl   a,#2eh             ;当前显示是否为"灭"
024E,60 04,,       jz    k150               ;当前显示为"灭"跳
0250,E6,,       mov   a,@r0              ;当前显示内容取到a(不为"灭")
0251,02 02 56,,       ljmp  k151
0254,E5 42,k150,k150:  mov   a,42h              ;当前显示内容取到a(不为"灭")
0256,F5 F0,k151,k151:  mov   b,a
0258,64 30,,       xrl   a,#30h             ;当前显示是否为"_"
025A,70 0D,,       jnz   k152               ;当前显示不为"_"跳
025C,D2 47,,       setb  47h
025E,A8 41,,       mov   r0,41h             ;当前显示位取到a
0260,18,,       dec   r0                 ;显示退一位(向20h方向)
0261,76 2E,,       mov   @r0,#2eh           ;显示"灭"(显示不移位)
0263,A8 41,,       mov   r0,41h             ;当前显示位取到a
0265,08,,       inc   r0                 ;显示进一位(向23h方向)----小数点打在该位
0266,E6,,       mov   a,@r0              ;当前显示内容取到a
0267,F5 F0,,       mov   b,a
,,,
0269,C3,k152,k152:  clr   c
026A,94 0A,,       subb  a,#0ah             ;显示内容是否已经有"."
026C,50 1E,,       jnc    k155              ;显示内容已经有"."退出
026E,E5 F0,,       mov   a,b
0270,24 0A,,       add   a,#0ah             ;打小数点
0272,F6,,       mov   @r0,a
0273,F5 42,,       mov   42h,a
0275,E5 F0,,       mov   a,b
0277,64 30,,       xrl   a,#30h
0279,60 11,,       jz    k155
027B,A8 41,,       mov   r0,41h
027D,18,,       dec   r0
027E,E6,,       mov   a,@r0
027F,64 30,,       xrl   a,#30h
0281,70 09,,       jnz    k155
0283,12 03 4A,k153,k153:  lcall xs                 ;当前显示位(23h--20h)指针减一(向20h方向)
0286,75 6B 00,,       mov   6bh,#00h           ;清除键"-"记忆
0289,75 5B 00,,       mov   5bh,#00h           ;显示数据末位指针清零
028C,30 47 09,k155,k155:  jnb   47h,k156           ;当前显示不为"_"跳
028F,C2 47,,       clr   47h
0291,A8 41,,       mov   r0,41h
0293,76 30,,       mov   @r0,#30h
0295,75 42 30,,       mov   42h,#30h
0298,,k156,k156:
0298,02 00 6A,,        ljmp  kl0
,,,
029B,,k42,k42:                            ;键0
029B,12 03 22,,        lcall xshg
029E,A8 41,,        mov   r0,41h
02A0,76 00,,        mov   @r0,#00h
02A2,12 03 4A,,        lcall xs
02A5,75 6B 00,,        mov   6bh,#00h          ;清除键"-"记忆
02A8,75 5B 00,,        mov   5bh,#00h          ;显示数据末位指针清零
02AB,02 00 6A,,        ljmp  kl0
02AE,,k43,k43:                            ;键=
02AE,02 00 6A,,        ljmp  kl0
02B1,,k44,k44:                            ;键+
02B1,85 41 4A,,        mov   4ah,41h
02B4,05 41,,       inc   41h
02B6,E5 41,,       mov   a,41h
02B8,85 41 6C,,       mov   6ch,41h
02BB,64 24,,       xrl   a,#24h
02BD,70 05,,       jnz   k160
02BF,75 41 20,,       mov   41h,#20h
02C2,41 C4,,       ajmp  k160
02C4,E5 41,k160,k160:  mov   a,41h
02C6,64 20,,       xrl   a,#20h
02C8,70 09,,       jnz   kw4
02CA,85 21 6C,,       mov   6ch,21h
02CD,E5 6C,,       mov   a,6ch
02CF,95 5B,,       subb  a,5bh
02D1,40 1A,,       jc    kw5
02D3,A8 4A,kw4,kw4:   mov   r0,4ah
02D5,E5 6C,,       mov   a,6ch
02D7,95 5B,,       subb  a,5bh
02D9,40 23,,       jc    kw1
02DB,E5 6C,,       mov   a,6ch
02DD,65 5B,,       xrl   a,5bh
02DF,70 03,,       jnz    kw6
02E1,75 42 30,,       mov   42h,#30h
02E4,A6 42,kw6,kw6:   mov   @r0,42h
02E6,A8 41,,       mov   r0,41h
02E8,86 42,,       mov   42h,@r0
02EA,02 00 6A,,       ljmp  kl0
02ED,C0 00,kw5,kw5:   push    0
02EF,A8 4A,,       mov   r0,4ah
02F1,A6 42,,       mov   @r0,42h
02F3,A8 41,,       mov   r0,41h
02F5,76 2E,,       mov   @r0,#2eh
02F7,86 42,,       mov   42h,@r0
02F9,D0 00,,       pop   0
02FB,02 00 6A,,       ljmp  kl0
02FE,75 42 30,kw1,kw1:   mov   42h,#30h
0301,A6 42,,       mov   @r0,42h
0303,A8 41,,       mov   r0,41h
0305,76 2E,,       mov   @r0,#2eh
0307,86 42,,       mov   42h,@r0
0309,02 00 6A,,        ljmp  kl0
,,,;*************************************************************
,,,;                       时钟中断0 程序
,,,;*************************************************************
030C,C0 00,it00,it00:  push  0                  ;R0入栈
030E,30 6E 06,,       JnB   6EH,it001
0311,A8 41,,       mov   r0,41h
0313,A6 42,,       MOV   @r0,42H            ;显示输入的信号与灭构成一闪一灭
0315,61 1D,,       ajmp  it002
0317,A8 41,it001,it001: mov   r0,41h
0319,86 42,,       MOV   42h,@r0
031B,76 2E,,       MOV   @r0,#2eH            ;显示灭
031D,B2 6E,it002,it002: cpl   6eh               ;取反6eh闪动开关(0:开  1:关)
031F,D0 00,,       pop   0
0321,32,,       reti
,,,;***********************;
,,,;       显示移位        ;
,,,;***********************;
0322,,xshg,xshg:
0322,C0 00,,       push  0             ;r0入栈
,,,
0324,E5 41,,       mov   a,41h         ;当前显示位存A
0326,14,,       dec   a             ;当前显示位减一位
0327,65 50,,       xrl   a,50h         ;当前显示位减一位是否等于"-"显示位
0329,60 0D,,       jz    csz0          ;当前显示位减一位等于"-"跳
,,,
032B,A8 41,,       mov   r0,41h        ;当前显示位存r0
032D,18,,       dec   r0            ;当前显示位减一位
032E,E6,,       mov   a,@r0
032F,64 2E,,       xrl   a,#2eh        ;当前显示位减一位是否等于"灭"
0331,70 14,,       jnz    csz          ;当前显示位减一位不等于"灭"退出
,,,
0333,76 30,,       mov   @r0,#30h      ;当前显示位减一位等于"灭":"-"值送显示
0335,02 03 47,,       ljmp  csz           ;退出
,,,
0338,A8 50,csz0,csz0:  mov   r0, 50h       ;当前显示位减一位是等于"-"显示位
033A,76 30,,       mov   @r0,#30h      ;"-"值送显示
033C,15 50,,       dec   50h           ;"-"值显示位减一
033E,74 1F,,       mov   a,#1fh        ;"-"值显示位是否减过最低显示位20h
0340,65 50,,       xrl   a,50h
0342,70 03,,       jnz   csz           ;"-"值显示位没有减过最低显示位20h退出
,,,
0344,75 50 23,,       mov   50h,#23h      ;"-"值显示位减过最低显示位20h,指针指向最高显示位23h
,,,
0347,D0 00,csz,csz:   pop   0             ;r0出栈
0349,22,,       ret
,,,;***********************;
,,,;      光标右移         ;
,,,;***********************;
034A,15 41,xs,xs:    dec   41h           ;光标减一
034C,E5 41,,       mov   a,41h
034E,64 1F,,       xrl   a,#1fh        ;光标是否减过最低显示位20h
0350,60 05,,       jz    pd            ;光标是减过最低显示位20h跳
,,,
0352,A8 41,,       mov   r0,41h        ;光标所指显示位送r0
0354,86 42,,       mov   42h,@r0       ;显示内容送42h
0356,22,,       ret                 ;退出
,,,
0357,75 41 23,pd,pd:    mov   41h,#23h      ;光标是减过最低显示位20h,循环到23h
035A,A8 41,,       mov   r0,41h        ;光标所指显示位送r0
035C,86 42,,       mov   42h,@r0       ;显示内容送42h
035E,22,,       ret                 ;退出
,,,;******************;
,,,;      显示        ;
,,,;******************;
035F,,dirv,dirv:
035F,78 FE,,        mov   r0,#0feh
0361,79 23,,        mov   r1,#23h
0363,E8,,        mov   a,r0
0364,20 E0 05,di1,di1:    jb   acc.0,di10         ;位选
0367,C2 93,,        clr   p1.3
0369,02 03 8A,,        ljmp  di13
036C,D2 93,di10,di10:   setb  p1.3
036E,20 E1 05,,        jb   acc.1,di11
0371,C2 92,,        clr   p1.2
0373,02 03 8C,,        ljmp  di18
0376,D2 92,di11,di11:   setb  p1.2
0378,20 E2 05,,        jb   acc.2,di12
037B,C2 91,,        clr   p1.1
037D,02 03 8C,,        ljmp  di18
0380,D2 91,di12,di12:   setb  p1.1
0382,20 E3 05,,        jb   acc.3,di13
0385,C2 90,,        clr   p1.0
0387,02 03 8C,,        ljmp  di18
038A,D2 90,di13,di13:   setb  p1.0
,,,
038C,90 03 A6,di18,di18:   mov   dptr,#table         ;查段选表
038F,E7,,        mov   a,@r1
0390,93,,        movc  a,@a+dptr
0391,F5 80,,        mov   p0,a                 ;段选
,,,;       mov   r7,#01h
,,,;di2:    mov   r6,#01h
,,,;di3:    djnz  r6,di3
,,,;        djnz  r7,di2
0393,7F 03,,        mov   r7,#03h
0395,7E FF,di2,di2:    mov   r6,#0ffh
0397,DE FE,di3,di3:    djnz  r6,di3
0399,DF FA,,        djnz  r7,di2
039B,19,,        dec   r1                   ;
039C,E8,,        mov   a,r0
039D,30 E4 05,,        jnb   acc.4, di4
03A0,23,,        rl    a                    ;下一位(左移)
03A1,F8,,        mov   r0,a
03A2,02 03 64,,        ljmp  di1
03A5,22,di4,di4:    ret
03A6,,table,table:
03A6,3F 06 5B 4F,,DB 03fh,06H,05bH,04fH,066H,06dH,07dH,07H
,,,;  "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"
03AE,7F 6F BF 86,,DB 07fH,06fH,0Bfh,86H,0dbH,0cfH,0e6H,0edH
,,,;  "8"  "9"  "0." "1." "2." "3." "4." "5."
03B6,7D 07 FF EF,,DB 07dH,07H,0ffH,0efH,077H,07cH,039H,05eH
,,,;  "6." "7.""8."  "9." "A"  "b"  "C"  "d"
03BE,79 71 3D 76,,DB 079H,071H,03dH,076H,00fH,00eH,0f0H,038H
,,,;  "E"  "F"  "G"  "H"  "I"  "J"  "k"  "L"
03C6,D4 54 5C 73,,DB 0d4H,054H,05cH,073H,0dcH,050H,0d8H,078H
,,,;   "m"  "n" "o"  "P"  "Q"  "r   "s"  "t"
03CE,3E 18 98 F2,,DB 03eH,018H,098H,0f2H,06eh,0ccH,000h,0f3H
,,,;  "U"  "v"  "w"  "x"  "y"  "z"  "  " "p."
03D6,08,,DB 08h
,,,;  "-"
000E,,,       end

⌨️ 快捷键说明

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