PIC ödevimi anlamadım. Konu: zamanlayıcı/sayıcı MicroC'de kesme alt programını kullan

morinel

Üye
Katılım
2 Ağu 2010
Mesajlar
184
Puanları
1
Yaş
43
PIC16F877A kullanarak Proteus'ta devreyi tasarlıyoruz. Kodları MicroC'de yazıp .coff file olarak PIC'e aktarıyoruz. Bu haftaki ödevi ama hiç anlamadım. Bu konuda kod yazma yardımı isteyeceğim. 15 numaralı bacağa PULSE bağlı. 8-9-10'da logicstate var.
MicroC Pro for PIC kullanıyoruz.

devre.jpg
Kodumuz şu:
Kod:
void kur ()
{
PORTA=0X00;
PORTB=0X00;
PORTC=0X00;
PORTD=0X00;
PORTE=0X00;
ADCON1=0B10000110;
TRISA=0X00;
TRISB=0X00;
TRISC=0X00;
TRISD=0X00;
TRISE=0B00000111;
TMR0=0;
OPTION_REG=0B00000010;
INTCON,TMR0IE_bit=1;
INTCON,GIE_bit=1;
INTCON,PEIE_bit=1;
INTCON,TMR0IF_bit=0;
TMR1L=0x00;
TMR1H=0x80;
T1CON=0B00001111;
PIR1,TMR1IF_bit=0;
PIE1,TMR1IE_bit=1;
}
void interrupt(void)
{
if (PIR1,TMR1IF_bit==1)
{
PIR1,TMR1IF_bit=0;
TMR1L=0x00;
TMR1H=0x80;
PORTD=PORTD^0x0F;
}
if (INTCON,TMR0IF_bit==1)
{
INTCON,TMR0IF_bit=0;
PORTD=PORTD^0xF0;
}
}
void sifirla ()
{
PORTA=0X00;
PORTB=0X00;
PORTC=0X00;
PORTD=0X00;
}
void main() {
kur();
while(1)
{
//sifirla();
}}

Soru 1: bu kod ne işe yarıyor? PULSE için VLow=0V Vhigh=5V start=0 risetime=1u fall time 1u pulse width=%50 FreQ=32.768kHz

Diğer sorular:
1. Timer0'in önbölücü değerini 1:4 ve 1:8 olarak değiştirerek sonucu gözlemleyin.
2. RA4 pinine bir kare dalga sinyal üreteci bağlayın. Timer0 modülünü RA4 pininden gelen
harici sinyali sayacak şekilde kurun. Bu şekilde Timer0'in 200 ms'de bir kesme vermesini
sağlayın.
3. Timer1 modülünü, RC0 pinine bağlı olan sinyal üretecinin frekansını değiştirmeden, 250
ms'de bir kesme verecek şekilde ayarlayın.
Not: Her kesme verildiğinde PortD'ye bağlı olan LED'lerin örnek koddaki gibi yanıp
sönmelerini sağlayın.


Kısaca bu haftanın tam anlamadığım ödev konusunda yardıma ihtiyacım var.
 

Forum istatistikleri

Konular
127,950
Mesajlar
913,851
Kullanıcılar
449,598
Son üye
kadir12366

Yeni konular

Geri
Üst