View Single Post
Old 08-12-2009, 06:22 PM   #1
tkpro
Đệ tử 4 túi
 
Tham gia ngày: Jul 2008
Bài gửi: 61
:
Trích:
Nguyên văn bởi dung h View Post
thì bạn cứ khai báo như bình thường
enable_interrupts(INT_EXT) //sử dụng ngắt INT0
enable_interrupts(INT_EXT1) // INT1

ext_int_edge( H_TO_L ); // chọn cạnh sườn xung gây ra ngắt INT0 H_TO_L hoặc
// L_TO_H
ext_int_edge( 1,H_TO_L ); // cho INT1
enable_interrupts(GLOBAL) // cho phép ngắt toàn cục

sau khi khai báo song thì mỗi khi có thay đổi ở chân INT0,INT1 thì ct nhảy đến ct ngắt
#INT_EXT
void ngat_ext()
{
// cong viec
}
bạn viết thử xem!
cám on bạn
vấn đề là ở chỗ thằng INT0, lúc trước tôi viết:
#INT_EXT0
void ngat_ext()
{
// cong viec
}
enable_interrupts(INT_EXT0) nó báo lỗi ngay

còn thằng INT1 thì Ok
chương trình chạy được, mong bà con tham khảo và cho ý kiến
//-----------------
#include<18f4550.h>
#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#use delay(clock = 20000000)
#use rs232(baud=9600,parity=n,xmit=pin_C6,rcv=pin_C7)
# byte portA=0xf80
# byte portB=0xf81
# byte portC=0xf82
# byte portD=0xf83
# byte portE=0xf84
// cac pin cong A
#bit a0 = portA.0
#bit a1 = portA.1
#bit a2 = portA.2
#bit a3 = portA.3
#bit a4 = portA.4
#bit a5 = portA.5
#bit a6 = portA.6
#bit a7 = portA.7
//----cac pin cong B--
#bit b0 = portB.0
#bit b1 = portB.1
#bit b2 = portB.2
#bit b3 = portB.3
#bit b4 = portB.4
#bit b5 = portB.5
#bit b6 = portB.6
#bit b7 = portB.7
// cac pin cong C
#bit c0 = portC.0
#bit c1 = portC.1
#bit c2 = portC.2
#bit c3 = portC.3
#bit c4 = portC.4
#bit c5 = portC.5
#bit c6 = portC.6
#bit c7 = portC.7
// cac pin cong D
#bit d0 = portD.0
#bit d1 = portD.1
#bit d2 = portD.2
#bit d3 = portD.3
#bit d4 = portD.4
#bit d5 = portD.5
#bit d6 = portD.6
#bit d7 = portD.7
// cac pin cong E
#bit e0 = portE.0
#bit e1 = portE.1
#bit e2 = portE.2

//void bit_to_byte( )
//////////////////////////
//signed char i;
char j;
char k,mode;
char i=0;
// Ngat ngoai 0(EXT0)

# int_ext
void EXT_ISR()
{
mode++;
if(mode==100)mode=0;
}

// Ngat ngoai 1(EXT1)
///*
# int_ext1
void EXT_ISR1()
{
i++;
if(i==100)i=0;
}
//*/
///////////////////////
# int_rda
void nhan()
{
delay_us(100);
j=getc();
//portA=j;
}
void main()
{
set_tris_b(255);
set_tris_d(255);
set_tris_a(255);
enable_interrupts(int_rda);
enable_interrupts(INT_EXT);// cho EXT0
enable_interrupts(INT_EXT1); // cho EXT1
/////////////////////////
ext_int_edge(H_TO_L); // select interrups
ext_int_edge(1,L_TO_H ); // cho EXT1
enable_interrupts(global);
while(true)
{
//for(k=1;k<=100;k++)
//{
putc(i);
delay_ms(1000);
//}
}
}

thay đổi nội dung bởi: tkpro, 09-12-2009 lúc 02:38 PM. Lý do: Post cho anh e tham khao
tkpro vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn