📄 main.asm
字号:
;*****************************************************
;文件说明
;创 建 人:杨宏伟
;修 改 人:杨宏伟
;创建日期:2004-01-01
;最后更新:2004-10-28
;描 述:FOR 128DI0,EM65565A,8位并行,模拟8080时序
;*****************************************************
;接口定义
;*****************************************************
CS1 BIT P3.5 ;片选控制端定义(低电平有效)
RES BIT P3.4 ;复位控制端定义(低电平有效)
RS BIT P3.3 ;指令、数据选择控制端定义
WR1 BIT P3.1 ;写信号控制端定义
RD1 BIT P3.0 ;读信号控制端定义
MI BIT P3.7 ;8080或6800选择
;*****************************************************
ORG 0000H
LJMP start ;程序跳转,转到标号为start
ORG 0100h
start:NOP
CLR CS1 ;片选有效(置低)
CLR MI ;选择8080时序
CLR RES ;复位LCD,RES置低
LCALL DELAY
LCALL DELAY
SETB RES ;复位LCD完成
LCALL DELAY
;设置(置高)数据表头标志位(在位寻址区)
;****************************************************
SETB 20h ;全显
SETB 21h ;隔行
SETB 22h ;清屏
LJMP MAIN
;LCD模块初始化(开始)
;****************************************************
ORG 0200H
main: NOP
MOV A,#0a0h ;ADC select
LCALL SENT_COM
MOV A,#0a6h ;Sets the LCD display normal/reverse
LCALL SENT_COM
MOV A,#0a2H ;Sets the LCD drive voltage bias ratio 1/9
LCALL SENT_COM
LCALL DELAY
MOV A,#2fh ;Power control set
LCALL SENT_COM
MOV A,#24H ;V0 Voltage Regulator Internal Resistor Ratio Set
LCALL SENT_COM
MOV A,#81H ;Electronic volume mode set
LCALL SENT_COM
MOV A,#29h
LCALL SENT_COM
MOV A,#0AFH ;Display ON
LCALL SENT_COM
;******************************LCD初始化完成
;设置起始行,设置起始列和页地址
;******************************************************
again: mov r4,#0b0h ;设页地址寄存器为R4,起始页地址B0H,第一页
mov r5,#09H ;#09h;页数寄存器为R5,9页
mov r6,#40h ;行地址寄存器为R6,起始行地址40H,第一行
set_page_col:
mov r3,#80h ;设置列数寄存器为R3,列数为128
MOV A,r4 ;送页地址
LCALL SENT_COM
MOV A,#10H ;送列地址,双字节指令
LCALL SENT_COM
MOV A,#00H;
LCALL SENT_COM
;判断表头标志,决定程序跳转方向
;*****************************************************
JB 20h,tab0 ;全显
JB 21h,tab1 ;隔行
JB 22h,tab2 ;清屏
LCALL ldelay
AJMP start ;返回,重复
;*****************************************************
tab0: AJMP table0
tab1: AJMP table1
tab2: AJMP table2
;*****************************************************
table0: mov dptr,#tab0_data ;取表头地址
dis0:CLR A
movc a,@a+dptr
LCALL SENT_DAT
inc dptr
DJNZ R3,DIS0 ;列数减一,共128列
inc r4 ;页地址加1,下一页
djnz r5,set_page_col ;共显示9页
clr 20h ;清除表标志
lcall ldelay
ajmp again
;*****************************第一屏显示完成,全显
table1: mov dptr,#tab1_data ;取表头地址
dis1:CLR A
movc a,@a+dptr
LCALL SENT_DAT
inc dptr
DJNZ R3,DIS1 ;列数减一,共128列
inc r4 ;页地址加1,下一页
djnz r5,set_page_col ;共显示9页
clr 21h ;清除表标志
lcall ldelay
ajmp again
;****************************第二屏显示完成,隔行显示
table2: mov dptr,#tab2_data ;取表头地址
dis2:CLR A
movc a,@a+dptr
LCALL SENT_DAT
inc dptr
DJNZ R3,DIS2 ;列数减一,共128列
inc r4 ;页地址加1,下一页
djnz r5,set_page_col ;共显示9页
clr 22h ;清除表标志
lcall ldelay
ajmp again
;*****************************第三屏显示完成,清屏
;子程序:
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DELAY:NOP ;延时
MOV R1,#0FFH
DL1:MOV R2,#06FH
DL2:DJNZ R2,DL2
DJNZ R1,DL1
RET
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ldelay: ;长延时
mov 30h,#010h
dela40:lcall delay
djnz 30h,dela40
ret
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SENT_COM:NOP ;写命令
CLR RS
CLR WR1
clr CS1
setb RD1
nop
MOV P1,A
NOP
SETB WR1
setb CS1
NOP
NOP
NOP
RET
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
SENT_DAT:NOP ;写数据
SETB RS
setb RD1
CLR WR1
CLR CS1
NOP
MOV P1,A
NOP
SETB WR1
setb CS1
NOP
NOP
NOP
RET
;数据表
;************************************************
tab0_data:
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH
tab1_data:
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
DB 055H,055H,055H,055H,055H,055H,055H,055H
tab2_data:
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
DB 000H,000H,000H,000H,000H,000H,000H,000H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -