单片机与液晶接口问题,大家帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/06/28 11:55:57
RS BIT P3.0
RW BIT P3.1
E BIT P3.5
DB0_DB7 DATA P1
;****** *************
ORG 00H
AJMP START
ORG 000BH
AJMP INSE
; *******************
ORG 50H
START: MOV TMOD,#0
MOV TL0,#0
MOV TH0,#0
SETB EA
SETB ET0
SETB TR0
MOV R5,#50
MOV SP,#60H
ACALL INIT
MOV A,#10000000B ;写入显示地址为第一行第一位。
ACALL Write
MOV A,#01000001B ;字母“A”的代码。
ACALL WriteDDR
LOOP: AJMP LOOP
;********* **********
INSE: MOV TL0,#0 ;中断服务子程序。
MOV TH0,#0
DJNZ R5,NO
MOV R5,#50
NO: RETI
;********* **********
INIT:
MOV A,#00111000B ;使用8Bits汇流排,显示两行,使用5*7的字型。
LCALL Write
MOV A,#00001110B ;显示器开,光标开,光标闪烁。
LCALL Write
MOV A,#00000110B ;字符不动,光标自动右移一格。
LCALL Write
RET
;****** *************
CheckBusy: ;检查忙碌子程序。
PUSH ACC
CB_Loop: CLR RS
SETB RW
CLR E
SETB E
MOV A,DB0_DB7
CLR E
JB ACC.7,

它是个13位的计数器,每计满13位中断一次.
从程序上看具体的内容没去分系,不过发现你的栈区开辟语句错误.同时程序状态字也没入栈.

你的程序我没太仔细看.
如果你的单片机里没有狗的话,应该是一个延时,用来给1602的写入和读出进行延时的.
如过有狗,就是喂狗的.