پاسخ : ارتباط سریال در pic
سلام دوستان
میشه لطف کنید و منم راهنمایی بفرمایید.
می خواستم با pic یه rfid راه بندازم. بدون استفاده از وقفه پورت سریال با دستور getc راحت کد تک را دریافت می کردم اما وقتی خواستم با وقفه پورت سریال کار کنم به مشکل بر خوردم.اولا که کد تک را به درستی نشون نمی داد. دوما یه چند تا عدد عجیب غریب هم روی lcd نشون میداد. درضمن اصلا اعداد پاک هم نمی شدن.
این برنامه را هم که اینجا قراردادین تست کردم اما جواب نداد.لطفا اگه امکانش هست راهنماییم بفرمایید
با تشکر
اینم کد:
[code=c]
#include <18f4550.h>
#use delay(int=8mhz)
#use rs232(baud=9600,xmit=pin_c6, rcv=pin_c7)
#define use_portd_lcd true
#include <lcd.c>
char c;
char buffer[32];
int i=0;
#int_RDA
void serial_isr() {
c=getc();
buffer[i]=c;
i++;
if(i==31)
{
i=0;
}
}
void main()
{
enable_interrupts(int_rda);
enable_interrupts(GLOBAL);
lcd_init();
while(true)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"%c",buffer);
delay_ms(2000);
lcd_init();
}
}
[/code]
سلام دوستان
میشه لطف کنید و منم راهنمایی بفرمایید.
می خواستم با pic یه rfid راه بندازم. بدون استفاده از وقفه پورت سریال با دستور getc راحت کد تک را دریافت می کردم اما وقتی خواستم با وقفه پورت سریال کار کنم به مشکل بر خوردم.اولا که کد تک را به درستی نشون نمی داد. دوما یه چند تا عدد عجیب غریب هم روی lcd نشون میداد. درضمن اصلا اعداد پاک هم نمی شدن.
این برنامه را هم که اینجا قراردادین تست کردم اما جواب نداد.لطفا اگه امکانش هست راهنماییم بفرمایید
با تشکر
اینم کد:
[code=c]
#include <18f4550.h>
#use delay(int=8mhz)
#use rs232(baud=9600,xmit=pin_c6, rcv=pin_c7)
#define use_portd_lcd true
#include <lcd.c>
char c;
char buffer[32];
int i=0;
#int_RDA
void serial_isr() {
c=getc();
buffer[i]=c;
i++;
if(i==31)
{
i=0;
}
}
void main()
{
enable_interrupts(int_rda);
enable_interrupts(GLOBAL);
lcd_init();
while(true)
{
lcd_gotoxy(1,1);
printf(lcd_putc,"%c",buffer);
delay_ms(2000);
lcd_init();
}
}
[/code]
دیدگاه