Timer0 Kesme Denemesi,Döngüye girmeme sorunu(düzeldi)

Başlatan NaMcHo, 28 Ağustos 2010, 17:40:18

NaMcHo

#include <htc.h>
#include "delay.h"
#include "lcd216_benim.h"

int display[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
int x=0,y=0;
void main(void)
{
	ADCON1=0x07;

	TRISA=0x10;		PORTA=0;
	TRISB=0;		PORTB=0;
	TRISC=0;		PORTC=0;
	TRISD=0;		PORTD=0;

	TMR0=255;
	T0SE=0;
	T0CS=1;
	PSA=1;
	PS0=0;
	PS1=0;
	PS2=0;
	T0IF=0;
	T0IE=1;	
	GIE=1;

	lcd_hazirla();
	imlec(1,1);
	DelayMs(10);
	lcd_yaz("Hazir olun!");
	for(x=1;x<=10;x++)
	DelayMs(200);
	imlec(2,1);
	lcd_yaz("NaMcHo Geliyor?");
	for(x=0;x<10;x++)
	DelayMs(100);
	lcd_temizle();
	DelayMs(2);
	while(1);
	{
		imlec(1,1);
		DelayMs(2);
		lcd_yaz("SayaciSaydirmak");
		for(x=0;x<10;x++)
		DelayMs(100);
		imlec(2,1);DelayMs(2);
		lcd_yaz("IcinButona Bas.");
		for(x=0;x<10;x++)
		DelayMs(100);
		lcd_temizle();
	}
}

static void interrupt kesme(void)
{
	if(T0IF)
	{
		GIE=0;
		PORTD=display[y];
		y++;
		if(y>9)
		y=0;
	

	}
               	TMR0=255;
		T0IF=0;
		GIE=1;
}

while döngüsünden once lcd ye istediğim ifade yazılıyor fakat while döngüsüne girmiyor,nasıl düzeltebilirim sorunu?
Isis,cof,hex dosyaları : http://hotfile.com/dl/65304288/a6bc1b8/karma_deneme1.rar.html

Konu silinebilir baya gereksiz birsey oldu :)
While sonuna ; koymusum el alışkanlıgı :)

acemi2010

#1
Merhabalar;
Ben genelde programlarımda, devremdeki tüm konfigürasyonları tamamlayıp start-up şartları tamamen yerine getirildikten sonra Interrupt'ı (veya interruptları) aktif hale getiriyorum.

Sizin programınızda, LCD henüz konfigüre olmaya ( lcd_hazırla(); ) zaman bulamamışken, program TOCKI pininden gelen bir sinyal ile interrupt'a girebilir. Eğer girerse ne olur acaba?
Saygılarımla
Timuçin

EDİT : Hocam özür diliyorum; ISR (Interrupt Service Routine) 'de port'a yazılıyormuş ben sanki LCD'ye yazılıyormuş gibi görmüşüm. Kusuruma bakmayın lütfen




NaMcHo

Merhabalar acemi2010
Ben genelde programlarımda, devremdeki tüm konfigürasyonları tamamlayıp start-up şartları tamamen yerine getirildikten sonra Interrupt'ı (veya interruptları) aktif hale getiriyorum.
Şu önerinizle birkaç şeyi daha fark ettim,teşsekkürler yorumunuz için.
Bu tarz öneriler yeni başlayan icin cok faydalı oluyur 8)

İyi günler.