۰۴-خرداد-۱۳۸۸, ۱۹:۴۹:۴۲
سلام من زیاد با avr کار نکرده ام می خوام با atmega16 بتونم duty cycle موج pwm رو با استفاده از دو کلید high و low کنترل کنم اگه ممنکه منو در شکل مدار و برنامه لازم راهنماییم کنین مرسی.
$regfile = "m16def.dat" : $crystal = 4000000
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up , Prescale = 64
Start Timer1 : Pwm1b = 127 : Pwm1a = 127
Ddrb = 0 : Portb = 3
Dim Piwm As Byte
Do
Debounce Pinb.0 , 0 , Incr_pwm , Gosub
Debounce Pinb.1 , 0 , Decr_pwm , Gosub
Loop
Incr_pwm:
If Piwm <> 255 Then Incr Piwm
Pwm1b = Piwm : Pwm1a = Piwm
Return
Decr_pwm:
If Piwm <> 0 Then Decr Piwm
Pwm1b = Piwm : Pwm1a = Piwm
Return
$regfile = "m16def.dat" : $crystal = 4000000
Config Lcdpin = Pin , Db4 = Pinc.3 , Db5 = Pinc.2 , Db6 = Pinc.1 , Db7 = Pinc.0 , Rs = Pinc.7 , E = Pinc.6
Config Lcd = 16 * 2 : Cursor Off : Cls
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Up , Prescale = 64
Start Timer1 : Pwm1b = 127 : Pwm1a = 127
Ddrb = 0 : Portb = 3
Dim Piwm As Byte
Do
Debounce Pinb.0 , 0 , Incr_pwm , Gosub
Debounce Pinb.1 , 0 , Decr_pwm , Gosub
Loop
Incr_pwm:
If Piwm <> 255 Then Incr Piwm
Pwm1b = Piwm : Pwm1a = Piwm
Home : Lcd Piwm ; " "
Return
Decr_pwm:
If Piwm <> 0 Then Decr Piwm
Pwm1b = Piwm : Pwm1a = Piwm
Home : Lcd Piwm ; " "
Return