新會員
Joined
: 2007/3/20 10:53 最後登入時間
: 2007/3/20 11:24
Group:
註冊會員
Level : 1 HP : 0 / 0 MP : 0 / 0 EXP : 0
|
各位大大您好, 小弟我爬過許多有關此APP001板LCD的文章, 不過還是搞不懂如何顯示,我PO一下我寫的程式, 麻煩大大幫指証一下哪邊錯誤,起始化應該沒有問題 不過顯示就是出不來,使用4-BIT控制。 謝謝各位大大。
; ;*************************************** ; Program start ;*************************************** ORG 0x00 ; NOP ; GOTO START ;
START: CALL INIT CALL DELAY_15mS CALL INITIAL_LCD
LCD_5: CALL LINE MOVLW 0x03 ;顯示5 MOVWF DR_DATA CALL WRINS_DR MOVLW 0x05 ;顯示5 MOVWF DR_DATA CALL WRINS_DR
KO: GOTO KO
INIT: CLRF STATUS BSF STATUS,RP0 CLRF ADCON1 MOVLW b'00000001' MOVWF TRISA MOVLW b'00000000' MOVWF TRISD BCF STATUS,RP0 MOVLW b'01000001' MOVWF ADCON0 MOVLW b'00000000' MOVWF PORTD CLRF IR_DATA CLRF DR_DATA CLRF TEMP RETURN
;=========================
;=== LCD 模組初始化副程式 ===
;=========================
INITIAL_LCD: BCF PORTD,4 ;RS BCF PORTD,5 ;RW MOVLW 0x03 MOVWF IR_DATA CALL WRINS_IR ;功能設定 MOVLW 0x03 MOVWF IR_DATA CALL WRINS_IR ;功能設定 MOVLW 0x03 MOVWF IR_DATA CALL WRINS_IR ;功能設定 MOVLW 0x02 MOVWF IR_DATA CALL WRINS_IR ;功能設定(4位元) MOVLW 0x02 MOVWF IR_DATA CALL WRINS_IR ;功能設定(4位元) MOVLW 0x00 MOVWF IR_DATA CALL WRINS_IR ;功能設定(4位元) MOVLW 0x00 MOVWF IR_DATA CALL WRINS_IR MOVLW 0x08 MOVWF IR_DATA CALL WRINS_IR ;令顯示器off MOVLW 0x00 MOVWF IR_DATA CALL WRINS_IR MOVLW 0x01 MOVWF IR_DATA CALL WRINS_IR ;清除顯示 MOVLW 0x00 MOVWF IR_DATA CALL WRINS_IR MOVLW 0x06 MOVWF IR_DATA CALL WRINS_IR ;輸入模式設定 MOVLW 0x00 MOVWF IR_DATA CALL WRINS_IR MOVLW 0x0F MOVWF IR_DATA CALL WRINS_IR ;令顯示器on RETURN
WRINS_IR: BCF PORTD,4 ;RS BCF PORTD,5 ;RW BCF PORTA,2 ;EN NOP BSF PORTA,2 BSF STATUS,RP0 ;切換至第1頁 MOVLW B'00000000' MOVWF TRISD ;<設定埠D的RB0~RB7為輸出腳> BCF STATUS,RP0 ;回到第0頁 MOVF IR_DATA,0 MOVWF PORTD NOP BCF PORTA,2 CALL DELAY_5mS RETURN LINE: MOVLW 0X08 MOVWF IR_DATA CALL WRINS_IR MOVLW 0X00 MOVWF IR_DATA CALL WRINS_IR RETURN
WRINS_DR: CALL CHECKBF ;檢查忙碌旗標 BSF PORTD,4 ;RS BCF PORTD,5 ;RW BCF PORTA,2 ;EN NOP BSF PORTA,2 BSF STATUS,RP0 MOVLW B'00000000' MOVWF TRISD ;<設定埠D的RD0~RD7為輸出腳> BCF STATUS,RP0 MOVF DR_DATA,0 MOVWF PORTD NOP BCF PORTA,2 RETURN
;=========================
;== 檢查忙碌旗標BF副程式 ==
;=========================
CHECKBF: WAIT_BF: BCF PORTD,4 ;RS BSF PORTD,5 ;R/W BSF PORTA,2 ;EN BSF STATUS,RP0 MOVLW B'11111111' MOVWF TRISD ;<設定埠D的RD0~RD7為輸入腳> BCF STATUS,RP0 NOP NOP MOVF PORTD,0 MOVWF TEMP BCF PORTA,2 BTFSC TEMP,3 ;檢查忙碌旗標,忙碌1執行下一步,閒置0跳過下一步 GOTO WAIT_BF ;忙碌就重新檢查 RETURN
發表於: 2007/3/20 11:36
|