CCS C PIC Timer0 kesmesi ile PWM kontrolü YARDIM

ilkersatur

Yeni Üye
Katılım
17 Haziran 2022
Mesajlar
3
Merhabalar, bütünleme sınavım için çalışmaktayım. Takıldığım bir konu var. Mikroişlemci alanına hakim olanlar yardımcı olursa çok sevinirim.
Timer0 kesmesi aktif edilmiştir.
PIN_B7 1KHz'lik PWM işaret üretecektir.
PWM duty değeri PIN_B6 gelen sinyal lojik "1" ise %60, "0" ise %40 olacaktır.
PIN_B6 lojik seviye, ana program tarafından izlenerek pwm duty değerinin değişimi timer0 kesme alt programı tarafından ayarlanacaktır.
CCS C yazılımı nasıl olmalıdır?
 

Ekler

  • Ekran görüntüsü 2022-06-17 001323.png
    Ekran görüntüsü 2022-06-17 001323.png
    10.1 KB · Görüntüleme: 102
yaptığınız yere kadar atın tamamlamanıza yardımcı olmayı deneriz.
 
#include <main.h>
#byte sfr_t0l=0xFD6
#byte sfr_t0h=0xFD7
int8 t0l_ton;
int8 t0h_ton;
int8 t0l_toff;
int8 t0h_toff;
int16 sayi;
int16 sayi1;

#byte sfr_t0con=0xFD5
#bit tmr0on=sfr_t0con.7
#bit t08bit=sfr_t0con.6
#bit t0cs=sfr_t0con.5
#bit t0se=sfr_t0con.4
#bit psa=sfr_t0con.3
#bit t0ps2=sfr_t0con.2
#bit t0ps1=sfr_t0con.1
#bit t0ps0=sfr_t0con.0


#byte sfr_intcon=0xFF2
#bit sfr_gie=sfr_intcon.7
#bit sfr_tmr0ie=sfr_intcon.5
#bit sfr_t0if=sfr_intcon.2

#INT_TIMER0
void tmr0(void)
{

while(TRUE)

if (input(PIN_B6)==1)
{
output_high(PIN_B7);

sfr_t0l=t0l_ton;
sfr_t0h=t0h_ton;
}
else
{

output_low(PIN_B7);

sfr_t0l=t0l_toff;
sfr_t0h=t0h_toff;

}
}
void timer0_ayar(void);
void timer0_kesme_ayar(void);

void main()
{

timer0_ayar();
timer0_kesme_ayar();

tmr0on=1;
sfr_tmr0ie=1;


}
void timer0_ayar(void)
{
tmr0on=0;
t08bit=0;
t0cs=0;//timer
t0se=0;
psa=1;
t0ps2=0;
t0ps1=0;
t0ps0=0;

sayi=65535;
sayi-=600;
t0h_ton=make8(sayi,1);
t0l_ton=make8(sayi,0);

sayi1=65535;
sayi1-=400;
t0h_toff=make8(sayi1,1);
t0l_toff=make8(sayi1,0);
}

void timer0_kesme_ayar(void)
{
sfr_gie=1;
sfr_t0if=0;
}
 
C++:
if (input(PIN_B6)==1)
{
output_high(PIN_B7);

sfr_t0l=t0l_ton;
sfr_t0h=t0h_ton;
}
zaten okuyorsunuz
1(hıgh) ise b7'yi hıgh yapıyorsunuz

0 konumunu'da görmek isterseniz;
else veya if (input(PIN_B6)==0) olarak ekleyin devamına
 

Forum istatistikleri

Konular
5,911
Mesajlar
100,870
Üyeler
2,500
Son üye
Muhammet Salih Albayrak

Son kaynaklar

Son profil mesajları

Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
Back
Top