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

📄 timer2.lis

📁 protues_atmeg8学习之:timer篇源代码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0072           ;     init_int();  
 0072 EBDF              rcall _init_int
 0074                   .dbline 52
 0074           ;     init_timer2();
 0074 F4DF              rcall _init_timer2
 0076                   .dbline 53
 0076           ;     SEI();          //打开全局中断
 0076 7894              sei
 0078                   .dbline -2
 0078                   .dbline 54
 0078           ; } 
 0078           L13:
 0078                   .dbline 0 ; func end
 0078 0895              ret
 007A                   .dbend
                        .area vector(rom, abs)
                        .org 2
 0002 3DC0              rjmp _int0_fun
                        .area text(rom, con, rel)
 007A                   .dbfile F:\Learn\AVR\Pro_Mega8\Timer\Timer2\Timer2.C
 007A                   .dbfunc e int0_fun _int0_fun fV
                        .even
 007A           _int0_fun::
 007A 8A93              st -y,R24
 007C 9A93              st -y,R25
 007E 8FB7              in R24,0x3f
 0080 8A93              st -y,R24
 0082                   .dbline -1
 0082                   .dbline 59
 0082           ; 
 0082           ; //INT0中断函数
 0082           ; #pragma interrupt_handler int0_fun:iv_INT0
 0082           ; void int0_fun(void)
 0082           ; {
 0082                   .dbline 60
 0082           ;     KeyDown++;        
 0082 80910000          lds R24,_KeyDown
 0086 8F5F              subi R24,255    ; addi 1
 0088 80930000          sts _KeyDown,R24
 008C                   .dbline -2
 008C                   .dbline 61
 008C           ; }
 008C           L14:
 008C 8991              ld R24,y+
 008E 8FBF              out 0x3f,R24
 0090 9991              ld R25,y+
 0092 8991              ld R24,y+
 0094                   .dbline 0 ; func end
 0094 1895              reti
 0096                   .dbend
 0096                   .dbfunc e main _main fV
                        .even
 0096           _main::
 0096                   .dbline -1
 0096                   .dbline 65
 0096           ; 
 0096           ; //主函数
 0096           ; void main(void)  
 0096           ; {
 0096                   .dbline 66
 0096           ;     init_devices();  
 0096 EBDF              rcall _init_devices
 0098 3FC0              rjmp L17
 009A           L16:
 009A                   .dbline 68
 009A           ;     while(1) 
 009A           ;     { 
 009A                   .dbline 69
 009A           ;         switch(KeyDown)
 009A 40910000          lds R20,_KeyDown
 009E 5527              clr R21
 00A0 4130              cpi R20,1
 00A2 E0E0              ldi R30,0
 00A4 5E07              cpc R21,R30
 00A6 A9F0              breq L22
 00A8 4230              cpi R20,2
 00AA E0E0              ldi R30,0
 00AC 5E07              cpc R21,R30
 00AE D1F0              breq L23
 00B0 4330              cpi R20,3
 00B2 E0E0              ldi R30,0
 00B4 5E07              cpc R21,R30
 00B6 C9F0              breq L24
 00B8 4430              cpi R20,4
 00BA E0E0              ldi R30,0
 00BC 5E07              cpc R21,R30
 00BE C1F0              breq L25
 00C0 4530              cpi R20,5
 00C2 E0E0              ldi R30,0
 00C4 5E07              cpc R21,R30
 00C6 B9F0              breq L26
 00C8 4630              cpi R20,6
 00CA E0E0              ldi R30,0
 00CC 5E07              cpc R21,R30
 00CE B1F0              breq L27
 00D0 1AC0              rjmp L19
 00D2           X0:
 00D2                   .dbline 70
 00D2           ;           {
 00D2           L22:
 00D2                   .dbline 74
 00D2           ;           case 1:             
 00D2           ;                   //打开T/C2,选择相位可调PWM模式
 00D2           ;                       //COM2[1:0]=3正向比较输出,系统时钟64分频                       
 00D2           ;                       TCCR2|=(1<<WGM20)|(1<<COM21)|(1<<COM20)|(1<<CS22);                      
 00D2 85B5              in R24,0x25
 00D4 8467              ori R24,116
 00D6 85BD              out 0x25,R24
 00D8                   .dbline 75
 00D8           ;                   KeyDown++;
 00D8 80910000          lds R24,_KeyDown
 00DC 8F5F              subi R24,255    ; addi 1
 00DE 80930000          sts _KeyDown,R24
 00E2                   .dbline 76
 00E2           ;                   break;
 00E2 14C0              rjmp L20
 00E4           L23:
 00E4                   .dbline 78
 00E4           ;           case 2:             //恒定第电平            
 00E4           ;             OCR2 = 0x00; 
 00E4 2224              clr R2
 00E6 23BC              out 0x23,R2
 00E8                   .dbline 79
 00E8           ;               break;
 00E8 11C0              rjmp L20
 00EA           L24:
 00EA                   .dbline 81
 00EA           ;           case 3:             //恒定高电平 
 00EA           ;               OCR2 = 0xFF;
 00EA 8FEF              ldi R24,255
 00EC 83BD              out 0x23,R24
 00EE                   .dbline 82
 00EE           ;               break;
 00EE 0EC0              rjmp L20
 00F0           L25:
 00F0                   .dbline 84
 00F0           ;         case 4:             //高低电平占空比200:56
 00F0           ;               OCR2 = 56;
 00F0 88E3              ldi R24,56
 00F2 83BD              out 0x23,R24
 00F4                   .dbline 85
 00F4           ;               break;
 00F4 0BC0              rjmp L20
 00F6           L26:
 00F6                   .dbline 87
 00F6           ;           case 5:              //高低电平占空比56:200
 00F6           ;               OCR2 = 200;
 00F6 88EC              ldi R24,200
 00F8 83BD              out 0x23,R24
 00FA                   .dbline 88
 00FA           ;               break;
 00FA 08C0              rjmp L20
 00FC           L27:
 00FC                   .dbline 90
 00FC           ;           case 6:
 00FC           ;                   TCCR2=0x00;      //关闭T/C0
 00FC 2224              clr R2
 00FE 25BC              out 0x25,R2
 0100                   .dbline 91
 0100           ;                       KeyDown=0;
 0100 20920000          sts _KeyDown,R2
 0104                   .dbline 92
 0104           ;                   break;
 0104 03C0              rjmp L20
 0106           L19:
 0106                   .dbline 94
 0106           ;           default:
 0106           ;                   KeyDown=0;
 0106 2224              clr R2
 0108 20920000          sts _KeyDown,R2
 010C                   .dbline 95
 010C           ;                   break;              
 010C           L20:
 010C                   .dbline 97
 010C 20900000          lds R2,_KeyDown
 0110 25BA              out 0x15,R2
 0112                   .dbline 98
 0112 0AE0              ldi R16,10
 0114 10E0              ldi R17,0
 0116 7EDF              rcall _delay_ms
 0118                   .dbline 99
 0118           L17:
 0118                   .dbline 67
 0118 C0CF              rjmp L16
 011A           X1:
 011A                   .dbline -2
 011A                   .dbline 100
 011A           ;           }   
 011A           ;           PORTC=KeyDown;
 011A           ;               delay_ms(10);
 011A           ;     }  
 011A           ; } 
 011A           L15:
 011A                   .dbline 0 ; func end
 011A 0895              ret
 011C                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\Learn\AVR\Pro_Mega8\Timer\Timer2\Timer2.C
 0000           _KeyDown::
 0000                   .blkb 1
 0001                   .dbsym e KeyDown _KeyDown c

⌨️ 快捷键说明

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