VECENT_LIN 发表于 2024-12-3 18:01:30

07年做的用51驱动16X64的点阵模块显示时钟,用汇编编写的

<p><a href="forum.php?mod=attachment&amp;aid=68077" title="attachment"><img src="/source/plugin/zhanmishu_markdown/template/editor/images/upload.svg" alt="upload" /> 附件:时钟.LST</a><a href="forum.php?mod=attachment&amp;aid=68078" title="attachment"><img src="/source/plugin/zhanmishu_markdown/template/editor/images/upload.svg" alt="upload" /> 附件:时钟.LST</a><a href="forum.php?mod=attachment&amp;aid=68079" title="attachment"><img src="/source/plugin/zhanmishu_markdown/template/editor/images/upload.svg" alt="upload" /> 附件:时钟.LST</a></p>
<p>今天看了旧硬盘,看到07年做的用51驱动16X64的点阵模块显示时钟,用汇编编写的,对汇编有兴趣可以看看,附源程序,之前用STC12编译实测过可以正常运行,图片和视频已经找不到,大概的原理图如附图<br />
<img src="data/attachment/forum/202412/03/175655oqqcjesuckirja5s.jpg" alt="4_1_fefddfed89b6bdf.jpg" title="4_1_fefddfed89b6bdf.jpg" /></p>
<p>汇编程序:</p>
<p>;30H为秒数值个位<br />
;31H为秒数值十位<br />
;32H为小数点<br />
;33H为分数值个位<br />
;34H为分数值十位<br />
;35H为小数点<br />
;36H为时数值个位<br />
;37H为时数值十位<br />
;38H-3FH为下面的地址数据<br />
ORG 00H<br />
LJMP 100H<br />
ORG 0BH<br />
LJMP INT<br />
ORG 100H<br />
START:<br />
MOV SP,#70H<br />
MOV 2AH,#11H<br />
MOV 2BH,#40H<br />
MOV 2CH,#00H<br />
MOV 32H,#10<br />
MOV 35H,#10<br />
MOV TMOD,#00000001B<br />
MOV TH0,#HIGH(65536-36864)<br />
MOV TL0,#LOW(65536-36864)<br />
MOV IE,#10000010B<br />
MOV R4,#25<br />
SETB TR0<br />
MOV 20H,#01<br />
MOV 38H,#11<br />
MOV 39H,#11<br />
MOV 3AH,#11<br />
MOV 3BH,#11<br />
MOV 3CH,#11<br />
MOV 3DH,#11<br />
MOV 3EH,#11<br />
MOV 3FH,#11<br />
MOV 40H,#1<br />
MOV 41H,#1<br />
LOOP:<br />
LCALL DIS<br />
JMP LOOP</p>
<p>INT:<br />
MOV TMOD,#01H<br />
MOV TH0,#HIGH(65536-36864)<br />
MOV TL0,#LOW(65536-36864)<br />
SETB TR0<br />
PUSH PSW<br />
PUSH ACC<br />
PUSH DPL<br />
PUSH DPH<br />
PUSH B<br />
DJNZ R4,X2<br />
MOV R4,#25<br />
LCALL CLOCK<br />
X2:<br />
POP B<br />
POP DPH<br />
POP DPL<br />
POP ACC<br />
POP PSW<br />
RETI<br />
CLOCK:<br />
MOV A,2CH<br />
ADD A,#1<br />
DA A<br />
MOV 2CH,A<br />
CJNE A,#60H,X4<br />
MOV 2CH,#00<br />
MOV A,2BH<br />
ADD A,#1<br />
DA A<br />
MOV 2BH,A<br />
CJNE A,#60H,X4<br />
MOV 2BH,#00<br />
MOV A,2AH<br />
ADD A,#1<br />
DA A<br />
MOV 2AH,A<br />
CJNE A,#24H,X4<br />
MOV 2AH,#00<br />
X4:<br />
MOV A,#00<br />
CJNE A,20H,X5<br />
MOV 32H,#10<br />
MOV 35H,#10<br />
MOV 20H,#01<br />
JMP X6<br />
X5:<br />
MOV 32H,#11<br />
MOV 35H,#11<br />
MOV 20H,#00<br />
X6:<br />
RET<br />
DIS:<br />
MOV A,2CH<br />
MOV B,#10H<br />
DIV AB<br />
MOV 30H,B<br />
MOV 31H,A<br />
MOV A,2BH<br />
MOV B,#10H<br />
DIV AB<br />
MOV 33H,B<br />
MOV 34H,A<br />
MOV A,2AH<br />
MOV B,#10H<br />
DIV AB<br />
MOV 36H,B<br />
CJNE A,#00H,CL1<br />
MOV 37H,#11<br />
JMP DD1<br />
CL1:MOV 37H,A</p>
<p>DD1:<br />
MOV R0,#41H<br />
CJNE @R0,#1,ZY2<br />
LCALL XH</p>
<p>ZY2:<br />
CJNE @R0,#02,ZY3<br />
LCALL XL</p>
<p>ZY3:</p>
<p>MOV R0,#3FH<br />
MOV R1,#16<br />
MOV R3,#00H<br />
MOV R5,#00H;P2的初始值<br />
MOV R2,#16<br />
DD2:MOV A,@R0<br />
MOV DPTR,#DDD<br />
MOV B,#16<br />
MUL AB<br />
CLR C<br />
ADD A,R3;时十位第一个字节<br />
ADDC A,DPL<br />
MOV DPL,A<br />
MOV A,B<br />
ADDC A,DPH<br />
MOV DPH,A<br />
CLR A<br />
MOVC A,@A+DPTR<br />
MOV SBUF,A<br />
JNB TI $<br />
CLR TI<br />
DEC R0<br />
DJNZ R2,DD2<br />
MOV R2,#16<br />
MOV R0,#3FH<br />
CLR P2.4<br />
SETB P2.4<br />
MOV P2,R5<br />
INC R3<br />
LCALL DELAY<br />
SETB P2.5<br />
INC R5<br />
DJNZ R1,DD2<br />
RET<br />
DELAY:<br />
MOV R6,#2<br />
D1:MOV R7,#100<br />
DJNZ R7,$<br />
DJNZ R6,D1<br />
RET<br />
XH:<br />
MOV A,40H<br />
CJNE A,#1,XH1<br />
INC 3FH<br />
MOV A,3FH<br />
CJNE A,#20,XH9<br />
MOV 3FH,#11<br />
MOV 40H,#2<br />
XH1:<br />
MOV A,40H<br />
CJNE A,#2,XH3<br />
INC 3EH<br />
MOV A,3EH<br />
CJNE A,#20,XH9<br />
MOV 3EH,#11<br />
MOV 40H,#3<br />
XH3:<br />
MOV A,40H<br />
CJNE A,#3,XH4<br />
INC 3DH<br />
MOV A,3DH<br />
CJNE A,#20,XH9<br />
MOV 3DH,#11<br />
MOV 40H,#4<br />
SJMP XH4<br />
XH9:<br />
SJMP XH10<br />
XH4:<br />
MOV A,40H<br />
CJNE A,#4,XH5<br />
INC 3CH<br />
MOV A,3CH<br />
CJNE A,#20,XH10<br />
MOV 3CH,#11<br />
MOV 40H,#5<br />
XH5:<br />
MOV A,40H<br />
CJNE A,#5,XH6<br />
INC 3BH<br />
MOV A,3BH<br />
CJNE A,#20,XH10<br />
MOV 3BH,#11<br />
MOV 40H,#6<br />
XH6:<br />
MOV A,40H<br />
CJNE A,#6,XH7<br />
INC 3AH<br />
MOV A,3AH<br />
CJNE A,#20,XH10<br />
MOV 3AH,#11<br />
MOV 40H,#7<br />
XH7:<br />
MOV A,40H<br />
CJNE A,#7,XH8<br />
INC 39H<br />
MOV A,39H<br />
CJNE A,#20,XH10<br />
MOV 39H,#11<br />
MOV 40H,#8<br />
XH8:<br />
MOV A,40H<br />
CJNE A,#8,XH10<br />
INC 38H<br />
MOV A,38H<br />
CJNE A,#20,XH10<br />
MOV 40H,#1<br />
MOV 41H,#2<br />
XH10:<br />
RET</p>
<p>XL:<br />
MOV A,40H<br />
CJNE A,#1,XL1<br />
DEC 38H<br />
MOV A,38H<br />
CJNE A,#11,XL9<br />
MOV 39H,#20<br />
MOV 40H,#2<br />
XL1:<br />
MOV A,40H<br />
CJNE A,#2,XL3<br />
DEC 39H<br />
MOV A,39H<br />
CJNE A,#11,XL9<br />
MOV 40H,#3<br />
MOV 3AH,#20<br />
XL3:<br />
MOV A,40H<br />
CJNE A,#3,XL4<br />
DEC 3AH<br />
MOV A,3AH<br />
CJNE A,#11,XL9<br />
MOV 40H,#4<br />
MOV 3BH,#20<br />
SJMP XL4<br />
XL9:<br />
SJMP XL10<br />
XL4:<br />
MOV A,40H<br />
CJNE A,#4,XL5<br />
DEC 3BH<br />
MOV A,3BH<br />
CJNE A,#11,XL10<br />
MOV 40H,#5<br />
MOV 3CH,#20<br />
XL5:<br />
MOV A,40H<br />
CJNE A,#5,XL6<br />
DEC 3CH<br />
MOV A,3CH<br />
CJNE A,#11,XL10<br />
MOV 40H,#6<br />
MOV 3DH,#20<br />
XL6:<br />
MOV A,40H<br />
CJNE A,#6,XL7<br />
DEC 3DH<br />
MOV A,3DH<br />
CJNE A,#11,XL10<br />
MOV 40H,#7<br />
MOV 3EH,#20<br />
XL7:<br />
MOV A,40H<br />
CJNE A,#7,XL8<br />
DEC 3EH<br />
MOV A,3EH<br />
CJNE A,#11,XL10<br />
MOV 40H,#8<br />
MOV 3FH,#20<br />
XL8:<br />
MOV A,40H<br />
CJNE A,#8,XL10<br />
DEC 3FH<br />
MOV A,3FH<br />
CJNE A,#11,XL10<br />
MOV 40H,#1<br />
MOV 41H,#1<br />
XL10:<br />
RET<br />
DDD:<br />
;--文字:0--<br />
;--宋体12;此字体下对应的点阵为:宽x高=8x16   --<br />
DB0FFH,0FFH,0FFH,0E7H,0DBH,0BDH,0BDH,0BDH,0BDH,0BDH,0BDH,0BDH,0DBH,0E7H,0FFH,0FFH</p>
<p>;--文字:1--<br />
;--宋体12;此字体下对应的点阵为:宽x高=8x16   --<br />
DB0FFH,0FFH,0FFH,0F7H,0F1H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0C1H,0FFH,0FFH</p>
<p>;--文字:2--<br />
;--宋体12;此字体下对应的点阵为:宽x高=8x16   --<br />
DB0FFH,0FFH,0FFH,0C3H,0BDH,0BDH,0BDH,0DFH,0DFH,0EFH,0F7H,0FBH,0BDH,81H,0FFH,0FFH</p>
<p>;--文字:3--<br />
;--宋体12;此字体下对应的点阵为:宽x高=8x16   --<br />
DB0FFH,0FFH,0FFH,0C3H,0BDH,0BDH,0DFH,0E7H,0DFH,0BFH,0BFH,0BDH,0DDH,0E3H,0FFH,0FFH</p>
<p>;--文字:4--<br />
;--宋体12;此字体下对应的点阵为:宽x高=8x16   --<br />
DB0FFH,0FFH,0FFH,0DFH,0CFH,0D7H,0DBH,0DBH,0DDH,0DDH,81H,0DFH,0DFH,87H,0FFH,0FFH</p>
<p>;--文字:5--<br />
;--宋体12;此字体下对应的点阵为:宽x高=8x16   --<br />
DB0FFH,0FFH,0FFH,81H,0FDH,0FDH,0FDH,0E5H,0D9H,0BFH,0BFH,0BDH,0DDH,0E3H,0FFH,0FFH</p>
<p>;--文字:6--<br />
;--宋体12;此字体下对应的点阵为:宽x高=8x16   --<br />
DB0FFH,0FFH,0FFH,0C7H,0DBH,0FDH,0FDH,0E5H,0D9H,0BDH,0BDH,0BDH,0DBH,0E7H,0FFH,0FFH</p>
<p>;--文字:7--<br />
;--宋体12;此字体下对应的点阵为:宽x高=8x16   --<br />
DB0FFH,0FFH,0FFH,81H,0DDH,0DDH,0EFH,0EFH,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0FFH,0FFH</p>
<p>;--文字:8--<br />
;--宋体12;此字体下对应的点阵为:宽x高=8x16   --<br />
DB0FFH,0FFH,0FFH,0C3H,0BDH,0BDH,0BDH,0DBH,0E7H,0DBH,0BDH,0BDH,0BDH,0C3H,0FFH,0FFH</p>
<p>;--文字:9--<br />
;--宋体12;此字体下对应的点阵为:宽x高=8x16   --<br />
DB0FFH,0FFH,0FFH,0E7H,0DBH,0BDH,0BDH,0BDH,9BH,0A7H,0BFH,0BFH,0DBH,0E3H,0FFH,0FFH</p>
<p>;--文字::--<br />
;--宋体12;此字体下对应的点阵为:宽x高=8x16   --<br />
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E7H,0E7H,0FFH,0FFH,0FFH,0FFH,0E7H,0E7H,0FFH,0FFH</p>
<p>;--FF-- 11<br />
DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH<br />
;-01111111-12<br />
DB0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH<br />
;-10111111-   13<br />
DB0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH<br />
;-11011111-   14<br />
DB0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH<br />
;-11101111-   15<br />
DB0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H<br />
;-11110111-16<br />
DB0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH<br />
;-11111011-17<br />
DB0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH<br />
;-11111101-18<br />
DB0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH<br />
;-11111110-19<br />
DB7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH<br />
;-11111100-20<br />
DB3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH<br />
;-11111000-21<br />
DB1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH<br />
;-11110000-22<br />
DB0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH<br />
;-11100000-23<br />
DB07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H<br />
;-11000000-; 24<br />
DB03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H<br />
;-10000000-25<br />
DB01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H<br />
;-00000000-26<br />
DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H</p>

