PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp cổng COM và LPT

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Giao tiếp cổng COM và LPT RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 27-05-2014, 01:51 AM   #31
dungsinh
Nhập môn đệ tử
 
Tham gia ngày: Oct 2009
Bài gửi: 1
:
Xin hỏi về nhận và xử lý chuỗi trong Pic

Xin chào các anh, em đang làm về giao tiếp RS232 từ PC xuống Pic nhưng đang bị vướng mong các anh chỉ giúp. Yêu cầu là truyền một chuỗi lệnh từ PC xuống Pic , Pic sẽ lưu chuỗi này vào mảng st_nhan và xuất chuỗi đã nhận được ra LCD và lên PC để kiểm tra, sau đó nó sẽ so sánh chuỗi nhận được với chuỗi mặc định nếu giống nhau thì sẽ điều khiển đèn B.0 on/off .
Việc nhận và xuất chuỗi ra lcd và lên PC để kiểm tra thì em làm được rồi nhưng khi dùng các lệnh trong thư viện string.h để so sánh mang st_nhan và điều khiển đèn thì không được, không biết còn thiếu cái gì mong các anh chỉ giúp, Em dùng terminal 5.5 để truyền từ PC xuống. Đây là code của em. Rất mong nhận được hồi âm, cảm ơn các anh nhiều.

#include <16f877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=8000000)
#use rs232 (baud = 9600,parity = n,xmit=pin_c6,rcv=pin_c7)
#include <LCD.C>
#include <string.h> // thu vien xu ly chuoi
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx
//char st_nhan[]="#123456On1."; // cu phap chuan-1.
//char st_nhan[]="#123456 Off1."; // cu phap chuan-2.
//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxx
char st_nhan[32];
char pass[]= "123456" ; //
char mo_tb1[]= "on1" ;
char tat_tb1[]= "off1" ;


char *ptr1;
char *ptr2;
char *p ;

char ss=0x00;
char ss1=0x00;
char ss2=0x00;
char ss3=0x00;
char ss4=0x00;
int8 index,ngat;
int8 i,n,m;

//Ngat UART xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
// chuoi ti PC truyen xuong se la : #123456 on1.
#INT_RDA
RDA_isr()
{
ss= getc();

if (ss=='#')
{ ss1=ss; index= 0; st_nhan[index]= ss;}

if(ss=='.')
{ ss2=ss; st_nhan[index]= ss; }

if (ss2=='.'&&ss1=='#') { index= 0; ngat= 1; ss1=0;ss2=0; }

else
st_nhan[index]= ss;
index++;
if(index>=32){index=0;}

}


void xoa_st_nhan()
{
for(m=0;m<=32;++m)
{st_nhan[m]=0;}
}

void main()
{
set_tris_b(0b00000000);
set_tris_d(0b00000000);
set_tris_e(0b000);
set_tris_c(0b10000000);

enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);

index=0;
ngat=0;
xoa_st_nhan();

output_low(PIN_B0);
output_high(PIN_c0);

LCD_Init();
lcd_gotoxy(0,1);
lcd_putc("Test PC-->Pic");
delay_ms(1);
lcd_gotoxy(0,2);
lcd_putc(" in/out RS232");
delay_ms(1);

while (1)
{
if(ngat==1)
{
output_low(pin_c0);
output_high (pin_c1);

// xuat chuoi nhan duoc len LCD
lcd_send_byte(0,1);
lcd_gotoxy(0,1);
for(i=0;i<=15;i++)
{ lcd_putc(st_nhan[i]);}

lcd_gotoxy(0,2);
for(i=16;i<=31;i++)
{ lcd_putc(st_nhan[i]);}


// xuat chuoi len PC

for(n=0;n<=32;n++)
{
putc( st_nhan[n]);
if(n>=32){putc(13);}
}


// xu ly chuoi bang string.c
ptr1=strstr(st_nhan,pass);
if(strncmp(ptr1,pass,6)==0)
{
ptr2=strstr(st_nhan,mo_tb1);
if(strncmp(ptr2,mo_tb1,3)==0)
{output_high(pin_b0);xoa_st_nhan();}
else
{
ptr1=strstr(st_nhan,tat_tb1);
if(strncmp(ptr1,tat_tb1,4)==0)
{output_low(pin_b0);xoa_st_nhan();}
}
}

delay_ms(3000);
output_low(pin_c1);

ngat=0;
xoa_st_nhan();
}

}
}

thay đổi nội dung bởi: dungsinh, 27-05-2014 lúc 01:57 AM.
dungsinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-03-2016, 10:14 PM   #32
ga0rung0
Nhập môn đệ tử
 
Tham gia ngày: Mar 2016
Bài gửi: 1
:
mọi người cho hỏi.cái lệnh này trong lập trình pic có tác dụng tn đấy
stream=MYPC trong khai báo
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, stream=MYPC)
ga0rung0 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Giao tiếp RS232 trên PC ngohaibac Giao tiếp cổng COM và LPT 189 08-05-2024 08:10 PM
Giao tiếp RS232 trên PC qua Matlab ngohaibac Giao tiếp cổng COM và LPT 47 18-11-2015 03:51 PM
cần mua bộ thu GPS có giao tiếp RS232 kienvq Tìm mua sản phẩm 15 17-03-2011 11:25 PM
Help! Dùng C để giao tiếp RS232 dandiennang Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 6 15-03-2009 06:41 PM
IO Ports và GUI dùng lập trình giao tiếp RS232 ngohaibac Matlab-Simulink & Labview & 20-Sim 0 26-12-2006 10:07 PM


Múi giờ GMT. Hiện tại là 03:34 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam