/*
Projenim Adý: 5 uçlu unipolar stepmotor kontrolü
Proje tarihi : Mart 2010
Mikro iþlemci:16f628a
Osilatör : 8Mhz ÝNTRC on I/O
Kullanýlan yapý

izi ile tablo oluþturulup hers aþamada
tablodan bilgilaer farklý zaman aralýklarý ile okunup portBye gönderilmiþtir.
Menü seçimi için INT0 kesmeesi kullanýlmýþtýr böylece program döngüden çýkar çýkmaz
yeni menüya dallanma yapar
Projeyi yapan:AYTAÇ DÜRGEN
KOCAELÝ UNÝVERSÝTESÝ
*/
short int sayac=0;
void interrupt()
{ sayac = (sayac+1)%7;
INTCON.INTF=0;
}
void ayarlar()
{
OPTION_REG = 0x00;
INTCON.GIE = 1;
INTCON.INTE = 1;
TRISB=0x01;
PORTB=0;
TRISA=0;
PORTA=0;
}
signed int a,b;
unsigned char tablo[]={2,4,8,16 };
void main()
{
ayarlar();
/********************************************/
for(;

{
PORTB=0;
/*********************************************/
if(sayac==0)
{
for(a=0;a<4;a++)
{
PORTB=tablo[a];
Delay_ms(4); // 4ms bekle
PORTA=sayac;
}
}
/********************************************/
if(sayac==1)
{
for(a=0;a<4;a++)
{
PORTB=tablo[a];
Delay_ms(80); // 80ms bekle
PORTA=sayac;
}
}
/********************************************/
if(sayac==2)
{
for(a=3;a>=0;a--)
{
PORTA=sayac;
PORTB=tablo[a];
Delay_ms(80); // 80ms bekle
}
}
/********************************************/
if(sayac==3)
{
for(a=0;a<4;a++)
{
PORTA=sayac;
PORTB=tablo[a];
Delay_ms(20); // 20ms bekle
}
}
/********************************************/
if(sayac==4)
{
for(a=3;a>=0;a--)
{
PORTA=sayac;
PORTB=tablo[a];
Delay_ms(20); // 20ms bekle
}
}
/********************************************/
if(sayac==5)
{
for(b=0;b<100;b++)
{
for(a=0;a<4;a++)
{
PORTA=sayac;
PORTB=tablo[a];
Delay_ms(5); // 5ms bekle
}
}
for(b=0;b<100;b++)
{
for(a=3;a>=0;a--)
{
PORTA=sayac;
PORTB=tablo[a];
Delay_ms(5); // 5s bekle
}
}
}
/**********************/
if(sayac==6) PORTB=0;
}
/********************************************/
}