Tutorial LCD cua Nigel???????
Chào các anh trong diễn đàn PIC VIET NAm.Em có 1 số vấn đề chưa thông trong tut cua Nigel về LCD (Chuong 3_bài 3) mong các anh có ai đã từng đọc hay đã làm qua giúp em với.
Thứ nhất là hàm LCD_busy:_giao tiếp LCD ở mode 4 bit
;------------------------------------------------------
LCD_Busy
bsf STATUS, RP0 ;set bank 1
movlw 0x0f ;set Port for input
movwf LCD_TRIS
bcf STATUS, RP0 ;set bank 0
bcf LCD_PORT, LCD_RS ;set LCD for command mode
bsf LCD_PORT, LCD_RW ;setup to read busy flag
bsf LCD_PORT, LCD_E
swapf LCD_PORT, w ;read upper nibble (busy flag)
bcf LCD_PORT, LCD_E
movwf templcd2
bsf LCD_PORT, LCD_E ;dummy read of lower nibble **********
bcf LCD_PORT, LCD_E
btfsc templcd2, 7 ;check busy flag, high = busy
goto LCD_Busy ;if busy check again
bcf LCD_PORT, LCD_RW
bsf STATUS, RP0 ;set bank 1
movlw 0x00 ;set Port for output
movwf LCD_TRIS
bcf STATUS, RP0 ;set bank 0
return
;end of LCD routines
;------------------------------------------------------
Neu gọi hàm này thì chương trình của Nigel không chạy được bởi vì khi em thay hàm này bằng hàm gọi delay_5ms thì chạy được
Các anh có thể chỉ cho em biết chỗ sai trong hàm này được không a.
À,còn dòng lệnh ở hàng em đánh dấu * nữa,em nghĩ dòng lệnh này là không cần thiết bởi vì ta chỉ quan tam đến bit DB7 mà thôi,
Cám ơn các anh nhiều lắm.
|