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

📄 clock.lis

📁 AVR单片机例程
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                       ;           六路动态扫描显示电路
                       ; *****************************************/   
                       ; 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 + -