VECENT_LIN 发表于 2024-12-3 18:14:14

编译:


8051 Assembler         Version 1.00   06/16/107 18:52:46    Page 1
D:\SPEC\单片机\汇编\时钟\NEW\时钟.a51

```
1 0000            ;30H为秒数值个位
2 0000            ;31H为秒数值十位
3 0000            ;32H为小数点
4 0000            ;33H为分数值个位
5 0000            ;34H为分数值十位
6 0000            ;35H为小数点
7 0000            ;36H为时数值个位
8 0000            ;37H为时数值十位
9 0000            ;38H-3FH为下面的地址数据
```

10 0000            ORG 00H
11 0000 020100       LJMP 100H
12 000B            ORG 0BH
13 000B 020149       LJMP INT
14 0100            ORG 100H
15 0100            START:
16 0100 758170       MOV SP,#70H
17 0103 752A11       MOV 2AH,#11H
18 0106 752B40       MOV 2BH,#40H
19 0109 752C00       MOV 2CH,#00H
20 010C 75320A       MOV 32H,#10
21 010F 75350A       MOV 35H,#10
22 0112 758901       MOV TMOD,#00000001B
23 0115 758C70       MOV TH0,#HIGH(65536-36864)
24 0118 758A00       MOV TL0,#LOW(65536-36864)
25 011B 75A882       MOV IE,#10000010B
26 011E 7C19         MOV R4,#25
27 0120 D28C         SETB TR0
28 0122 752001       MOV 20H,#01
29 0125 75380B       MOV 38H,#11
30 0128 75390B       MOV 39H,#11
31 012B 753A0B       MOV 3AH,#11
32 012E 753B0B       MOV 3BH,#11
33 0131 753C0B       MOV 3CH,#11
34 0134 753D0B       MOV 3DH,#11
35 0137 753E0B       MOV 3EH,#11
36 013A 753F0B       MOV 3FH,#11
37 013D 754001       MOV 40H,#1
38 0140 754101       MOV 41H,#1
39 0143            LOOP:
40 0143 1201B2       LCALL DIS
41 0146 020143       JMP LOOP
42 0149
43 0149            INT:
44 0149 758901       MOV TMOD,#01H
45 014C 758C70       MOV TH0,#HIGH(65536-36864)
46 014F 758A00       MOV TL0,#LOW(65536-36864)
47 0152 D28C         SETB TR0
48 0154 C0D0         PUSH PSW
49 0156 C0E0         PUSH ACC
50 0158 C082         PUSH DPL
51 015A C083         PUSH DPH
52 015C C0F0         PUSH B
53 015E DC05         DJNZ R4,X2
54 0160 7C19         MOV R4,#25
55 0162 120170       LCALL CLOCK
56 0165            X2:
57 0165 D0F0         POP B
8051 Assembler         Version 1.00   06/16/107 18:52:46    Page 2
D:\SPEC\单片机\汇编\时钟\NEW\时钟.a51

