25-08-2009, 04:50 PM
|
#2
|
Đệ tử 4 túi
Tham gia ngày: Jul 2008
Bài gửi: 61
:
|
Trích:
Nguyên văn bởi khangspkt
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
|
Viết bằng c di ban oi. minh co the post code giup bạn
|
|
|