View Single Post
Old 11-05-2008, 09:53 AM   #34
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Mình không có viết kiểu này. Mình dùng ngắt để nhận ký tự trên máy tính truyền xuống. Với đoạn code trên , nếu là mình thì sẽ viết như sau :
Code:
#include <16f877a.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT,NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use rs232(baud=9600, parity=N, xmit=pin_C6, rcv=pin_C7, bits=9)
char t;
#INT_RDA
void rda_isr()
{
t=getc()            ;
}
void main()
{
enable_interrupts(INT_RDA)       ;        
enabled_interrupts(GLOBALS)     ;
while(1)
{
putc(t)                                  ;
}
}
Khi trên máy tính truyền xuống hết 1 byte thì ngắt INT_RDA xảy ra. Chương trình ngắt được thực hiện, biến t sẽ nhận 1 byte truyền xuống đó. Sau đó nó thoát ra chương trình ngắt và lặp vòng trong lệnh while(1).
Bạn thử viết kiểu này được không.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn