Hi, đã làm xong phần truyền nhận RS232, nhưng mới chỉ truyền nhận được từng ký tự, chưa truyền nhận chuỗi được. Sau đây là chương trình nhận chuỗi gồm 10 ký tự, bắt đầu bằng ký tự '0', kết thúc bằng ký tự '9'. Mục tiêu là như vậy nhưng chạy thử thì chưa được. Các bạn giúp tớ 1 tay nhé:
Code:
#include <16F877A.h>
#include <def_877a.h>
#device *=16 adc=10
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use fast_io (b)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#define OK PIN_B6
#define Cancel PIN_B7
#define OK_PRESSED !input(OK)
#include <lcd_lib_4bit.c>
char mang[11];
int8 dem=0;
int1 flag;
char c;
//-----------------------------------------------------------------
void main(void)
{
int8 i;
press=0;
output_b(0xC0);
set_tris_a(0xC0);
set_tris_b(0xC1);
port_b_pullups (TRUE);
set_tris_c(0x90);
LCD_putcmd(0x01);
LCD_putcmd(0x80);
while(1)
{
if(kbhit()) {c=getc();
if(c=='0') flag=1;
if((c=='9')&&(flag==1)){flag=0; break;}
if(flag==1) {dem++; mang[dem]=c;}}
}
mang[10]='\0'; // kết thúc xâu ký tự
printf(LCD_putchar,"%s",mang); // Hiển thị lên LCD
printf("%s",mang); // truyền lên máy tính
}
Nạp chương trình và thử truyền chuỗi ký tự 0 2 3 1 6 5 4 8 7 9 xuống mà không thấy LCD hiện gì, không thấy PIC truyền gì lên máy tính luôn.