gửi kí tự nhận, gửi chuỗi ko nhận RS232?
em có thử viết CCS cho pic 16f877a giao tiếp qua máy tính, nhưng chỉ truyền kí tự thì nhận tốt, còn chuỗi thì không nhận ji cả, code như sau:
Đây là mã nhận kí tự ok:
Code:
#include <16f877a.h>
#include <def_877a.h>
#device *=16
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#include <lcd_lib_4bitm.c>
char c;
#int_rda // ngat khi da co du lieu truyen thanh cong qua cong COM
void receive_isr()
{
c=getc(c); // thu du lieu nhan duoc cat giu vao bien c
LCD_putcmd(0x80);
printf(lcd_putchar,"nhan duoc:%c ",c); // in ra cho biet nhan dc
}
VOID main()
{
ENABLE_INTERRUPTS(INT_RDA); // ngat khi data nhan tu RS232 san sang
ENABLE_INTERRUPTS(GLOBAL); // ngat toan cuc
trisb7=0;
trisb6=1;
TRISE=0X00; // portE: cong xuat du lieu (dieu khien cac chan E|R/W|RS cua LCD)
TRISD=0X00; // portB: cong xuat du lieu (du lieu tren man hinh LCD)
LCD_init(); // khoi tao LCD
while(1)
{
}
}
Giờ thay đuổi biến kí tự c thành mảng kí tự c thì ko nhận đc ji cả --> ngắt ko xảy ra?
Code:
#include <16f877a.h>
#include <def_877a.h>
#device *=16
#use delay(clock=20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT,NOLVP, NOCPD, NOWRT
#include <lcd_lib_4bitm.c>
char c[80];
#int_rda // ngat khi da co du lieu truyen thanh cong qua cong COM
void receive_isr()
{
gets(c); // thu du lieu nhan duoc cat giu vao c
LCD_putcmd(0x80);
printf(lcd_putchar,"nhan duoc:%s ",c); // in ra cho biet nhan dc
}
VOID main()
{
ENABLE_INTERRUPTS(INT_RDA); // ngat khi data nhan tu RS232 san sang
ENABLE_INTERRUPTS(GLOBAL); // ngat toan cuc
trisb7=0;
trisb6=1;
TRISE=0X00; // portE: cong xuat du lieu (dieu khien cac chan E|R/W|RS cua LCD)
TRISD=0X00; // portB: cong xuat du lieu (du lieu tren man hinh LCD)
LCD_init(); // khoi tao LCD
while(1)
{
}
}
Anh Bắc, anh Falleft có vô chỉ dùm hay ai nhiều túi biết cái này cũng đc, chỉ giùm với, thanks nhiều!
|