Trích:
Nguyên văn bởi digan
hik mình mới làm truyền thông thui, khi truyền được thì mới làm các thao tác tiếp theo dc.Full code:
#include <16f877a.h>
#include <def_877a.h>
//#device *=16 ADC=8
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOWRT
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
//=================================
int buf;
// Ngat Truyen thong
#INT_RDA
Receive_isr()
{
buf=getc();
//putc(buf);
PORTB=0xF0;
}
void main()
{
// Cho phep ngat
enable_interrupts(GLOBAL); // Cho phep tao ngat
enable_interrupts(INT_EXT); // Cho phep ngat ngoai tai chan RB0/INT
enable_interrupts(INT_RDA); // Cho phep ngat ngoai tai chan RB0/INT
TRISB = 0x00; // Tat ca PORTB deu la cong xuat du lieu
// Tat het cac LED
PORTB=0x0F;
While(1)
{
}
}
|
bạn thử đổi int buf; thành char buf ;xem sao. Nếu ko được thì có lẽ là do phần cứng hoặc trình gửi trên PC thôi, mình test thử code bạn rồi, vẫn nhận được mà.Mầ bạn phải để putc(buf) lên thì mới kiểm tra được chứ! thời gian gửi tín hiệu nhanh ko kip thấy led sang đâu!)