58 0167 D083         POP DPH
59 0169 D082         POP DPL
60 016B D0E0         POP ACC
61 016D D0D0         POP PSW
62 016F 32         RETI
63 0170            CLOCK:
64 0170 E52C         MOV A,2CH
65 0172 2401         ADD A,#1
66 0174 D4         DA A
67 0175 F52C         MOV 2CH,A
68 0177 B4601D       CJNE A,#60H,X4
69 017A 752C00       MOV 2CH,#00
70 017D E52B         MOV A,2BH
71 017F 2401         ADD A,#1
72 0181 D4         DA A
73 0182 F52B         MOV 2BH,A
74 0184 B46010       CJNE A,#60H,X4
75 0187 752B00       MOV 2BH,#00
76 018A E52A         MOV A,2AH
77 018C 2401         ADD A,#1
78 018E D4         DA A
79 018F F52A         MOV 2AH,A
80 0191 B42403       CJNE A,#24H,X4
81 0194 752A00       MOV 2AH,#00
82 0197            X4:
83 0197 7400         MOV A,#00
84 0199 B5200C       CJNE A,20H,X5
85 019C 75320A       MOV 32H,#10
86 019F 75350A       MOV 35H,#10
87 01A2 752001       MOV 20H,#01
88 01A5 0201B1       JMP X6
89 01A8            X5:
90 01A8 75320B       MOV 32H,#11
91 01AB 75350B       MOV 35H,#11
92 01AE 752000       MOV 20H,#00
93 01B1            X6:
94 01B1 22         RET
95 01B2            DIS:
96 01B2 E52C         MOV A,2CH
97 01B4 75F010       MOV B,#10H
98 01B7 84         DIV AB
99 01B8 85F030       MOV 30H,B
100 01BB F531         MOV 31H,A
101 01BD E52B         MOV A,2BH
102 01BF 75F010       MOV B,#10H
103 01C2 84         DIV AB
104 01C3 85F033       MOV 33H,B
105 01C6 F534         MOV 34H,A
106 01C8 E52A         MOV A,2AH
107 01CA 75F010       MOV B,#10H
108 01CD 84         DIV AB
109 01CE 85F036       MOV 36H,B
110 01D1 B40006       CJNE A,#00H,CL1
111 01D4 75370B       MOV 37H,#11
112 01D7 0201DC       JMP DD1
113 01DA F537         CL1:MOV 37H,A
114 01DC
8051 Assembler         Version 1.00   06/16/107 18:52:46    Page 3
D:\SPEC\单片机\汇编\时钟\NEW\时钟.a51

