📄 clock.lis
字号:
; 六路动态扫描显示电路
; *****************************************/
; void display(void)
; {
00D2 .dbline 60
; unsigned char i;
; for (i=0;i<6;i++)
00D2 4427 clr R20
00D4 16C0 rjmp L11
00D6 L8:
00D6 .dbline 61
00D6 .dbline 62
00D6 80E0 ldi R24,<_ledbuff
00D8 90E0 ldi R25,>_ledbuff
00DA E42F mov R30,R20
00DC FF27 clr R31
00DE E80F add R30,R24
00E0 F91F adc R31,R25
00E2 2080 ldd R2,z+0
00E4 28BA out 0x18,R2
00E6 .dbline 63
00E6 01E0 ldi R16,1
00E8 142F mov R17,R20
00EA 00D0 rcall lsl8
00EC 202E mov R2,R16
00EE 2094 com R2
00F0 22BA out 0x12,R2
00F2 .dbline 64
00F2 00D0 rcall _delay_1ms
00F4 .dbline 65
00F4 01E0 ldi R16,1
00F6 142F mov R17,R20
00F8 00D0 rcall lsl8
00FA 22B2 in R2,0x12
00FC 202A or R2,R16
00FE 22BA out 0x12,R2
0100 .dbline 66
0100 L9:
0100 .dbline 60
0100 4395 inc R20
0102 L11:
0102 .dbline 60
0102 4630 cpi R20,6
0104 40F3 brlo L8
0106 .dbline 67}
; {
; PORTB=ledbuff[i];//将显示缓冲区数据送PORTB口
; PORTD=~(1<<i); //开始显示
; delay_1ms(); //每一位显示保持一定时间
; PORTD|=(1<<i); //关闭显示
; }
; }
0106 L7:
0106 00D0 rcall pop_gset1
0108 0895 ret
010A .dbsym r i 20 c
010A .dbfunc s settime _settime fI
; t1 -> R20
; t3 -> R22
; t2 -> R10
.even
010A _settime::
010A 00D0 rcall push_gset3
010C .dbline 72{
; /*****************************************
; 设定校时时间
; *****************************************/
; void settime(void)
; {
010C .dbline 74
; unsigned char t1,t2,t3;
; for (t1=0;t1<3;t1++)
010C 4427 clr R20
010E 97C0 rjmp L16
0110 L13:
0110 .dbline 75
; {
0110 .dbline 76
; ledbuff[5-2*t1]|=0x80;
0110 242E mov R2,R20
0112 3324 clr R3
0114 220C lsl R2
0116 331C rol R3
0118 85E0 ldi R24,5
011A 90E0 ldi R25,0
011C 8219 sub R24,R2
011E 9309 sbc R25,R3
0120 E0E0 ldi R30,<_ledbuff
0122 F0E0 ldi R31,>_ledbuff
0124 8E0F add R24,R30
0126 9F1F adc R25,R31
0128 282E mov R2,R24
012A 392E mov R3,R25
012C E22D mov R30,R2
012E F32D mov R31,R3
0130 8081 ldd R24,z+0
0132 8068 ori R24,128
0134 8083 std z+0,R24
0136 L17:
0136 .dbline 78
; do
; {
0136 .dbline 79
; t2=scan_key();
0136 00D0 rcall _scan_key
0138 202E mov R2,R16
013A 312E mov R3,R17
013C A22C mov R10,R2
013E .dbline 80
; display();
013E C8DF rcall _display
0140 .dbline 81
; }
0140 L18:
0140 .dbline 82
; while(t2==0x7f);
0140 8A2D mov R24,R10
0142 8F37 cpi R24,127
0144 C1F3 breq L17
0146 L20:
0146 .dbline 84
; do
; {
0146 .dbline 85
; t3=scan_key();
0146 00D0 rcall _scan_key
0148 202E mov R2,R16
014A 312E mov R3,R17
014C 622D mov R22,R2
014E .dbline 86
; display();
014E C0DF rcall _display
0150 .dbline 87
; }
0150 L21:
0150 .dbline 88
; while (t2==t3);
0150 A616 cp R10,R22
0152 C9F3 breq L20
0154 .dbline 89
; time[t1]=time[t1]%10+t2*10;
0154 80E0 ldi R24,<_time
0156 90E0 ldi R25,>_time
0158 242E mov R2,R20
015A 3324 clr R3
015C 280E add R2,R24
015E 391E adc R3,R25
0160 0AE0 ldi R16,10
0162 1A2D mov R17,R10
0164 00D0 rcall mpy8s
0166 402E mov R4,R16
0168 1AE0 ldi R17,10
016A E22D mov R30,R2
016C F32D mov R31,R3
016E 0081 ldd R16,z+0
0170 00D0 rcall mod8u
0172 502E mov R5,R16
0174 540C add R5,R4
0176 E22D mov R30,R2
0178 F32D mov R31,R3
017A 5082 std z+0,R5
017C .dbline 90
; hextobcd();
017C 55DF rcall _hextobcd
017E .dbline 91
; ledbuff[5-2*t1]&=0x7f;
017E 242E mov R2,R20
0180 3324 clr R3
0182 220C lsl R2
0184 331C rol R3
0186 85E0 ldi R24,5
0188 90E0 ldi R25,0
018A 8219 sub R24,R2
018C 9309 sbc R25,R3
018E E0E0 ldi R30,<_ledbuff
0190 F0E0 ldi R31,>_ledbuff
0192 8E0F add R24,R30
0194 9F1F adc R25,R31
0196 282E mov R2,R24
0198 392E mov R3,R25
019A E22D mov R30,R2
019C F32D mov R31,R3
019E 8081 ldd R24,z+0
01A0 8F77 andi R24,127
01A2 8083 std z+0,R24
01A4 .dbline 92
; ledbuff[4-2*t1]|=0x80;
01A4 242E mov R2,R20
01A6 3324 clr R3
01A8 220C lsl R2
01AA 331C rol R3
01AC 84E0 ldi R24,4
01AE 90E0 ldi R25,0
01B0 8219 sub R24,R2
01B2 9309 sbc R25,R3
01B4 E0E0 ldi R30,<_ledbuff
01B6 F0E0 ldi R31,>_ledbuff
01B8 8E0F add R24,R30
01BA 9F1F adc R25,R31
01BC 282E mov R2,R24
01BE 392E mov R3,R25
01C0 E22D mov R30,R2
01C2 F32D mov R31,R3
01C4 8081 ldd R24,z+0
01C6 8068 ori R24,128
01C8 8083 std z+0,R24
01CA L23:
01CA .dbline 94
; do
; {
01CA .dbline 95
; t2=scan_key();
01CA 00D0 rcall _scan_key
01CC 202E mov R2,R16
01CE 312E mov R3,R17
01D0 A22C mov R10,R2
01D2 .dbline 96
; display();
01D2 7EDF rcall _display
01D4 .dbline 97
; }
01D4 L24:
01D4 .dbline 98
; while(t2==0x7f);
01D4 8A2D mov R24,R10
01D6 8F37 cpi R24,127
01D8 C1F3 breq L23
01DA L26:
01DA .dbline 100
; do
; {
01DA .dbline 101
; t3=scan_key();
01DA 00D0 rcall _scan_key
01DC 202E mov R2,R16
01DE 312E mov R3,R17
01E0 622D mov R22,R2
01E2 .dbline 102
; display();
01E2 76DF rcall _display
01E4 .dbline 103
; }
01E4 L27:
01E4 .dbline 104
01E4 A616 cp R10,R22
01E6 C9F3 breq L26
01E8 .dbline 105
01E8 80E0 ldi R24,<_time
01EA 90E0 ldi R25,>_time
01EC E42F mov R30,R20
01EE FF27 clr R31
01F0 E80F add R30,R24
01F2 F91F adc R31,R25
01F4 0081 ldd R16,z+0
01F6 1AE0 ldi R17,10
01F8 00D0 rcall div8u
01FA 602F mov R22,R16
01FC .dbline 106
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -