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

📄 timer0.lis

📁 AVR 单片机 时钟显示 通过7279 用数码管
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00C4                   .dbline -1
 00C4                   .dbline 60
 00C4           ; }
 00C4           ; void port_init(void)
 00C4           ; {
 00C4                   .dbline 61
 00C4           ;  PORTA = 0x00;
 00C4 2224              clr R2
 00C6 2BBA              out 0x1b,R2
 00C8                   .dbline 62
 00C8           ;  DDRA  = 0x00;
 00C8 2ABA              out 0x1a,R2
 00CA                   .dbline 63
 00CA           ;  PORTB = 0x06;
 00CA 86E0              ldi R24,6
 00CC 88BB              out 0x18,R24
 00CE                   .dbline 64
 00CE           ;  DDRB  = 0x0E;
 00CE 8EE0              ldi R24,14
 00D0 87BB              out 0x17,R24
 00D2                   .dbline 65
 00D2           ;  PORTC = 0x00; //m103 output only
 00D2 25BA              out 0x15,R2
 00D4                   .dbline 66
 00D4           ;  DDRC  = 0x00;
 00D4 24BA              out 0x14,R2
 00D6                   .dbline 67
 00D6           ;  PORTD = 0x00;
 00D6 22BA              out 0x12,R2
 00D8                   .dbline 68
 00D8           ;  DDRD  = 0x00;
 00D8 21BA              out 0x11,R2
 00DA                   .dbline -2
 00DA           L10:
 00DA                   .dbline 0 ; func end
 00DA 0895              ret
 00DC                   .dbend
 00DC                   .dbfunc e timer0_init _timer0_init fV
                        .even
 00DC           _timer0_init::
 00DC                   .dbline -1
 00DC                   .dbline 76
 00DC           ; }
 00DC           ; 
 00DC           ; //TIMER0 initialize - prescale:1024
 00DC           ; // WGM: Normal
 00DC           ; // desired value: 10mSec
 00DC           ; // actual value:  9.984mSec (0.2%)
 00DC           ; void timer0_init(void)
 00DC           ; {
 00DC                   .dbline 77
 00DC           ;  TCCR0 = 0x00; //stop
 00DC 2224              clr R2
 00DE 23BE              out 0x33,R2
 00E0                   .dbline 78
 00E0           ;  TCNT0 = 0xB2; //set count
 00E0 82EB              ldi R24,178
 00E2 82BF              out 0x32,R24
 00E4                   .dbline 79
 00E4           ;  OCR0  = 0x4E;  //set compare
 00E4 8EE4              ldi R24,78
 00E6 8CBF              out 0x3c,R24
 00E8                   .dbline 80
 00E8           ;  TCCR0 = 0x05; //start timer
 00E8 85E0              ldi R24,5
 00EA 83BF              out 0x33,R24
 00EC                   .dbline -2
 00EC           L11:
 00EC                   .dbline 0 ; func end
 00EC 0895              ret
 00EE                   .dbend
                        .area vector(rom, abs)
                        .org 36
 0024 0C947700          jmp _timer0_ovf_isr
                        .area text(rom, con, rel)
 00EE                   .dbfile F:\WORKS\AVRSIM~1\TIMER0~1\timer0.c
 00EE                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
                        .even
 00EE           _timer0_ovf_isr::
 00EE 2A92              st -y,R2
 00F0 8A93              st -y,R24
 00F2 9A93              st -y,R25
 00F4 2FB6              in R2,0x3f
 00F6 2A92              st -y,R2
 00F8                   .dbline -1
 00F8                   .dbline 85
 00F8           ; }
 00F8           ; 
 00F8           ; #pragma interrupt_handler timer0_ovf_isr:10
 00F8           ; void timer0_ovf_isr(void)
 00F8           ; {
 00F8                   .dbline 86
 00F8           ;  TCNT0 = 0xB2; //reload counter value
 00F8 82EB              ldi R24,178
 00FA 82BF              out 0x32,R24
 00FC                   .dbline 87
 00FC           ;  if (counter<10) counter++;
 00FC 80910300          lds R24,_counter
 0100 8A30              cpi R24,10
 0102 20F4              brsh L13
 0104           X2:
 0104                   .dbline 87
 0104 8F5F              subi R24,255    ; addi 1
 0106 80930300          sts _counter,R24
 010A 24C0              xjmp L14
 010C           L13:
 010C                   .dbline 88
 010C           ;  else {counter=0 ;    
 010C                   .dbline 88
 010C 2224              clr R2
 010E 20920300          sts _counter,R2
 0112                   .dbline 89
 0112           ;        if (second<60) second++;
 0112 80910200          lds R24,_second
 0116 8C33              cpi R24,60
 0118 20F4              brsh L15
 011A           X3:
 011A                   .dbline 89
 011A 8F5F              subi R24,255    ; addi 1
 011C 80930200          sts _second,R24
 0120 19C0              xjmp L16
 0122           L15:
 0122                   .dbline 90
 0122           ;        else {second=0 ;
 0122                   .dbline 90
 0122 2224              clr R2
 0124 20920200          sts _second,R2
 0128                   .dbline 91
 0128           ;                if (minute<60) minute++;
 0128 80910100          lds R24,_minute
 012C 8C33              cpi R24,60
 012E 20F4              brsh L17
 0130           X4:
 0130                   .dbline 91
 0130 8F5F              subi R24,255    ; addi 1
 0132 80930100          sts _minute,R24
 0136 0EC0              xjmp L18
 0138           L17:
 0138                   .dbline 92
 0138           ;                        else {minute=0;
 0138                   .dbline 92
 0138 2224              clr R2
 013A 20920100          sts _minute,R2
 013E                   .dbline 93
 013E           ;                              if (hour<24) hour++;
 013E 80910000          lds R24,_hour
 0142 8831              cpi R24,24
 0144 20F4              brsh L19
 0146           X5:
 0146                   .dbline 93
 0146 8F5F              subi R24,255    ; addi 1
 0148 80930000          sts _hour,R24
 014C 03C0              xjmp L20
 014E           L19:
 014E                   .dbline 94
 014E           ;                                  else hour=0;
 014E 2224              clr R2
 0150 20920000          sts _hour,R2
 0154           L20:
 0154                   .dbline 95
 0154           ;                                  }
 0154           L18:
 0154                   .dbline 96
 0154           ;                   }
 0154           L16:
 0154                   .dbline 97
 0154           ;               }
 0154           L14:
 0154                   .dbline -2
 0154           L12:
 0154                   .dbline 0 ; func end
 0154 2990              ld R2,y+
 0156 2FBE              out 0x3f,R2
 0158 9991              ld R25,y+
 015A 8991              ld R24,y+
 015C 2990              ld R2,y+
 015E 1895              reti
 0160                   .dbend
 0160                   .dbfunc e init_devices _init_devices fV
                        .even
 0160           _init_devices::
 0160                   .dbline -1
 0160                   .dbline 102
 0160           ; }
 0160           ; 
 0160           ; //call this routine to initialize all peripherals
 0160           ; void init_devices(void)
 0160           ; {
 0160                   .dbline 104
 0160           ;  //stop errant interrupts until set up
 0160           ;  CLI(); //disable all interrupts
 0160 F894              cli
 0162                   .dbline 105
 0162           ;  port_init();
 0162 B0DF              xcall _port_init
 0164                   .dbline 106
 0164           ;  timer0_init();
 0164 BBDF              xcall _timer0_init
 0166                   .dbline 108
 0166           ; 
 0166           ;  MCUCR = 0x00;
 0166 2224              clr R2
 0168 25BE              out 0x35,R2
 016A                   .dbline 109
 016A           ;  GICR  = 0x00;
 016A 2BBE              out 0x3b,R2
 016C                   .dbline 110
 016C           ;  TIMSK = 0x01; //timer interrupt sources
 016C 81E0              ldi R24,1
 016E 89BF              out 0x39,R24
 0170                   .dbline 111
 0170           ;  SEI(); //re-enable interrupts
 0170 7894              sei
 0172                   .dbline -2
 0172           L21:
 0172                   .dbline 0 ; func end
 0172 0895              ret
 0174                   .dbend
 0174                   .dbfunc e main _main fV
                        .even
 0174           _main::
 0174                   .dbline -1
 0174                   .dbline 115
 0174           ;  //all peripherals are now initialized
 0174           ; }
 0174           ; void main(void)
 0174           ; {
 0174                   .dbline 116
 0174           ; init_devices();
 0174 F5DF              xcall _init_devices
 0176                   .dbline 117
 0176           ; for(;;)
 0176           L23:
 0176                   .dbline 118
 0176           ; display();
 0176 75DF              xcall _display
 0178                   .dbline 117
 0178                   .dbline 117
 0178 FECF              xjmp L23
 017A           X6:
 017A                   .dbline -2
 017A           L22:
 017A                   .dbline 0 ; func end
 017A 0895              ret
 017C                   .dbend
 017C           ; }
 017C           ; 

⌨️ 快捷键说明

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