115 01DC            DD1:
116 01DC 7841         MOV R0,#41H
117 01DE B60103       CJNE @R0,#1,ZY2
118 01E1 120231       LCALL XH
119 01E4
120 01E4            ZY2:
121 01E4 B60203       CJNE @R0,#02,ZY3
122 01E7 1202C6       LCALL XL
123 01EA
124 01EA            ZY3:
125 01EA
126 01EA 783F         MOV R0,#3FH
127 01EC 7910         MOV R1,#16
128 01EE 7B00         MOV R3,#00H
129 01F0 7D00         MOV R5,#00H;P2的初始值
130 01F2 7A10         MOV R2,#16
131 01F4 E6         DD2:MOV A,@R0
132 01F5 90035B       MOV DPTR,#DDD
133 01F8 75F010       MOV B,#16
134 01FB A4         MUL AB
135 01FC C3         CLR C
136 01FD 2B         ADD A,R3;时十位第一个字节
137 01FE 3582         ADDC A,DPL
138 0200 F582         MOV DPL,A
139 0202 E5F0         MOV A,B
140 0204 3583         ADDC A,DPH
141 0206 F583         MOV DPH,A
142 0208 E4         CLR A
143 0209 93         MOVC A,@A+DPTR
144 020A F599         MOV SBUF,A
145 020C 3099FD       JNB TI $
146 020F C299         CLR TI
147 0211 18         DEC R0
148 0212 DAE0         DJNZ R2,DD2
149 0214 7A10         MOV R2,#16
150 0216 783F         MOV R0,#3FH
151 0218 C2A4         CLR P2.4
152 021A D2A4         SETB P2.4
153 021C 8DA0         MOV P2,R5
154 021E 0B         INC R3
155 021F 120228       LCALL DELAY
156 0222 D2A5         SETB P2.5
157 0224 0D         INC R5
158 0225 D9CD         DJNZ R1,DD2
159 0227 22         RET
160 0228            DELAY:
161 0228 7E02         MOV R6,#2
162 022A 7F64         D1:MOV R7,#100
163 022C DFFE         DJNZ R7,$
164 022E DEFA         DJNZ R6,D1
165 0230 22         RET
166 0231            XH:
167 0231 E540         MOV A,40H
168 0233 B4010D       CJNE A,#1,XH1
169 0236 053F         INC 3FH
170 0238 E53F         MOV A,3FH
171 023A B4142C       CJNE A,#20,XH9
8051 Assembler         Version 1.00   06/16/107 18:52:46    Page 4
D:\SPEC\单片机\汇编\时钟\NEW\时钟.a51

