Ðề tài: ngắt onchange RB
View Single Post
Old 21-01-2011, 12:59 PM   #4
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi tumi_kt View Post
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ẻ
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn