Trích:
Nguyên văn bởi thuc101
truyền nối tiếp rs232
mình mới vào nghề pic6f877a cho mình hỏi cái này chút:
nếu như mình gửi xuống bằng vb6 thì khi gửi xuống cho pic nó sẽ hiểu là mã ascii phai không vậy thì làm sao để pic có thể hiểu được nhỉ
chương trình mình dùng vb6 với mscomm gửi các số từ 0 dến 150 xuống cho pic6f877a(dùng ccs)vậy thì có 2 vấn đề xảy ra như thế này:
-khi truyền từ pc vb6 sẽ truyền mã ascii phải ko ạ như vậy số 1 mà pc truyền la 49 vậy pic nhận như thế nào để xuất ra portd là 00000001 và gửi lên pc là số bao nhiêu để vb6 hiển thị số 1
-và 1 vấn đề nữa là khi gửi số có 2 chữ số trở lên thì phải gửi như thê nào nữa ví dụ mình gửi số 127 từ pc xuống pic rồi hiển thị bằng cách quét led với portd va porte.rồi mình gửi từ pic lên cho pc số 132 để hiển thị lên text2.text trên vb6
MONG CÁC BÁC LÂU NĂM TRONG NGHỀ GIÚP ĐỠ!
RẤT MONG ĐƯỢC HỒI ÂM CỦA CÁC BẠN TRONG DIỄN ĐÀN VÌ MÌNH ĐANG RẤT CẦN
|
Mình cũng mới học qua về phần truyền nhận này, mình nghĩ bạn có thể làm như sau:
- Gửi từ PC xuống, bản có thể gửi theo 1 chuỗi xuống với ký tự cuối cùng là @ chẳng hạn để vi điều khiển có thể nhận biết và vi điều khiển sẽ nhận từng ký tự cất vào 1 mảng. Chương trình có thể tham khảo như sau:
#INT_RDA
void Receive_isr()
{
text[dem]=getc();
if(text[dem]=='@') //kiem tra dieu kien ket thuc
{
flag =1; //ket thuc nhan, bat co bao
dem=0;
}
else dem++;
}
- Còn truyền từ vi điều khiển lên thì chỉ cần dùng hàm printf là được.
VD: hiển thị số 132 là printf("%Lu",132)