172 023D 753F0B       MOV 3FH,#11
173 0240 754002       MOV 40H,#2
174 0243            XH1:
175 0243 E540         MOV A,40H
176 0245 B4020D       CJNE A,#2,XH3
177 0248 053E         INC 3EH
178 024A E53E         MOV A,3EH
179 024C B4141A       CJNE A,#20,XH9
180 024F 753E0B       MOV 3EH,#11
181 0252 754003       MOV 40H,#3
182 0255            XH3:
183 0255 E540         MOV A,40H
184 0257 B40311       CJNE A,#3,XH4
185 025A 053D         INC 3DH
186 025C E53D         MOV A,3DH
187 025E B41408       CJNE A,#20,XH9
188 0261 753D0B       MOV 3DH,#11
189 0264 754004       MOV 40H,#4
190 0267 8002         SJMP XH4
191 0269            XH9:
192 0269 805A         SJMP XH10
193 026B            XH4:
194 026B E540         MOV A,40H
195 026D B4040D       CJNE A,#4,XH5
196 0270 053C         INC 3CH
197 0272 E53C         MOV A,3CH
198 0274 B4144E       CJNE A,#20,XH10
199 0277 753C0B       MOV 3CH,#11
200 027A 754005       MOV 40H,#5
201 027D            XH5:
202 027D E540         MOV A,40H
203 027F B4050D       CJNE A,#5,XH6
204 0282 053B         INC 3BH
205 0284 E53B         MOV A,3BH
206 0286 B4143C       CJNE A,#20,XH10
207 0289 753B0B       MOV 3BH,#11
208 028C 754006       MOV 40H,#6
209 028F            XH6:
210 028F E540         MOV A,40H
211 0291 B4060D       CJNE A,#6,XH7
212 0294 053A         INC 3AH
213 0296 E53A         MOV A,3AH
214 0298 B4142A       CJNE A,#20,XH10
215 029B 753A0B       MOV 3AH,#11
216 029E 754007       MOV 40H,#7
217 02A1            XH7:
218 02A1 E540         MOV A,40H
219 02A3 B4070D       CJNE A,#7,XH8
220 02A6 0539         INC 39H
221 02A8 E539         MOV A,39H
222 02AA B41418       CJNE A,#20,XH10
223 02AD 75390B       MOV 39H,#11
224 02B0 754008       MOV 40H,#8
225 02B3            XH8:
226 02B3 E540         MOV A,40H
227 02B5 B4080D       CJNE A,#8,XH10
228 02B8 0538         INC 38H
8051 Assembler         Version 1.00   06/16/107 18:52:46    Page 5
D:\SPEC\单片机\汇编\时钟\NEW\时钟.a51

229 02BA E538         MOV A,38H
230 02BC B41406       CJNE A,#20,XH10
231 02BF 754001       MOV 40H,#1
232 02C2 754102       MOV 41H,#2
233 02C5            XH10:
234 02C5 22         RET
235 02C6
236 02C6
237 02C6            XL:
238 02C6 E540         MOV A,40H
239 02C8 B4010D       CJNE A,#1,XL1
240 02CB 1538         DEC 38H
241 02CD E538         MOV A,38H
242 02CF B40B2C       CJNE A,#11,XL9
243 02D2 753914       MOV 39H,#20
244 02D5 754002       MOV 40H,#2
245 02D8            XL1:
246 02D8 E540         MOV A,40H
247 02DA B4020D       CJNE A,#2,XL3
248 02DD 1539         DEC 39H
249 02DF E539         MOV A,39H
250 02E1 B40B1A       CJNE A,#11,XL9
251 02E4 754003       MOV 40H,#3
252 02E7 753A14       MOV 3AH,#20
253 02EA            XL3:
254 02EA E540         MOV A,40H
255 02EC B40311       CJNE A,#3,XL4
256 02EF 153A         DEC 3AH
257 02F1 E53A         MOV A,3AH
258 02F3 B40B08       CJNE A,#11,XL9
259 02F6 754004       MOV 40H,#4
260 02F9 753B14       MOV 3BH,#20
261 02FC 8002         SJMP XL4
262 02FE            XL9:
263 02FE 805A         SJMP XL10
264 0300            XL4:
265 0300 E540         MOV A,40H
266 0302 B4040D       CJNE A,#4,XL5
267 0305 153B         DEC 3BH
268 0307 E53B         MOV A,3BH
269 0309 B40B4E       CJNE A,#11,XL10
270 030C 754005       MOV 40H,#5
271 030F 753C14       MOV 3CH,#20
272 0312            XL5:
273 0312 E540         MOV A,40H
274 0314 B4050D       CJNE A,#5,XL6
275 0317 153C         DEC 3CH
276 0319 E53C         MOV A,3CH
277 031B B40B3C       CJNE A,#11,XL10
278 031E 754006       MOV 40H,#6
279 0321 753D14       MOV 3DH,#20
280 0324            XL6:
281 0324 E540         MOV A,40H
282 0326 B4060D       CJNE A,#6,XL7
283 0329 153D         DEC 3DH
284 032B E53D         MOV A,3DH
285 032D B40B2A       CJNE A,#11,XL10
8051 Assembler         Version 1.00   06/16/107 18:52:46    Page 6
D:\SPEC\单片机\汇编\时钟\NEW\时钟.a51

