Ðăng Nhập

View Full Version : Cần giúp sửa lỗi code


foremostpirate
02-04-2011, 11:23 PM
Em mới học PIC, em viết đoạn code nay chưa chạy nhưng không hiểu nguyên nhân mong các anh giúp đỡ.
#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC=8
#FUSES NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP
#use delay(clock=4000000)
#use fast_io(A)
#use fast_io(B)
#use fast_io(C)
//Khai bao ham
void dkdcbuoc();
unsigned int16 count;
#INT_EXT
void EXT_ngat()
{
output_C(0x01);
delay_ms(1000);
dkdcbuoc();
count=0;
}
//Chuong trinh ngat TMR0
#int_timer0
void interrupt_timer0()
{
set_timer0(6);
++count;
if(count == 20000) // 20000*500us = 1000000us = 10s
{
count=0;
output_C(0x00);
}
}
void main(void)
{
SET_TRIS_A(0x00);
SET_TRIS_B(0xff);
SET_TRIS_C(0x00);
enable_interrupts(GLOBAL);
enable_interrupts(INT_EXT);
ext_int_edge(0,H_to_L);
PORT_B_pullups(1);
enable_interrupts(int_timer0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2);
set_timer0(6);

output_C(0x01);
}

void dkdcbuoc()
{
SET_TRIS_A(0x00);
SET_TRIS_C(0x00);
unsigned int16 i;
unsigned int8 goc;
CONST unsigned quayT[4]={0x01,0x04,0x02,0x08};
CONST unsigned quayN[4]={0x08,0x02,0x04,0x01};
i=0;
for(goc=0;goc<=50;goc++) //Dong co quay thuan
{
output_A(quayT[i]);
delay_ms(200);
i++;
if(i==4)
{
i=0;
}
}
delay_ms(1000);
i=0;
for(goc=0;goc<=51;goc++) //Dong co quay nghich
{
output_A(quayN[i]);
delay_ms(200);
i++;
if(i==4)
{
i=0;
}
}

}