|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
22-08-2009, 12:02 AM | #1 |
Đệ tử 1 túi
Tham gia ngày: Aug 2006
Bài gửi: 14
: |
Lỗi liên quan đến gửi data qua RS232
1. Vấn đề:
Mình viết chương trình =ASM với hoạt động như sau:-đọc bàn phím-đủ 6 phím- hiển thị LCD-gửi qua cổng com-lặp lại Tuy nhiên khi gọi chương trình khởi tạo ngay từ đầu chương trình, ngay sau khởi tạo cho LCD thì chương trình chỉ đọc được 1 lần và gửi qua cổng com 1 lần duy nhất và ngưng Sau đó, mình debug và phát hiện là do khi set bit 7 RCSTA-cho phép gửi, thì chương trình "có vấn đề". Debug bằng MSPSIM thì chương trình chạy liền tù tì. Mình sáng tạo bằng cách điều chỉnh như sau: khi khởi tạo, ko set bit 7, RCSTA. trước khi gửi set bit này và sau gửi thì clear bit này. Nhưng dữ liệu gửi lên lúc nào cũng dư 1 ký tự cuối. VD đúng : 077452 nhưng chương trình nhận được là 077452<0>. Nếu không thực hiện clr bit 7,RCSTA thì chươg trình gửi đúng. Nhờ anh em có sử dụng chức năng này hướng dẫn mình xác định cách giải quyết vấn đề này. 2. Chương trình trích như sau 2.1 chương trình con cho_gui_serial bsf RCSTA,7; clr return cam_gui_serial bcf RCSTA,7; clr return truy_cap_send ; chuong trinh con gui du lieu serial MOVWF TXREG ; load transmit register waitot: BTFSS PIR1,TXIF ; sent? GOTO waitot ; no return 2.2 chương trình chính send_serial call Init_serialport ; khởi tạo clrf rampointer bcf STATUS,Z send_ram ; chuong trinh lấy ram và gửi movf rampointer,w addlw h'20' ;add countdat+FSR movwf FSR ;nhay den dia chi RAM=1F+countdat movf INDF,w ;lay data tu o tempw call cho_gui_serial call truy_cap_send call long_delay incf rampointer,f ;kiem tra du? du lieu chua? movf rampointer,w sublw ramcapacity ; dung lượng RAM=6=6ký tự call cam_gui_serial btfss STATUS,Z goto send_ram ;chua du ky tu ; da du ky tu clrf rampointer goto ok_clear ; clear và trở lại đầu Thanks all |
|
|