286 0330 754007       MOV 40H,#7
287 0333 753E14       MOV 3EH,#20
288 0336            XL7:
289 0336 E540         MOV A,40H
290 0338 B4070D       CJNE A,#7,XL8
291 033B 153E         DEC 3EH
292 033D E53E         MOV A,3EH
293 033F B40B18       CJNE A,#11,XL10
294 0342 754008       MOV 40H,#8
295 0345 753F14       MOV 3FH,#20
296 0348            XL8:
297 0348 E540         MOV A,40H
298 034A B4080D       CJNE A,#8,XL10
299 034D 153F         DEC 3FH
300 034F E53F         MOV A,3FH
301 0351 B40B06       CJNE A,#11,XL10
302 0354 754001       MOV 40H,#1
303 0357 754101       MOV 41H,#1
304 035A            XL10:
305 035A 22         RET
306 035B            DDD:
307 035B            ;--文字:0--
308 035B            ;--宋体12;此字体下对应的点阵为:宽x高=8x16   --
309 035B FF FF FF   DB0FFH,0FFH,0FFH,0E7H,0DBH,0BDH,0BDH,0BDH,0BDH,0BDH,0BDH,0BDH,0DBH,0E7H,0FFH,0FFH
035E E7 DB BD
0361 BD BD BD
0364 BD BD BD
0367 DB E7 FF
036A FF
310 036B
311 036B            ;--文字:1--
312 036B            ;--宋体12;此字体下对应的点阵为:宽x高=8x16   --
313 036B FF FF FF   DB0FFH,0FFH,0FFH,0F7H,0F1H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0C1H,0FFH,0FFH
036E F7 F1 F7
0371 F7 F7 F7
0374 F7 F7 F7
0377 F7 C1 FF
037A FF
314 037B
315 037B            ;--文字:2--
316 037B            ;--宋体12;此字体下对应的点阵为:宽x高=8x16   --
317 037B FF FF FF   DB0FFH,0FFH,0FFH,0C3H,0BDH,0BDH,0BDH,0DFH,0DFH,0EFH,0F7H,0FBH,0BDH,81H,0FFH,0FFH
037E C3 BD BD
0381 BD DF DF
0384 EF F7 FB
0387 BD 81 FF
038A FF
318 038B
319 038B            ;--文字:3--
320 038B            ;--宋体12;此字体下对应的点阵为:宽x高=8x16   --
321 038B FF FF FF   DB0FFH,0FFH,0FFH,0C3H,0BDH,0BDH,0DFH,0E7H,0DFH,0BFH,0BFH,0BDH,0DDH,0E3H,0FFH,0FFH
038E C3 BD BD
0391 DF E7 DF
0394 BF BF BD
0397 DD E3 FF
039A FF
322 039B
8051 Assembler         Version 1.00   06/16/107 18:52:46    Page 7
D:\SPEC\单片机\汇编\时钟\NEW\时钟.a51

