Ðăng Nhập

View Full Version : giúp đỡ về mạch đếm xung có setup pic 16f877a


thienlong586
19-09-2013, 08:19 PM
Chào các anh. Rất mong các anh hướng dẫn cho em vài hướng giải quyết trong đề tài đồ án em được nhận.
Em đã viết được đếm đến 9999 cấp xung từ rb0 và nút bấm hoạt động tốt, nhưng để sữ dụng 2 nút bấm lên xuống rb4 rb5 setup giá trị để mạch đếm đến giá trị đó rồi return về 0 thì em vẫn đang rối. Rất mong các anh giúp đỡ.
#include <16F877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=20000000)
#use fast_io(d)
#use fast_io(b)
#use fast_io(e)
#byte intcon=0x000B
#bit RB4=0x06.4
#bit RB5=0x06.5
#bit RBIF=intcon.0
#bit RBIE=intcon.3
int16 dem=0,nghin,tram,chuc,dv;
unsigned char MA7DOAN[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,
0x7D,0x07,0x7F,0x6F};
#int_ext
void ngat_RB0()
{
if(dem==9999)
dem=0;
++dem;

}
#int_RB

void ngat_RB()
{
if(RBIE && RBIF)

{
if(input(PIN_B4)==1)
dem--;
if(input(PIN_B5)==1)
dem++;
if(dem>9999) dem=0;


}
}
void main()
{
set_tris_b(0b11111111);
set_tris_d(0);
set_tris_e(0);
enable_interrupts(int_ext);
enable_interrupts(int_RB);
enable_interrupts(global);
ext_int_edge(H_to_L);
clear_interrupt(int_ext);
clear_interrupt(int_RB);
while(1)
{
nghin=dem/1000;
tram=((dem%1000)/100);
chuc=(((dem%1000)%100)/10);
dv=(((dem%1000)%100)%10);
{
output_d(0xbf);
output_c(MA7DOAN[dv]);
delay_ms(10);
output_d(0xdf);
output_c(MA7DOAN[chuc]);
delay_ms(10);
output_d(0xef);
output_c(MA7DOAN[tram]);
delay_ms(10);
output_d(0Xf7);
output_c(MA7DOAN[nghin]);
delay_ms(10);

}
}}