![]() |
|
Tài trợ cho PIC Vietnam |
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... |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 2 túi
Tham gia ngày: Mar 2012
Bài gửi: 34
: |
![]() các anh chị pro ơi giúp em với em đang cần lắm làm ơn giúp em với
|
![]() |
![]() |
![]() |
#2 | |
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
xem qua code của em anh có vài góp ý như sau:
1:bên truyền lên truyền thêm " kí tự" kết thúc một chuỗi truyền. Trích:
(khắc phục mất dữ liệu làm như sau:dữ liệu nhận được ghi vào mảng Mrs232 chỉ khi nào nhận được "kí tự kết thúc chuỗi" mới lấy mảngMrs232 ghi vào EEPROM. 3 ![]() vd:unsigned int Mrs232[16]={}; 4:tách từng phần một mà kiểm tra rồi hãy gộp code lại thì sẽ dễ ràng hơn.
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề. |
|
![]() |
![]() |
![]() |
#3 | |
Đệ tử 2 túi
Tham gia ngày: Mar 2012
Bài gửi: 34
: |
Trích:
#INT_RDA Receive_isr() { traloi=getch(); for(Y=0;Y<16;Y++) { Mrs232[Y]=traloi; WRITE_EEPROM(Y,Mrs232[Y]); delay_ms(5); if (Y==15) goto thoat; } thoat: ; } Nếu ok anh xem giúp em cái phần main--> em thấy nó không ỗn nhưng không biết phải chỉnh như thế nào mong anh giúp đỡ thay đổi nội dung bởi: mrsin, 25-04-2012 lúc 12:03 AM. Lý do: bổ xung ý |
|
![]() |
![]() |
![]() |
#4 |
Đệ tử 2 túi
Tham gia ngày: Mar 2012
Bài gửi: 34
: |
Cho dễ hình dung em xin post code VB+ mô phỏng = protues 7.7
anh tdm nói: "WRITE_EEPROM(Y,Mrs232[Y]);//hàm này mất 5ms">>> nhưng trong VB em có dùng timer delay nên trong code Pic có cần sửa lại không nếu có sửa thì e sửa như trên được chưa anh |
![]() |
![]() |
![]() |
#5 | |
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
Trích:
code tham khảo : Code:
#include <16F877A.h> //#include <def_877a.h> //#include <DEFS_16F877A.h> //#include <DS1307.C> #FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) //#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bi ts=9) //Baud_min=4800 Baud_max=115200 #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) //#define SCL RD5 //#define DATA RD6 //#define SCK RD7 int8 Mrs232[20];//mang nhan gia tri tu rs232 int8 y=0; unsigned int Zz[20];//mang chua cac gia tri led7 //unsigned int count; unsigned char ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//ma led 7 int traloi; #INT_RDA Receive_isr() { traloi=getc(); Mrs232[y]=traloi; y++; if(y>=16)//nhận hết dữ liệu mới ghi vào EEPROM { for(y=0;y<16;y++) { WRITE_EEPROM(y,Mrs232[y]); } for(y=0;y<16;y++) { putc((read_EEPROM (y)));//doc du lieu kiem tra } y=0;//cái này quan trọng để lấy dữ liệu lần sau printf("\n\r");//:xuong dau dong } else { } } void main() { int i,j; enable_interrupts(INT_RDA); enable_interrupts(GLOBAL); while(true) { } }
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề. |
|
![]() |
![]() |
![]() |
#6 |
Đệ tử 2 túi
Tham gia ngày: Mar 2012
Bài gửi: 34
: |
for(y=0;y<16;y++)
{ putc((read_EEPROM (y)));//doc du lieu kiem tra } Đoạn code này em không hiểu cho lắm >>> tác dụng và mục đích của nó em thấy nó không rõ cho lắm, theo em nghĩ nếu bỏ đoạn code này thì vẫn ok |
![]() |
![]() |
![]() |
#7 |
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
đoạn code đó chỉ để kiểm tra xem dữ liệu nhận về có đúng hay k? mọi thứ OK thì bỏ nó đi.
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề. |
![]() |
![]() |
![]() |
#8 | |
Đệ tử 2 túi
Tham gia ngày: Mar 2012
Bài gửi: 34
: |
Trích:
Và bây giờ làm sao đưa 16 ký tự đó ra IC giải mã 74HC595 vậy anh ![]() |
|
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|