323 039B            ;--文字:4--
324 039B            ;--宋体12;此字体下对应的点阵为:宽x高=8x16   --
325 039B FF FF FF   DB0FFH,0FFH,0FFH,0DFH,0CFH,0D7H,0DBH,0DBH,0DDH,0DDH,81H,0DFH,0DFH,87H,0FFH,0FFH
039E DF CF D7
03A1 DB DB DD
03A4 DD 81 DF
03A7 DF 87 FF
03AA FF
326 03AB
327 03AB            ;--文字:5--
328 03AB            ;--宋体12;此字体下对应的点阵为:宽x高=8x16   --
329 03AB FF FF FF   DB0FFH,0FFH,0FFH,81H,0FDH,0FDH,0FDH,0E5H,0D9H,0BFH,0BFH,0BDH,0DDH,0E3H,0FFH,0FFH
03AE 81 FD FD
03B1 FD E5 D9
03B4 BF BF BD
03B7 DD E3 FF
03BA FF
330 03BB
331 03BB            ;--文字:6--
332 03BB            ;--宋体12;此字体下对应的点阵为:宽x高=8x16   --
333 03BB FF FF FF   DB0FFH,0FFH,0FFH,0C7H,0DBH,0FDH,0FDH,0E5H,0D9H,0BDH,0BDH,0BDH,0DBH,0E7H,0FFH,0FFH
03BE C7 DB FD
03C1 FD E5 D9
03C4 BD BD BD
03C7 DB E7 FF
03CA FF
334 03CB
335 03CB            ;--文字:7--
336 03CB            ;--宋体12;此字体下对应的点阵为:宽x高=8x16   --
337 03CB FF FF FF   DB0FFH,0FFH,0FFH,81H,0DDH,0DDH,0EFH,0EFH,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0FFH,0FFH
03CE 81 DD DD
03D1 EF EF F7
03D4 F7 F7 F7
03D7 F7 F7 FF
03DA FF
338 03DB
339 03DB            ;--文字:8--
340 03DB            ;--宋体12;此字体下对应的点阵为:宽x高=8x16   --
341 03DB FF FF FF   DB0FFH,0FFH,0FFH,0C3H,0BDH,0BDH,0BDH,0DBH,0E7H,0DBH,0BDH,0BDH,0BDH,0C3H,0FFH,0FFH
03DE C3 BD BD
03E1 BD DB E7
03E4 DB BD BD
03E7 BD C3 FF
03EA FF
342 03EB
343 03EB            ;--文字:9--
344 03EB            ;--宋体12;此字体下对应的点阵为:宽x高=8x16   --
345 03EB FF FF FF   DB0FFH,0FFH,0FFH,0E7H,0DBH,0BDH,0BDH,0BDH,9BH,0A7H,0BFH,0BFH,0DBH,0E3H,0FFH,0FFH
03EE E7 DB BD
03F1 BD BD 9B
03F4 A7 BF BF
03F7 DB E3 FF
03FA FF
346 03FB
347 03FB            ;--文字::--
348 03FB            ;--宋体12;此字体下对应的点阵为:宽x高=8x16   --
349 03FB FF FF FF   DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0E7H,0E7H,0FFH,0FFH,0FFH,0FFH,0E7H,0E7H,0FFH,0FFH
8051 Assembler         Version 1.00   06/16/107 18:52:46    Page 8
D:\SPEC\单片机\汇编\时钟\NEW\时钟.a51

```
03FE FF FF FF
0401 E7 E7 FF
0404 FF FF FF
0407 E7 E7 FF
040A FF
```

350 040B
351 040B
352 040B            ;--FF-- 11
353 040B FF FF FF   DB0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
040E FF FF FF
0411 FF FF FF
0414 FF FF FF
0417 FF FF FF
041A FF
354 041B            ;-01111111-12
355 041B FE FE FE   DB0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH,0FEH
041E FE FE FE
0421 FE FE FE
0424 FE FE FE
0427 FE FE FE
042A FE
356 042B            ;-10111111-   13
357 042B FD FD FD   DB0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH,0FDH
042E FD FD FD
0431 FD FD FD
0434 FD FD FD
0437 FD FD FD
043A FD
358 043B            ;-11011111-   14
359 043B FB FB FB   DB0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH,0FBH
043E FB FB FB
0441 FB FB FB
0444 FB FB FB
0447 FB FB FB
044A FB
360 044B            ;-11101111-   15
361 044B F7 F7 F7   DB0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H,0F7H
044E F7 F7 F7
0451 F7 F7 F7
0454 F7 F7 F7
0457 F7 F7 F7
045A F7
362 045B            ;-11110111-16
363 045B EF EF EF   DB0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH,0EFH
045E EF EF EF
0461 EF EF EF
0464 EF EF EF
0467 EF EF EF
046A EF
364 046B            ;-11111011-17
365 046B DF DF DF   DB0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH,0DFH
046E DF DF DF
0471 DF DF DF
0474 DF DF DF
0477 DF DF DF
047A DF
366 047B            ;-11111101-18
8051 Assembler         Version 1.00   06/16/107 18:52:46    Page 9
D:\SPEC\单片机\汇编\时钟\NEW\时钟.a51

367 047B BF BF BF   DB0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH,0BFH
047E BF BF BF
0481 BF BF BF
0484 BF BF BF
0487 BF BF BF
048A BF
368 048B            ;-11111110-19
369 048B 7F 7F 7F   DB7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH,7FH
048E 7F 7F 7F
0491 7F 7F 7F
0494 7F 7F 7F
0497 7F 7F 7F
049A 7F 7F 7F
049D 7F 7F
370 049F
371 049F
372 049F
373 049F            ;-11111100-20
374 049F 3F 3F 3F   DB3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH
04A2 3F 3F 3F
04A5 3F 3F 3F
04A8 3F 3F 3F
04AB 3F 3F 3F
04AE 3F 3F 3F
04B1 3F 3F
375 04B3            ;-11111000-21
376 04B3 1F 1F 1F   DB1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH,1FH
04B6 1F 1F 1F
04B9 1F 1F 1F
04BC 1F 1F 1F
04BF 1F 1F 1F
04C2 1F 1F 1F
04C5 1F 1F
377 04C7            ;-11110000-22
378 04C7 0F 0F 0F   DB0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH,0FH
04CA 0F 0F 0F
04CD 0F 0F 0F
04D0 0F 0F 0F
04D3 0F 0F 0F
04D6 0F 0F 0F
04D9 0F 0F
379 04DB            ;-11100000-23
380 04DB 07 07 07   DB07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H,07H
04DE 07 07 07
04E1 07 07 07
04E4 07 07 07
04E7 07 07 07
04EA 07 07 07
04ED 07 07
381 04EF            ;-11000000-; 24
382 04EF 03 03 03   DB03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H,03H
04F2 03 03 03
04F5 03 03 03
04F8 03 03 03
04FB 03 03 03
04FE 03 03 03
0501 03 03
8051 Assembler         Version 1.00   06/16/107 18:52:46    Page 10
D:\SPEC\单片机\汇编\时钟\NEW\时钟.a51

