📄 pwm.lis
字号:
.module pwm.c
.area text(rom, con, rel)
0000 .dbfile F:\开发\C程序开发\AVR\PWM\pwm.c
0000 .dbfunc e timer0_init _timer0_init fV
.even
0000 _timer0_init::
0000 .dbline -1
0000 .dbline 10
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; #define PWM0 PORTD3 //OC0 PB3
0000 ;
0000 ; volatile unsigned char T0OCR; //设置T0的时间值
0000 ;
0000 ; /*相位修正模式输出方波,64分频*/
0000 ; void timer0_init(void)
0000 ; {
0000 .dbline 11
0000 ; OCR0 = T0OCR; //设定TOP
0000 20900000 lds R2,_T0OCR
0004 2CBE out 0x3c,R2
0006 .dbline 14
0006 ; // TOP=8000000/(2*64*1000)-1=61.5 选61 1.008KHz(0.992mS)
0006 ; // TOP=8000000/(2*64*2000)-1=30.25 选30 2.016KHz(0.496ms)
0006 ; TCCR0 = (0<<WGM01)|(1<<WGM00)|(1<<COM01)|(0<<COM00)|(0<<CS02)|(1<<CS01)|(1<<CS00);
0006 83E6 ldi R24,99
0008 83BF out 0x33,R24
000A .dbline -2
000A L1:
000A .dbline 0 ; func end
000A 0895 ret
000C .dbend
000C .dbfunc e main _main fV
.even
000C _main::
000C .dbline -1
000C .dbline 18
000C ; }
000C ;
000C ; void main(void)
000C ; {
000C .dbline 20
000C ; //上电默认DDRx=0x00,PORTx=0x00 输入,无上拉电阻
000C ; PORTA =0xFF; //不用的管脚使能内部上拉电阻。
000C 8FEF ldi R24,255
000E 8BBB out 0x1b,R24
0010 .dbline 21
0010 ; PORTC =0xFF;
0010 85BB out 0x15,R24
0012 .dbline 22
0012 ; PORTB =~ (1<<PWM0);
0012 87EF ldi R24,247
0014 88BB out 0x18,R24
0016 .dbline 23
0016 ; DDRB = (1<<PWM0);
0016 88E0 ldi R24,8
0018 87BB out 0x17,R24
001A .dbline 25
001A ;
001A ; T0OCR=0x40;
001A 80E4 ldi R24,64
001C 80930000 sts _T0OCR,R24
0020 .dbline 26
0020 ; timer0_init();
0020 EFDF xcall _timer0_init
0022 .dbline 27
0022 ; SEI(); //使能全局中断
0022 7894 sei
0024 .dbline -2
0024 L2:
0024 .dbline 0 ; func end
0024 0895 ret
0026 .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\开发\C程序开发\AVR\PWM\pwm.c
0000 _T0OCR::
0000 .blkb 1
0001 .dbsym e T0OCR _T0OCR c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -