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