Trích:
Nguyên văn bởi tumi_kt
Mình có đoạn code dùng ngắt RB trên 3 pin RB4-RB6.ý tưởng là ứng với từng phím nhấn sẽ làm LED nháy theo 1 kiểu khác nhau.nhưng sao code ko chạy nhỉ?bro nào biết lỗi này nằm ở đâu ko?chỉ giúp mình với. code mình như sau: thankssssssss!!!!!!!!
#include <16f877a.h>
#include <def_16f877a.h>
#fuses NOPROTECT,HS,NOWDT
#use delay(clock=2000000)
char kieu_led;
void chuong_trinh();
#int_rb
void rb_isr()
{
chuong_trinh();
}
void chuong_trinh()
{
if(!input(pin_b4))
portd=0xff;
else if(!input(pin_b5))
portd=0x00;
else if(!input(pin_b6))
portd=0x0f;
}
void main()
{
trisb=0xf0;//portb input
trisd=0x00;//portd output
enable_interrupts(global);
enable_interrupts(int_rb);
ext_int_edge(h_to_l);
while(1)
{
chuong_trinh();
}
}
|
bài này sửa như sau:
Code:
#include <16f877a.h>
#include <def_16f877a.h>
#fuses NOPROTECT,HS,NOWDT
#use delay(clock=2000000)
char kieu_led;
#int_rb
void rb_isr()
{
delay_ms(10);//chống dội phím
if(!input(pin_b4))
{
portd=0xff;
while(!input(pin_b4))//chờ nhả phím
{
}
delay_ms(10);//chống dội phím
}
else if(!input(pin_b5))
{
portd=0x00;
while(!input(pin_b5))//chờ nhả phím
{
}
delay_ms(10);//chống dội phím
}
else if(!input(pin_b6))
{
portd=0x0f;
while(!input(pin_b6))//chờ nhả phím
{
}
delay_ms(10);//chống dội phím
}
}
void main()
{
trisb=0xf0;//portb input
trisd=0x00;//portd output
port_b_pullups(true);
enable_interrupts(global);
enable_interrupts(int_rb);
ext_int_edge(h_to_l);
while(1)
{
}
}
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
thay đổi nội dung bởi: tdm, 21-01-2011 lúc 01:03 PM.
Lý do: bỏ code vào thẻ
|