PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   PIC - Thiết kế và Ứng dụng (http://www.picvietnam.com/forum/forumdisplay.php?f=23)
-   -   Chương trình không vào ngắt được (http://www.picvietnam.com/forum/showthread.php?t=7627)

troiuuuu 28-12-2010 05:38 PM

Chương trình không vào ngắt được
 
Chào cả nhà!Mọi người xem sao đoạn code của mình chương trình nó không vào ngắt dc?
#include<16f877a.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#use delay(clock=4000000)
#use fast_io(b)
#byte intcon=0x0B
#byte portb=0x06
#byte portd=0x08
#byte intcon=0x0B
#bit RB4=portb.4
#bit RB5=portb.5
#bit RB6=portb.6
#bit RB7=portb.7
#bit RBIF=intcon.0 //dinh nghia co ngat RB
#bit RBIE=intcon.3 //dinh nghia bit cho phep ngat RB
#int_RB
int8 a;
void ngat_RB()
{
if(RB4==0)
{
while(1);
{
//Khong lam gi het
}
}
if(RB5==0)
{
while(1);
{
//Khong lam gi het
}
}
if(RB6==0)
{
while(1);
{
//Khong lam gi het
}
}
if(RB7==0)
{
while(1);
{
//Khong lam gi het
}
}
}

main()
{
set_tris_b(0b11110000);
set_tris_d(0);
enable_interrupts(global);
enable_interrupts(int_RB);
ext_int_edge(H_to_L);
while(true)
{
a=a<<1;
if(a==256)
{
a=1;
}
portd=a;
delay_ms(100);
}
}

troiuuuu 29-12-2010 04:47 PM

1 Attachment(s)
Không ai giúp hết vậy?????????????

nhiot081290 30-12-2010 04:41 PM

trong chuong trinh ngắt chỉ cần 1 lệnh thui
ví dụ như khi nhấn thì portd =0 hay =0xFF ( tùy theo yeu cau)

troiuuuu 31-12-2010 08:40 AM

Trích:

Nguyên văn bởi v2cuong (Post 41154)
Làm sao bạn biết được là không vào ngắt ? Dấu hiệu nào ?

Thì mình thử Protect mà sao khi nhấn nút kết nối từ PortB(RB4-->RB7) thì nó không có hiện tượng gì hết,lẽ ra Led phải dừng lại chứ.

hoc_picpicpic 31-12-2010 10:28 AM

#include<16f877a.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#use delay(clock=4000000)
#use fast_io(b)
#byte intcon=0x0B
#byte portb=0x06
#byte portd=0x08
#byte intcon=0x0B
#bit RB4=portb.4
#bit RB5=portb.5
#bit RB6=portb.6
#bit RB7=portb.7
#bit RBIF=intcon.0 //dinh nghia co ngat RB
#bit RBIE=intcon.3 //dinh nghia bit cho phep ngat RB
#int_RB
int8 a; // Doi cho~ cai' nay` cho #int_RB "Sai o day" (^_^) ***
void ngat_RB()
{
if(RB4==0)
{
while(1);
{
//Khong lam gi het
}
}
if(RB5==0)
{
while(1);
{
//Khong lam gi het
}
}
if(RB6==0)
{
while(1);
{
//Khong lam gi het
}
}
if(RB7==0)
{
while(1);
{
//Khong lam gi het
}
}
}

main()
{
set_tris_b(0b11110000);
set_tris_d(0);
enable_interrupts(global);
enable_interrupts(int_RB);
ext_int_edge(H_to_L);
while(true)
{
a=a<<1;
if(a==256)
{
a=1;
}
portd=a;
delay_ms(100);
}
}


Đổi chỗ khai bao' bien' a cho #int_RB la chay dc

troiuuuu 01-01-2011 12:13 PM

Cám ơn bạn nhiều!Mà bạn cho mình hỏi tại sao lại đổi chỗ nó mới chạy ngắt dc??

hoc_picpicpic 03-01-2011 02:43 AM

sau khi khai báo #int_RB thi viết luôn chương trình ngắt bên dưới. bài lập trình của bạn CCS coi như chưa viết hàm ngắt


Múi giờ GMT. Hiện tại là 02:50 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam