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

📄 timer1leddisplay.lis

📁 51单片机时钟程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 011E                   .dbline 121
 011E           ;    }
 011E           L23:
 011E                   .dbline 122
 011E           ;   }
 011E           L21:
 011E                   .dbline 124
 011E           ;   
 011E           ;   if(!(PIND&(1<<key_min)))//分钟调整键检测
 011E 8199              sbic 0x10,1
 0120 12C0              rjmp L30
 0122           X9:
 0122                   .dbline 125
 0122           ;   {
 0122                   .dbline 126
 0122           ;    delay_ms(10);
 0122 0AE0              ldi R16,10
 0124 57D0              xcall _delay_ms
 0126                   .dbline 127
 0126           ;    if(!(PIND&(1<<key_min)))
 0126 8199              sbic 0x10,1
 0128 0EC0              rjmp L32
 012A           X10:
 012A                   .dbline 128
 012A           ;    {
 012A 01C0              xjmp L35
 012C           L34:
 012C                   .dbline 130
 012C           ;     while(!(PIND&(1<<key_min)))
 012C           ;       {
 012C                   .dbline 131
 012C           ;        display();
 012C 31D0              xcall _display
 012E                   .dbline 132
 012E           ;       }
 012E           L35:
 012E                   .dbline 129
 012E 819B              sbis 0x10,1
 0130 FDCF              rjmp L34
 0132           X11:
 0132                   .dbline 133
 0132           ;       minute++;
 0132 80910700          lds R24,_minute
 0136 8F5F              subi R24,255    ; addi 1
 0138 80930700          sts _minute,R24
 013C                   .dbline 134
 013C           ;       if(minute==60)
 013C 8C33              cpi R24,60
 013E 19F4              brne L37
 0140           X12:
 0140                   .dbline 135
 0140           ;       {
 0140                   .dbline 136
 0140           ;        minute=0;
 0140 2224              clr R2
 0142 20920700          sts _minute,R2
 0146                   .dbline 137
 0146           ;       }
 0146           L37:
 0146                   .dbline 138
 0146           ;    }
 0146           L32:
 0146                   .dbline 139
 0146           ;   }
 0146           L30:
 0146                   .dbline 140
 0146           ;    if(!(PIND&(1<<key_sec)))//秒调整键检测
 0146 8299              sbic 0x10,2
 0148 12C0              rjmp L39
 014A           X13:
 014A                   .dbline 141
 014A           ;   {
 014A                   .dbline 142
 014A           ;    delay_ms(10);
 014A 0AE0              ldi R16,10
 014C 43D0              xcall _delay_ms
 014E                   .dbline 143
 014E           ;    if(!(PIND&(1<<key_sec)))
 014E 8299              sbic 0x10,2
 0150 0EC0              rjmp L41
 0152           X14:
 0152                   .dbline 144
 0152           ;    {
 0152 01C0              xjmp L44
 0154           L43:
 0154                   .dbline 146
 0154           ;     while(!(PIND&(1<<key_sec)))
 0154           ;       {
 0154                   .dbline 147
 0154           ;        display();
 0154 1DD0              xcall _display
 0156                   .dbline 148
 0156           ;       }
 0156           L44:
 0156                   .dbline 145
 0156 829B              sbis 0x10,2
 0158 FDCF              rjmp L43
 015A           X15:
 015A                   .dbline 149
 015A           ;       second++;
 015A 80910800          lds R24,_second
 015E 8F5F              subi R24,255    ; addi 1
 0160 80930800          sts _second,R24
 0164                   .dbline 150
 0164           ;       if(second==60)
 0164 8C33              cpi R24,60
 0166 19F4              brne L46
 0168           X16:
 0168                   .dbline 151
 0168           ;       {
 0168                   .dbline 152
 0168           ;        second=0;
 0168 2224              clr R2
 016A 20920800          sts _second,R2
 016E                   .dbline 153
 016E           ;       }
 016E           L46:
 016E                   .dbline 154
 016E           ;    }
 016E           L41:
 016E                   .dbline 155
 016E           ;   }
 016E           L39:
 016E                   .dbline -2
 016E           L16:
 016E                   .dbline 0 ; func end
 016E 0895              ret
 0170                   .dbend
 0170                   .dbfunc e init_devices _init_devices fV
                        .even
 0170           _init_devices::
 0170                   .dbline -1
 0170                   .dbline 160
 0170           ; }
 0170           ; 
 0170           ; //call this routine to initialize all peripherals
 0170           ; void init_devices(void)
 0170           ; {
 0170                   .dbline 162
 0170           ;  //stop errant interrupts until set up
 0170           ;  CLI(); //disable all interrupts
 0170 F894              cli
 0172                   .dbline 163
 0172           ;  port_init();
 0172 46DF              xcall _port_init
 0174                   .dbline 164
 0174           ;  timer1_init();
 0174 50DF              xcall _timer1_init
 0176                   .dbline 165
 0176           ;  hour=0x00;
 0176 2224              clr R2
 0178 20920600          sts _hour,R2
 017C                   .dbline 166
 017C           ;  minute=0x00;
 017C 20920700          sts _minute,R2
 0180                   .dbline 167
 0180           ;  second=0x00;
 0180 20920800          sts _second,R2
 0184                   .dbline 168
 0184           ;  MCUCR = 0x00;
 0184 25BE              out 0x35,R2
 0186                   .dbline 169
 0186           ;  GICR  = 0x00;
 0186 2BBE              out 0x3b,R2
 0188                   .dbline 170
 0188           ;  TIMSK = 0x04; //timer interrupt sources
 0188 84E0              ldi R24,4
 018A 89BF              out 0x39,R24
 018C                   .dbline 171
 018C           ;  SEI(); //re-enable interrupts
 018C 7894              sei
 018E                   .dbline -2
 018E           L48:
 018E                   .dbline 0 ; func end
 018E 0895              ret
 0190                   .dbend
 0190                   .dbfunc e display _display fV
 0190           ;        led_sel -> R20
 0190           ;              i -> R22
                        .even
 0190           _display::
 0190 0E940000          xcall push_xgsetF000
 0194                   .dbline -1
 0194                   .dbline 177
 0194           ;  //all peripherals are now initialized
 0194           ; }
 0194           ; 
 0194           ; /*动态扫描显示程序*/
 0194           ; void display()  
 0194           ; {
 0194                   .dbline 179
 0194           ;   unsigned char i,led_sel;
 0194           ;   led_sel=0xdf;
 0194 4FED              ldi R20,223
 0196                   .dbline 180
 0196           ;   for(i=0;i<6;i++)
 0196 6627              clr R22
 0198 19C0              xjmp L53
 019A           L50:
 019A                   .dbline 181
 019A           ;   {
 019A                   .dbline 182
 019A           ;    PORTA=led_tab[time_group[i]];
 019A 80E0              ldi R24,<_time_group
 019C 90E0              ldi R25,>_time_group
 019E E62F              mov R30,R22
 01A0 FF27              clr R31
 01A2 E80F              add R30,R24
 01A4 F91F              adc R31,R25
 01A6 E081              ldd R30,z+0
 01A8 FF27              clr R31
 01AA EE0F              lsl R30
 01AC FF1F              rol R31
 01AE 80E0              ldi R24,<_led_tab
 01B0 90E0              ldi R25,>_led_tab
 01B2 E80F              add R30,R24
 01B4 F91F              adc R31,R25
 01B6 2590              lpm R2,Z+
 01B8 3490              lpm R3,Z
 01BA 2BBA              out 0x1b,R2
 01BC                   .dbline 183
 01BC           ;    PORTB=led_sel;
 01BC 48BB              out 0x18,R20
 01BE                   .dbline 184
 01BE           ;    led_sel=(led_sel>>1)+0x80;
 01BE 4695              lsr R20
 01C0 4058              subi R20,128    ; addi 128
 01C2                   .dbline 185
 01C2           ;    delay_ms(10);
 01C2 0AE0              ldi R16,10
 01C4 07D0              xcall _delay_ms
 01C6                   .dbline 186
 01C6           ;    PORTB=0xff;
 01C6 8FEF              ldi R24,255
 01C8 88BB              out 0x18,R24
 01CA                   .dbline 187
 01CA           ;   }
 01CA           L51:
 01CA                   .dbline 180
 01CA 6395              inc R22
 01CC           L53:
 01CC                   .dbline 180
 01CC 6630              cpi R22,6
 01CE 28F3              brlo L50
 01D0           X17:
 01D0                   .dbline -2
 01D0           L49:
 01D0                   .dbline 0 ; func end
 01D0 0C940000          xjmp pop_xgsetF000
 01D4                   .dbsym r led_sel 20 c
 01D4                   .dbsym r i 22 c
 01D4                   .dbend
 01D4                   .dbfunc e delay_ms _delay_ms fV
 01D4           ;              a -> R20
 01D4           ;              b -> R22
 01D4           ;              i -> R16
                        .even
 01D4           _delay_ms::
 01D4 4A93              st -y,R20
 01D6 6A93              st -y,R22
 01D8                   .dbline -1
 01D8                   .dbline 192
 01D8           ; }
 01D8           ; 
 01D8           ; /*毫秒延时程序*/
 01D8           ; void delay_ms(unsigned char i)
 01D8           ;  { 
 01D8                   .dbline 194
 01D8           ;  unsigned char a, b;
 01D8           ;   for (a = 1; a < i; a++) 
 01D8 41E0              ldi R20,1
 01DA 06C0              xjmp L58
 01DC           L55:
 01DC                   .dbline 195
 01DC           ;   {  
 01DC                   .dbline 196
 01DC           ;    for (b = 1; b; b++) 
 01DC 61E0              ldi R22,1
 01DE 01C0              xjmp L62
 01E0           L59:
 01E0                   .dbline 197
 01E0           ;    {   
 01E0                   .dbline 198
 01E0           ;     ;   
 01E0                   .dbline 199
 01E0           ;    } 
 01E0           L60:
 01E0                   .dbline 196
 01E0 6395              inc R22
 01E2           L62:
 01E2                   .dbline 196
 01E2 6623              tst R22
 01E4 E9F7              brne L59
 01E6           X18:
 01E6                   .dbline 200
 01E6           ;   }
 01E6           L56:
 01E6                   .dbline 194
 01E6 4395              inc R20
 01E8           L58:
 01E8                   .dbline 194
 01E8 4017              cp R20,R16
 01EA C0F3              brlo L55
 01EC           X19:
 01EC                   .dbline -2
 01EC           L54:
 01EC                   .dbline 0 ; func end
 01EC 6991              ld R22,y+
 01EE 4991              ld R20,y+
 01F0 0895              ret
 01F2                   .dbsym r a 20 c
 01F2                   .dbsym r b 22 c
 01F2                   .dbsym r i 16 c
 01F2                   .dbend
 01F2                   .dbfunc e main _main fV
                        .even
 01F2           _main::
 01F2                   .dbline -1
 01F2                   .dbline 205
 01F2           ; }
 01F2           ; 
 01F2           ; /*主程序*/
 01F2           ; void main(void)
 01F2           ; {
 01F2                   .dbline 207
 01F2           ; 
 01F2           ;   init_devices();
 01F2 BEDF              xcall _init_devices
 01F4 03C0              xjmp L65
 01F6           L64:
 01F6                   .dbline 209
 01F6           ;   while(1)
 01F6           ;   {
 01F6                   .dbline 210
 01F6           ;    set_detect();
 01F6 72DF              xcall _set_detect
 01F8                   .dbline 211
 01F8           ;    data_split();
 01F8 46DF              xcall _data_split
 01FA                   .dbline 212
 01FA           ;    display();
 01FA CADF              xcall _display
 01FC                   .dbline 213
 01FC           ;   }
 01FC           L65:
 01FC                   .dbline 208
 01FC FCCF              xjmp L64
 01FE           X20:
 01FE                   .dbline -2
 01FE           L63:
 01FE                   .dbline 0 ; func end
 01FE 0895              ret
 0200                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\avr单片机学习\我自编程序\定时器数码管显示\timer1leddisplay.c
 0000           _time_group::
 0000                   .blkb 6
 0006                   .dbsym e time_group _time_group A[6:6]c
 0006           _hour::
 0006                   .blkb 1
 0007                   .dbsym e hour _hour c
 0007           _minute::
 0007                   .blkb 1
 0008                   .dbsym e minute _minute c
 0008           _second::
 0008                   .blkb 1
 0009                   .dbsym e second _second c
 0009           ; }

⌨️ 快捷键说明

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