07年做的用51驱动16X64的点阵模块显示时钟,用汇编编写的
<p><a href="forum.php?mod=attachment&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&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&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>
编译:
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
[!(/source/plugin/zhanmishu_markdown/template/editor/images/upload.svg) 附件:clock.rar](forum.php?mod=attachment&aid=68081 "attachment")
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=12346
这么多汇编代码,没有注释还能维护吗
用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和冒号(:)的点阵数据,用于显示。
整体来看,这段代码实现了一个简单的时钟显示功能,包括时钟的计数和显示。代码中使用了定时器中断来实现时钟的精确计时,并通过查表的方式将数字转换为点阵数据进行显示。
CyberHamster 发表于 2024-12-3 21:01
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=12346
{:5_272:} VCC 发表于 2024-12-3 21:44
这么多汇编代码,没有注释还能维护吗
用AI帮忙看了一下代码,大概了解了功能
{:5_332:} 之前我也写过汇编,但后面发现C比汇编好用多了,就再也没用过汇编了, stb988 发表于 2024-12-4 08:51
之前我也写过汇编,但后面发现C比汇编好用多了,就再也没用过汇编了,
是的,最早是学汇编,C51是后来自学的,汇编都快忘了 VECENT_LIN 发表于 2024-12-4 09:21
是的,最早是学汇编,C51是后来自学的,汇编都快忘了
我所有的编程语言都是自学的,学过汇编,C,php,python,java,js,nodejs,vue,太多了,都会一点,没有一个学精通的,包括硬件知识也是自学的。
页:
[1]