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

📄 t0时钟.lis

📁 iccavr下
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00D2 2AE0              ldi R18,10
 00D4 30E0              ldi R19,0
 00D6 8A01              movw R16,R20
 00D8 0E940000          xcall mod16u
 00DC F801              movw R30,R16
 00DE 80E0              ldi R24,<_discode
 00E0 90E0              ldi R25,>_discode
 00E2 E80F              add R30,R24
 00E4 F91F              adc R31,R25
 00E6 E491              lpm R30,Z
 00E8 EBBB              out 0x1b,R30
 00EA                   .dbline 39
 00EA           ; void initial(void)
 00EA 05E0              ldi R16,5
 00EC 10E0              ldi R17,0
 00EE A3DF              xcall _delay_nms
 00F0                   .dbline 40
 00F0           ; {
 00F0 C39A              sbi 0x18,3
 00F2                   .dbline -2
 00F2           L17:
 00F2 0E940000          xcall pop_gset1
 00F6                   .dbline 0 ; func end
 00F6 0895              ret
 00F8                   .dbsym r number 20 i
 00F8                   .dbend
 00F8                   .dbfile D:\M16开发板实验教程\icc-avr\T0CTCT~1\T0时钟.c
 00F8                   .dbfunc e main _main fV
 00F8           ;       disvalue -> R20,R21
                        .even
 00F8           _main::
 00F8                   .dbline -1
 00F8                   .dbline 25
 00F8                   .dbline 26
 00F8 0FD0              xcall _initial
 00FA 0CC0              xjmp L20
 00FC           L19:
 00FC                   .dbline 29
 00FC                   .dbline 31
 00FC 20900000          lds R2,_minute
 0100 84E6              ldi R24,100
 0102 829D              mul R24,R2
 0104 A001              movw R20,R0
 0106 20900100          lds R2,_second
 010A 3324              clr R3
 010C 420D              add R20,R2
 010E 531D              adc R21,R3
 0110                   .dbline 32
 0110 8A01              movw R16,R20
 0112 A0DF              xcall _display
 0114                   .dbline 33
 0114           L20:
 0114                   .dbline 28
 0114 F3CF              xjmp L19
 0116           X0:
 0116                   .dbline -2
 0116           L18:
 0116                   .dbline 0 ; func end
 0116 0895              ret
 0118                   .dbsym r disvalue 20 i
 0118                   .dbend
 0118                   .dbfunc e initial _initial fV
                        .even
 0118           _initial::
 0118                   .dbline -1
 0118                   .dbline 40
 0118                   .dbline 41
 0118           ;        PORTA=0XFF;   //A口初始化
 0118 8FEF              ldi R24,255
 011A 8BBB              out 0x1b,R24
 011C                   .dbline 42
 011C           ;        DDRA=0XFF;    //out
 011C 8ABB              out 0x1a,R24
 011E                   .dbline 43
 011E           ;        PORTB=0XFF;   //B口初始化
 011E 88BB              out 0x18,R24
 0120                   .dbline 44
 0120           ;        DDRB=0XFF;
 0120 87BB              out 0x17,R24
 0122                   .dbline 45
 0122           ;        PORTC=0XFF;   //其它口上拉电阻有效
 0122 85BB              out 0x15,R24
 0124                   .dbline 46
 0124           ;        PORTD=0XFF;
 0124 82BB              out 0x12,R24
 0126                   .dbline 47
 0126           ;        _SEI();
 0126 7894              sei
 0128                   .dbline 48
 0128           ;        OCR0=249;  //定时250us      ORC0+1                                                     
 0128 89EF              ldi R24,249
 012A 8CBF              out 0x3c,R24
 012C                   .dbline 49
 012C           ;        TIMSK|=(1<<OCIE0);  //比较匹配中断允许
 012C 89B7              in R24,0x39
 012E 8260              ori R24,2
 0130 89BF              out 0x39,R24
 0132                   .dbline 50
 0132           ;        TCCR0|=(1<<WGM01)|(1<<CS01);  //CTC模式,8分频
 0132 83B7              in R24,0x33
 0134 8A60              ori R24,10
 0136 83BF              out 0x33,R24
 0138                   .dbline -2
 0138           L22:
 0138                   .dbline 0 ; func end
 0138 0895              ret
 013A                   .dbend
                        .area vector(rom, abs)
                        .org 76
 004C 0C949D00          jmp _T0INT
                        .area text(rom, con, rel)
 013A                   .dbfile D:\M16开发板实验教程\icc-avr\T0CTCT~1\T0时钟.c
 013A                   .dbfunc e T0INT _T0INT fV
                        .even
 013A           _T0INT::
 013A 2A92              st -y,R2
 013C 3A92              st -y,R3
 013E 8A93              st -y,R24
 0140 9A93              st -y,R25
 0142 EA93              st -y,R30
 0144 2FB6              in R2,0x3f
 0146 2A92              st -y,R2
 0148                   .dbline -1
 0148                   .dbline 87
 0148           ;        /*---------------------------------------------------------
 0148           ;        TCCR0
 0148           ;        7:     FOC0--------Force Output Campare
 0148           ;        6,3    WGM01:0-----Waveform Generator Mode
 0148           ;               00----------Normal
 0148           ;                       01----------PWM,Phase Correct
 0148           ;                       10----------CTC
 0148           ;                       11----------Fast PWM
 0148           ;        5,4    COM11:0-----Compare Match Output Mode
 0148           ;                ----------------------------------------
 0148           ;                        Non PWM mode
 0148           ;                        ----------------------------------------
 0148           ;               00----------Normal Port Operation, OC0 disconnected
 0148           ;                       01----------Toggle OC0 on compare match
 0148           ;                       10----------Clear OC0 on compare match
 0148           ;                       11----------Set OC0 on compare match
 0148           ;        2--0   CS02:0------Clock Select
 0148           ;               000---------None clock select
 0148           ;                       001---------clk(io)
 0148           ;                       010---------clk(io)/8
 0148           ;                       011---------clk(io)/64
 0148           ;                       100---------clk(io)/256
 0148           ;                       101---------clk(io)/1024
 0148           ;                       110---------T0 pin,falling edge
 0148           ;                       111---------T0 pin,rising edge
 0148           ;        ----------------------------------------------------------*/
 0148           ; }
 0148           ; 
 0148           ; /*------------------------------------------------------------
 0148           ; function:   interrupt service routine,it increases micsec,minute
 0148           ;             second , and the main loop routine display the current 
 0148           ;                       time 
 0148           ; -------------------------------------------------------------*/
 0148           ; 
 0148           ; #pragma interrupt_handler  T0INT: iv_TIMER0_COMP
 0148           ; void T0INT(void)
 0148           ; {
 0148                   .dbline 88
 0148           ;               micsec += 1;
 0148 80910200          lds R24,_micsec
 014C 90910300          lds R25,_micsec+1
 0150 0196              adiw R24,1
 0152 90930300          sts _micsec+1,R25
 0156 80930200          sts _micsec,R24
 015A                   .dbline 89
 015A           ;               if(micsec==4000)
 015A 803A              cpi R24,160
 015C EFE0              ldi R30,15
 015E 9E07              cpc R25,R30
 0160 C1F4              brne L24
 0162                   .dbline 90
 0162           ;               {
 0162                   .dbline 91
 0162           ;                       micsec=0;
 0162 2224              clr R2
 0164 3324              clr R3
 0166 30920300          sts _micsec+1,R3
 016A 20920200          sts _micsec,R2
 016E                   .dbline 92
 016E           ;                       second +=1 ;
 016E 80910100          lds R24,_second
 0172 8F5F              subi R24,255    ; addi 1
 0174 80930100          sts _second,R24
 0178                   .dbline 93
 0178           ;                       if(second==60)
 0178 8C33              cpi R24,60
 017A 59F4              brne L26
 017C                   .dbline 94
 017C           ;                       {
 017C                   .dbline 95
 017C           ;                                       second = 0;
 017C 20920100          sts _second,R2
 0180                   .dbline 96
 0180           ;                                       minute += 1 ;
 0180 80910000          lds R24,_minute
 0184 8F5F              subi R24,255    ; addi 1
 0186 80930000          sts _minute,R24
 018A                   .dbline 97
 018A           ;                                       if(minute==60)
 018A 8C33              cpi R24,60
 018C 11F4              brne L28
 018E                   .dbline 98
 018E           ;                                       minute=0;
 018E 20920000          sts _minute,R2
 0192           L28:
 0192                   .dbline 99
 0192           ;                       }
 0192           L26:
 0192                   .dbline 100
 0192           L24:
 0192                   .dbline -2
 0192           L23:
 0192 2990              ld R2,y+
 0194 2FBE              out 0x3f,R2
 0196 E991              ld R30,y+
 0198 9991              ld R25,y+
 019A 8991              ld R24,y+
 019C 3990              ld R3,y+
 019E 2990              ld R2,y+
 01A0                   .dbline 0 ; func end
 01A0 1895              reti
 01A2                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\M16开发板实验教程\icc-avr\T0CTCT~1\T0时钟.c
 0000           _minute::
 0000                   .blkb 1
 0001                   .dbsym e minute _minute c
 0001           _second::
 0001                   .blkb 1
 0002                   .dbsym e second _second c
 0002           _micsec::
 0002                   .blkb 2
 0004                   .dbsym e micsec _micsec i

⌨️ 快捷键说明

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