rem 《AVR單片機basIc語言編程及開發(fā)》數(shù)字PWM功能------Proteus 仿真
rem Created: 周六 11月 2 2019 taotie
rem Processor: ATmega8
rem Compiler: BASCOM-AVR
rem Write your code here
$regfile = "m8def.dat"
$crystal = 8000000
$baud = 9600
dim e as Word, f as Word '比較值變量
config TIMER1=PWM,PWM=10, compare a PWM = clear up, compare b PWM= clear down, prescale=8
'配置t/c1作pwm。pwm分辨率為10 位長度 。pwm1a和pwm1b分別作正向清零和反向清零。計數(shù)器預分頻8
DDRB=&B00000110 'PB1,PB2為輸出
CONFIG INT0=rising ' 配置外部中斷INT0,INT1中斷時分別對比較值作加減計算
CONFIG INT1=rising 'Low Level低 rising 上 falling下
ON INT0 ISR0 '中斷發(fā)生時子程序標號
ON INT1 ISR1
ENABLE INT0 '開放中斷
ENABLE INT1
ENABLE INTERRUPTS '開放全局中斷
EERO:
INPUT "輸入大于0,小于1023的PWM1A值E : ",E '鍵盤輸入比較值E
if e>1022 THEN GOTO EERO
FERO:
INPUT "輸入大于0,小于1023的PWM1B值F : " ,F '鍵盤輸入比較值F
if f>1022 THEN GOTO FERO
PWM1A=E 'PWM比較寄存器置入初值E,F
PWM1B=F
START TIMER1 '啟動TIMER1
DO
IDLE ' 空閑方式睡眠狀態(tài)
LOOP
END
ISR0: ' int0中斷發(fā)生時子程序
IF E<1023 THEN E=E+20 ' E,F加一,更改比較寄存器值
IF E>1022 THEN E=1022
IF F<1023 THEN F=F+20
IF F >1022 THEN F =1022
PWM1A=E
PWM1B=F
PRINT "向上輸出E值";E
PRINT "向上輸出F值";F
RETURN
ISR1: ' int1中斷發(fā)生時子程序
IF E>20 THEN E=E-20 'E,F減一,更改比較寄存器值
IF E< 0 THEN E=1
IF F>20 THEN F=F-20
IF F< 0 THEN F=1
PWM1A=E
PWM1B=F
PRINT "向下輸出E值";E
PRINT "向下輸出F值";F
RETURN
捕獲pwm.PNG (360.84 KB, 下載次數(shù): 99)
下載附件
2019-11-10 13:47 上傳
|