驱动HT1621程序问题
ORG00
JMPST
ORG10H
ST: CALL INIT
BS P6,1
BS P5,1
;------------------------------------
CALLLCDINIT
ST1:BS P5,1
MOVA,@0xff
MOVLCD1,A
MOVLCD2,A
MOVLCD3,A
MOVLCD4,A
CALLWRDATA
BC P5,1
JMPST1
;-------------------------------------
INIT: MOVA,@00H
IOWIOC5
IOWIOC6
IOWIOC7
CLRP5
CLRP6
BSP7,0
MOVA,@0X10
MOVR4,A
INIT_1: CLR0
INCR4
MOVA,R4
XORA,@0X40
JBSPSW,2
JMPINIT_1
RET
;--------------------------------------
HT1621: MOVA,DATA1621
BCP5,_WR
CALLNOPP
AND A,@0X80
JBS PSW,Z
JMP HT1621_1
BCP5,_DATA
JMP HT1621_2
HT1621_1: BSP5,_DATA
HT1621_2: CALLNOPP
BSP5,_WR
BCPSW,C
RLCDATA1621
DJZFLAG1
JMPHT1621
RET
;---------------------------
WRDATA:
; CALL COM_M
; CALL LCD_ON
NOP
MOV A,@6
MOV FLAG1,A
BS P7,_CS ;WRITE-101
BC P5,_DATA
BC P5,_WR ;/WR=0
CALL NOPP
BC P7,_CS ;/CS=0
BS P5,_DATA ;DATA=1
BS P5,_WR ;/WR=1
CALL NOPP
BC P5,_WR ;/WR=0
BC P5,_DATA ;DATA=0
BS P5,_WR ;/WR=1
CALL NOPP
BC P5,_WR ;/WR=0
BS P5,_DATA ;DATA=1
BS P5,_WR ;/WR=1
CALL NOPP
BC P5,_WR ;/WR=0
LCD_A1: BC P5,_DATA
CALL NOPP
BS P5,_WR ;/WR=1
CALL NOPP
BC P5,_WR ;/WR=0
DJZ FLAG1
JMP LCD_A1
MOV A,@LCD1
MOV R4,A
MOV A,@0X04
MOV FLAG1,A
LCD_A2:MOV A,0
MOV DATA1621,A
MOV A,@8
MOV FLAG2,A
LCD_A3: BC P5,_DATA
JBC DATA1621,7 ;COMMAND,7=0
BS P5,_DATA
CALL NOPP
RLC DATA1621
BS P5,_WR
CALL NOPP
BC P5,_WR
DJZ FLAG2
JMP LCD_A3
INC R4
DJZ FLAG1
JMP LCD_A2
BS P7,_CS ;/CS=1
; JBC STATUS1,6
; CALL LCD_OFF
RET
;---------------------------------
WRCMD: MOV A,@0X08
MOV FLAG1,A
BS P7,_CS ;WRITE_100
CALL NOPP
BC P5,_DATA
BC P5,_WR ;/WR=0
BC P7,_CS ;/CS=0
BS P5,_DATA ;DATA=1
CALL NOPP
BS P5,_WR ;/WR=1
CALL NOPP
BC P5,_WR ;/WR=0
BC P5,_DATA ;DATA=0
CALL NOPP
BS P5,_WR ;/WR=1
CALL NOPP
BC P5,_WR ;/WR=0
BC P5,_DATA ;DATA=0
CALL NOPP
BS P5,_WR ;/WR=1
CALL NOPP
BC P5,_WR ;/WR=0
BC P5,_DATA
CALL NOPP
BS P5,_WR
CALL NOPP
BC P5,_WR
;----------------------------
C8_C1_W: BC P5,_DATA
JBC A_BUF,7 ;COMMAND,7=0
BS P5,_DATA
RLC A_BUF
CALL NOPP
BS P5,_WR ;/WR=1
CALL NOPP
BC P5,_WR ;/WR=0
CALL NOPP
DJZ FLAG1
JMP C8_C1_W
BS P7,_CS ;/CS=1
RET
;-------------------------------
LCDINIT: BS P7,_CS
BC P5,_WR
BC P5,_DATA
MOVA,@100
MOVR23,A
CALLDELAY
;---------------------------------
MOVA,@30H
MOVA_BUF,A
CALLWRCMD
MOVA,@2H
MOVA_BUF,A
CALLWRCMD
MOVA,@52H
MOV A_BUF,A
CALLWRCMD
MOVA,@6H
MOVA_BUF,A
CALLWRCMD
MOV A,@0AH
MOV A_BUF,A
CALLWRCMD
RET
;---------------------------------------------
NOPP: NOP
NOP
NOP
NOP
NOP
RET
;-----------------------------
DELAY:MOVA,R23
MOVR22,A
DELAY1: MOVA,@136
MOVR21,A
DELAY2: DJZR21
JMPDELAY2
DJZR22
JMPDELAY1
RET
END
程序如上 LCD没显示 我已经看了一天了都找不出问题求大虾帮帮忙
[最优解释]
先检查硬件问题,不一定是程序问题
另外多加点注释1621的设置注释出来,好让大家看看是不是设置问题
我用C写的程序行数比你多好多,按道理C应该更简洁
[其他解释]
HT1621的程序很多 可以参考一下网上的
HT1621程序
[其他解释]
有点复杂
[其他解释]