📄 lcd.asm
字号:
//入口参数:起始显示的页号
//返回参数:无
//****************************************************************************************
.public _Dingwei_Display1
_Dingwei_Display1: .proc
push bp to [sp]
bp=sp+1
push r1,r2 to [sp]
r3=0
r4=lie //设列地址
call Ctrl1
r4=0xc000 //设起始点阵行
call Ctrl1
r1=[bp+3] //取第一个参数,即从第几页开始显示
[_page1]=r1
r2=[bp+4] //所选择的字模数组的起始值
r5=r2 //第一片显示的内容
newloop1:
r1=[_page1]
r1=r1 lsl 4
r1=r1 lsl 4
r4=r1+0xb800 //设置页面地址
call Ctrl1
r2=0
r4=lie //设置列地址
call Ctrl1
newloop11:
r4=[r5] //正显示,取首地址
r4=r4 lsl 4
r4=r4 lsl 4
call data1
r5+=1
r2+=1 //显示完64列?
cmp r2,63
jna newloop11
r1=[_page1]
r1+=1
r3+=1
[_page1]=r1
cmp r3,1 //显示一个汉字行,即两个小页
jna newloop1
call Delay
pop r1,r2 from [sp]
pop bp from [sp]
retf
.endp
//************************************定位显示程序__正常显示2*****************************
//函数名称: _Dingwei_Display2
//函数功能: 在右半屏正常显示一行汉字,四个
//入口参数:起始显示的页号
//返回参数:无
//****************************************************************************************
.public _Dingwei_Display2
_Dingwei_Display2: .proc
push bp to [sp]
bp=sp+1
push r1,r2 to [sp]
r3=0
r4=lie //设列地址
call Ctrl2
r4=0xc000 //设起始点阵行
call Ctrl2
r1=[bp+3] //取第一个参数,即从第几页开始显示
[_page2]=r1
r2=[bp+4] //所选择的字模数组的起始值
r5=r2 //第一片显示的内容
newloop2:
r1=[_page2]
r1=r1 lsl 4
r1=r1 lsl 4
r4=r1+0xb800 //设置页面地址
call Ctrl2
r2=0
r4=lie //设置列地址
call Ctrl2
newloop12:
r4=[r5] //正显示,取首地址
r4=r4 lsl 4
r4=r4 lsl 4
call data2
r5+=1
r2+=1 //显示完64列?
cmp r2,63
jna newloop12
r1=[_page2]
r1+=1
r3+=1
[_page2]=r1
cmp r3,1 //显示一个汉字行,即两个小页
jna newloop2
call Delay
pop r1,r2 from [sp]
pop bp from [sp]
retf
.endp
//*****************************************************************************************//
//函数名:_Display_hanzi1
//功能:在任意的地方显示一个汉字
//入口参数:第一个,页号0~7;第二个,起始列值,取0~48;第三个,数组首地址.
//返回参数:无
//******************************************************************************************//
.public _Display_hanzi1
_Display_hanzi1: .proc
push bp to [sp]
bp=sp+1
push r1,r5 to [sp]
r1=0x0000
[_temp2]=r1
r1=[bp+3] //取页号
[_page1]=r1
r2=[bp+4] //取起始列数值
[_col1]=r2
r5=[bp+5] //取第三个参数,所选择的字模数组的起始地址
r4=lie
call Ctrl1
r4=0xc000 //设起始点阵行
call Ctrl1
Looping1:
r1=[_page1]
r1=r1 lsl 4
r1=r1 lsl 4
r4=r1+0xb800 //设置页面地址
call Ctrl1
r2=[_col1]
r2=r2 lsl 4
r2=r2 lsl 4
r4=r2+lie //设列地址
call Ctrl1
r2=0
looping1:
r4=[r5] //正显示,取首地址
r4=r4 lsl 4
r4=r4 lsl 4
call data1
r5+=1
r2+=1 //显示完8列?
cmp r2,15
jna looping1
r1=[_page1]
r1+=1
[_page1]=r1
r1=[_temp2]
r1+=1
[_temp2]=r1
r3=[_temp2]
cmp r3,1 //显示一个汉字行,即两个小页
jna Looping1
pop r1,r5 from [sp]
pop bp from [sp]
retf
.endp
//*****************************************************************************************//
//函数名:_Display_hanzi2
//功能:在任意的地方显示一个汉字
//入口参数:第一个,页号0~7;第二个,起始列值,取0~48;第三个,数组首地址.
//返回参数:无
//******************************************************************************************//
.public _Display_hanzi2
_Display_hanzi2: .proc
push bp to [sp]
bp=sp+1
push r1,r5 to [sp]
r1=0x0000
[_temp2]=r1
r1=[bp+3] //取页号
[_page1]=r1
r2=[bp+4] //取起始列数值
[_col1]=r2
r5=[bp+5] //取第三个参数,所选择的字模数组的起始地址
r4=lie
call Ctrl2
r4=0xc000 //设起始点阵行
call Ctrl2
Looping2:
r1=[_page1]
r1=r1 lsl 4
r1=r1 lsl 4
r4=r1+0xb800 //设置页面地址
call Ctrl2
r2=[_col1]
r2=r2 lsl 4
r2=r2 lsl 4
r4=r2+lie //设列地址
call Ctrl2
r2=0
looping2:
r4=[r5] //正显示,取首地址
r4=r4 lsl 4
r4=r4 lsl 4
call data2
r5+=1
r2+=1 //显示完8列?
cmp r2,15
jna looping2
r1=[_page1]
r1+=1
[_page1]=r1
r1=[_temp2]
r1+=1
[_temp2]=r1
r3=[_temp2]
cmp r3,1 //显示一个汉字行,即两个小页
jna Looping2
pop r1,r5 from [sp]
pop bp from [sp]
retf
.endp
//*****************************************************************************************//
//函数名:_Display_num1
//功能:在任意的地方显示一个数字字
//入口参数:第一个,页号0~7;第二个,起始列值,取0~48;第三个,数组首地址.
//返回参数:无
//******************************************************************************************//
.public _Display_num1
_Display_num1: .proc
push bp to [sp]
bp=sp+1
push r1,r5 to [sp]
r1=0x0000
[_temp2]=r1
r1=[bp+3] //取页号,第一个参数
[_page1]=r1
r2=[bp+4] //取起始列数值,第二个参数
[_col1]=r2
r5=[bp+5] //取第三个参数,所选择的字模数组的起始地址
r4=lie
call Ctrl1
r4=0xc000 //设起始点阵行
call Ctrl1
Loop_num1:
r1=[_page1]
r1=r1 lsl 4
r1=r1 lsl 4
r4=r1+0xb800 //设置页面地址
call Ctrl1
r2=[_col1]
r2=r2 lsl 4
r2=r2 lsl 4
r4=r2+lie //设列地址
call Ctrl1
r2=0
loop_num1:
r4=[r5] //正显示,取首地址
r4=r4 lsl 4
r4=r4 lsl 4
call data1
r5+=1
r2+=1 //显示完16列?
cmp r2,7
jna loop_num1
r1=[_page1]
r1+=1
[_page1]=r1
r1=[_temp2]
r1+=1
[_temp2]=r1
r3=[_temp2]
cmp r3,1 //显示一个汉字,即两个小页
jna Loop_num1
pop r1,r5 from [sp]
pop bp from [sp]
retf
.endp
//*****************************************************************************************//
//函数名:_Display_num2
//功能:在任意的地方显示一个汉字
//入口参数:第一个,页号0~7;第二个,起始列值,取0~48;第三个,数组首地址.
//返回参数:无
//******************************************************************************************//
.public _Display_num2
_Display_num2: .proc
push bp to [sp]
bp=sp+1
push r1,r5 to [sp]
r1=0x0000
[_temp2]=r1
r1=[bp+3] //取页号
[_page1]=r1
r2=[bp+4] //取起始列数值
[_col1]=r2
r5=[bp+5] //取第三个参数,所选择的字模数组的起始地址
r4=lie
call Ctrl2
r4=0xc000 //设起始点阵行
call Ctrl2
Loop_num2:
r1=[_page1]
r1=r1 lsl 4
r1=r1 lsl 4
r4=r1+0xb800 //设置页面地址
call Ctrl2
r2=[_col1]
r2=r2 lsl 4
r2=r2 lsl 4
r4=r2+lie //设列地址
call Ctrl2
r2=0
loop_num2:
r4=[r5] //正显示,取首地址
r4=r4 lsl 4
r4=r4 lsl 4
call data2
r5+=1
r2+=1 //显示完8列?
cmp r2,7
jna loop_num2
r1=[_page1]
r1+=1
[_page1]=r1
r1=[_temp2]
r1+=1
[_temp2]=r1
r3=[_temp2]
cmp r3,1 //显示一个汉字行,即两个小页
jna Loop_num2
pop r1,r5 from [sp]
pop bp from [sp]
retf
.endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -