View Single Post
Old 19-09-2013, 08:19 PM   #1
thienlong586
Nhập môn đệ tử
 
Tham gia ngày: Sep 2013
Bài gửi: 2
:
giúp đỡ về mạch đếm xung có setup pic 16f877a

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);

}
}}
thienlong586 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn