Lỗi ccs timer2 pic 16f886
Mình đang lập trình quét led 7 thanh bằng timer2
file mô phỏng trong file đính kèm.
trong đoạn code in đậm khi hiển thị led 7thanh tham số "gio_dvi" cứ tăng lên đến 4 thì lại reset lại =0; trong khi ý đồ lập trình của mình là nó phải tăng lên đến 9 rồi mới reset lại =0;
code như sau:
#include <16F886.h>
#device adc=8
#FUSES WDT //Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOCPD //No EE protection
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOWRT //Program memory not write protected
#FUSES NOPUT //Power Up Timer
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(clock=4000000)
#use fast_io(B)
#use fast_io(A)
#use fast_io(C)
Unsigned char Ma_led[10]={0x05,0xDD,0x46,0x54,0x9C,0x34,0x24,0x5D,0x04,0x1 4};
Unsigned char Ma_ledc[10]={0x01,0xD9,0x42,0x50,0x98,0x30,0x20,0x59,0x00,0x1 0};
int8 giay,phut,sau_phut,gio_dvi,gio_chuc,gio_tram,dem;
//int16 dem;
#int_TIMER2
Void Dinh_thoi()
{
dem++;
while(dem==10)
{
if(sau_phut<10){sau_phut++;dem=0;}
else
{
sau_phut=0;
if(gio_dvi<10){gio_dvi++;}
else {gio_dvi=0;}
}
}
////////////////////Quet 3 led, gio hien tai/////////
///////////////////Quet led 1% gio(LED23)////////////////
output_C(0xFC);
output_B(Ma_led[sau_phut]);
delay_us(2800);
///////////////////Quet led hang gio(Led22)///////////
output_C(0xFB);
output_B(Ma_ledc[gio_dvi]);
delay_us(2800);
///////////////////Quet led hang chuc gio(Led21)///////////
output_C(0xF7);
output_B(Ma_led[gio_chuc]);
delay_us(2800);
/////////////////////Quet 4 led, gio tong///////////
////////////////////////////////////////////////////////////
////////////////////quet led hang 1% gio/////////////
output_C(0x7F);
output_B(Ma_led[sau_phut]);
delay_us(2800);
//////////////////quet led hang gio/////////////////
output_C(0xBF);
output_B(Ma_ledc[gio_dvi]);
delay_us(2800);
///////////////////Quet led hang chuc gio//////////////////
output_C(0xDF);
output_B(Ma_led[gio_chuc]);
delay_us(2800);
//////////////////Quet led hang tram gio//////////
output_C(0xEF);
output_B(Ma_led[gio_tram]);
delay_us(2800);
}
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF);
setup_spi(FALSE);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1 (T1_DISABLED);
setup_timer_2(T2_DIV_BY_16,124,10);
setup_oscillator(False);
enable_interrupts(INT_TIMER2);
enable_interrupts(GLOBAL);
set_tris_A(0x00);
set_tris_B(0x00);
set_tris_C(0x00);
sau_phut=0;gio_dvi=0;gio_chuc=0;gio_tram=0;dem=0,g iay=0;phut=0;
while(1)
{
}
}
Rất mong ae chỉ giáo!!!!!
Xin chân thành cảm ơn.
|