383 0503            ;-10000000-25
384 0503 01 01 01   DB01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H,01H
0506 01 01 01
0509 01 01 01
050C 01 01 01
050F 01 01 01
0512 01 01 01
0515 01 01
385 0517            ;-00000000-26
386 0517 00 00 00   DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,00
051A 00 00 00
051D 00 00 00
0520 00 00 00
0523 00 00 00
0526 00 00 00
0529 00 00

Defined Symbols:

Defined Labels:
CL1                                       0001DA474
CLOCK                                     000170368
D1                                        00022A554
DD1                                       0001DC476
DD2                                       0001F4500
DDD                                       00035B859
DELAY                                     000228552
DIS                                       0001B2434
INT                                       000149329
LOOP                                    000143323
START                                     000100256
X2                                        000165357
X4                                        000197407
X5                                        0001A8424
X6                                        0001B1433
XH                                        000231561
XH1                                       000243579
XH10                                    0002C5709
XH3                                       000255597
XH4                                       00026B619
XH5                                       00027D637
XH6                                       00028F655
XH7                                       0002A1673
XH8                                       0002B3691
XH9                                       000269617
XL                                        0002C6710
XL1                                       0002D8728
XL10                                    00035A858
XL3                                       0002EA746
XL4                                       000300768
XL5                                       000312786
XL6                                       000324804
XL7                                       000336822
XL8                                       000348840
XL9                                       0002FE766
ZY2                                       0001E4484
ZY3                                       0001EA490

VECENT_LIN 发表于 2024-12-3 18:15:57

[!(/source/plugin/zhanmishu_markdown/template/editor/images/upload.svg) 附件:clock.rar](forum.php?mod=attachment&aid=68081 "attachment")

CyberHamster 发表于 2024-12-3 21:01:53

https://www.stcaimcu.com/forum.php?mod=viewthread&tid=12346

VCC 发表于 2024-12-3 21:44:05

这么多汇编代码,没有注释还能维护吗

用AI帮忙看了一下代码,大概了解了功能{:4_167:}

这段汇编代码是用于51单片机的,它实现了一个简单的时钟功能,包括时、分、秒的显示和计数。下面是对代码的逐段解释:

初始化和跳转指令:

ORG 00H 和 LJMP 100H 表示程序启动后会跳转到地址100H开始执行。
ORG 0BH 和 LJMP INT 设置了一个中断向量,当定时器中断发生时,会跳转到INT标签处执行。
主程序(START):

设置堆栈指针(SP)和一些寄存器的初始值。
配置定时器模式(TMOD),并设置定时器初值(TH0和TL0)。
使能定时器中断(IE)并启动定时器(TR0)。
初始化显示数据和控制变量。
主循环(LOOP)不断调用显示函数(DIS)。
中断服务程序(INT):

重新加载定时器初值并启动定时器。
保存和恢复现场(PSW, ACC, DPL, DPH, B)。
计数器R4递减,每25次中断调用一次时钟更新函数(CLOCK)。
时钟更新函数(CLOCK):

更新秒(2CH)、分(2BH)和时(2AH)的值。
处理进位,例如秒满60进位到分,时分满60进位到时。
根据时钟值更新显示控制变量(20H)。
显示函数(DIS):

将时、分、秒的值分解为个位和十位,并存储在相应的寄存器中。
根据显示控制变量选择显示模式(XH或XL)。
通过查表(DDD)将数字转换为点阵显示数据,并通过串行通信发送到显示设备。
延时函数(DELAY):

提供简单的软件延时。
显示模式切换函数(XH和XL):

根据当前的显示模式,增加或减少显示数据,实现滚动效果。
点阵数据(DDD):

存储了数字0-9和冒号(:)的点阵数据,用于显示。
整体来看,这段代码实现了一个简单的时钟显示功能,包括时钟的计数和显示。代码中使用了定时器中断来实现时钟的精确计时,并通过查表的方式将数字转换为点阵数据进行显示。

VECENT_LIN 发表于 2024-12-4 08:05:37

CyberHamster 发表于 2024-12-3 21:01
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=12346

{:5_272:}

VECENT_LIN 发表于 2024-12-4 08:06:23

VCC 发表于 2024-12-3 21:44
这么多汇编代码,没有注释还能维护吗

用AI帮忙看了一下代码,大概了解了功能


{:5_332:}

stb988 发表于 2024-12-4 08:51:21

之前我也写过汇编,但后面发现C比汇编好用多了,就再也没用过汇编了,

VECENT_LIN 发表于 2024-12-4 09:21:08

stb988 发表于 2024-12-4 08:51
之前我也写过汇编,但后面发现C比汇编好用多了,就再也没用过汇编了,

是的,最早是学汇编,C51是后来自学的,汇编都快忘了

stb988 发表于 2024-12-4 12:18:18

VECENT_LIN 发表于 2024-12-4 09:21
是的,最早是学汇编,C51是后来自学的,汇编都快忘了

我所有的编程语言都是自学的,学过汇编,C,php,python,java,js,nodejs,vue,太多了,都会一点,没有一个学精通的,包括硬件知识也是自学的。
页: [1]
查看完整版本: 07年做的用51驱动16X64的点阵模块显示时钟,用汇编编写的