16f84 de pwm olurmu olur

Başlatan Tarik konca, 30 Ağustos 2023, 15:37:45

Tarik konca

buda 16f84 icin pwm eksik kalmasin yaziktir eminim hala sizde de  vardir

pwm frekansi 16000 hz 20 mhz kristalle

yanlis hatirlamiyorsam 16f84 de ve 16f877 de soyle bir durum vardi

uzerinde 16f84-04 16f84-10 16f84-20 gibi ifadeler vardi sonundaki rakam maksimum

calisma frekansi icindi aynisini 16f877 de de gormustum dikkat edin kristal takarken

sonradan artik bu olayi iptal ettiler

cok eski bir mcu olmasina ragmen hala piyasada var bende de kalmis bir kac tane

timer0 ile yapilan pwm kendi halinde calisiyor size pek bir zarari yok

interrupt rutini icinde.

pwm i kontrol icin adc pini olmadigi icin for next dongusunde pwm degerini arttirip azalttim

akliniz karismasin siz butonla kontrol edebilirsiniz isterseniz

ana programda baska isler yapabilirsiniz sadece delay kullandiginiz yerlerde biraz sasirtir okadar

mikrobasic ve proteus dosyalari ekde


program MyProject
dim pwm0_duty ,pwm1_duty ,pwm2_duty ,tmr0_duty,tmr0_tmp ,tmr1_duty,tmr1_tmp ,tmr2_duty ,tmr2_tmp, sayac as byte

sub procedure interrupt() iv 0x0004 ics ICS_AUTO
 if  intcon.TMR0IF=1 then
   if portb.0=1 then
     tmr0_tmp=tmr0_duty
   end if
   if portb.0=0 then
     tmr0_tmp=255-tmr0_duty
     tmr0_duty=pwm0_duty
   end if
   portb.0=not portb.0
   tmr0=tmr0_tmp
   intcon.TMR0IF=0
   INTCON.5=1
end if

end sub

main:
trisa=255
trisb=0
portb=255
INTCON = %11100000
OPTION_REG = %00001000

pwm_set:

while(true)
    
for  sayac=0 to 255 step 1
pwm0_duty=sayac
delay_ms(1)
next  sayac

for  sayac=255 to 0 step -1
pwm0_duty=sayac
delay_ms(1)
next sayac

wend

end.



Tek Care Format C:

Powered by EzPortal