?? ch_lcd.asm
字號(hào):
.include hardware.inc
//======================
//宏定義
//======================
RS1: .macro
r2=[P_IOB_Data]
r2|=0x0001
[P_IOB_Data]=r2
.endm
RS0: .macro
r2=[P_IOB_Data]
r2&=0xfffe
[P_IOB_Data]=r2
.endm
RW1: .macro
r2=[P_IOB_Data]
r2|=0x0002
[P_IOB_Data]=r2
.endm
RW0: .macro
r2=[P_IOB_Data]
r2&=0xfffd
[P_IOB_Data]=r2
E1: .macro
r2=[P_IOB_Data]
r2|=0x0010
[P_IOB_Data]=r2
.endm
E0: .macro
r2=[P_IOB_Data]
r2&=0xffef
[P_IOB_Data]=r2
.endm
.ram
.var count
.text
//=================================================================
//初始化LCD
//=================================================================
.public _Ch_InitLcd
_Ch_InitLcd:
r1=0
[0x7013]=r1
r1=[P_IOA_Dir] //D0-D7方向
r1|=0xff00
[P_IOA_Dir]=r1
r1=[P_IOA_Attrib] //屬性
r1|=0xff00
[P_IOA_Attrib]=r1
r1=[P_IOA_Data] //初始值
r1&=0x00ff
[P_IOA_Data]=r1
r1=[P_IOB_Dir] //Rs,RW,E的屬性和初始值
r1|=0x0013
[P_IOB_Dir]=r1
r1=[P_IOB_Attrib]
r1|=0x0013
[P_IOB_Attrib]=r1
r1=[P_IOB_Data]
r1&=0xffec
[P_IOB_Data]=r1
// r1=0x3400 //擴(kuò)展指令
// call F_Send_I
r1=0x3000 //基本指令
call F_Send_I
r1=0x0100 //清屏
call F_Send_I
r1=0x0600 //點(diǎn)設(shè)定
call F_Send_I
r1=0x0c00 //顯示狀態(tài)
call F_Send_I
retf
//=========================================
//原型:void Ch_Lcd(UINT ulcd,UINT Ulcd_start)
//參數(shù)描述:
//ulcd C里調(diào)用的數(shù)組名
//Ulcd_start數(shù)組起始位置
//
//
//=========================================
.public _Ch_Lcd
_Ch_Lcd:
push bp to [sp]
bp=sp+1
r1=[bp+3] //取第一個(gè)參數(shù)
r2=[bp+4] //取第二個(gè)參數(shù)
r3=r1
r3=r3+r2 //選取顯示起駛位置
r2=0 //計(jì)數(shù)器清0
[count]=r2
JMP Ch_Lcd_loop1
Lcd_SecLine:
r1=0x9000
call F_Send_I
JMP Ch_Lcd_loop1
Lcd_ThrLine:
r1=0x8800
call F_Send_I
JMP Ch_Lcd_loop1
Lcd_ForLine:
r1=0x9800
call F_Send_I
JMP Ch_Lcd_loop1
Ch_Lcd_loop1:
r1=0
r1+=r3
r1=[r1] //取到了數(shù)值
ch_dontchange:
call F_Send_D
r3+=1 //取下一個(gè)
r2=[count]
r2+=1 //計(jì)數(shù)器+1
[count]=r2
cmp r2,16
JE Lcd_SecLine
cmp r2,32
Je Lcd_ThrLine
cmp r2,48
Je Lcd_ForLine
cmp r2,64
je lcd_exit
JMP Ch_Lcd_loop1
lcd_exit:
pop bp from [sp]
retf
//=====================================================
//函數(shù)原形:void Send_LcdCommand(UIINT Comm)
//功能:在C里發(fā)送命令
//=====================================================
.public _Send_LcdCommand
_Send_LcdCommand:
push bp to [sp]
bp=sp+1
r1=[bp+3]
call F_Send_I
pop bp from [sp]
retf
//=====================================================
//功能:發(fā)送指令
//=====================================================
.public F_Send_I
F_Send_I:
call F_Chk_Busy;
RS0; //指令
RW0; //寫(xiě)
r2=[P_IOA_Data]
r2&=0x00ff
r2|=r1
[P_IOA_Data]=r2
E1;
nop
nop
nop
nop
E0;
retf
//======================================================
//功能:發(fā)送數(shù)據(jù)
//======================================================
.public F_Send_D
F_Send_D:
call F_Chk_Busy
RS1;
RW0;
r1=r1 lsl 4
r1=r1 lsl 4
r2=[P_IOA_Data]
r2&=0x00ff
r2|=r1
[P_IOA_Data]=r2
E1;
nop
nop
nop
nop
E0;
retf
.public F_Chk_Busy
F_Chk_Busy:
RS0;
RW1;
E1;
nop
nop
nop
nop
r2=[P_IOA_Dir]
r2&=0x7fff
[P_IOA_Dir]=r2
loop:
r2=1
[0x7012]=r2
r2=0x8000
test r2,[P_IOA_Data]
JNZ loop
E0;
r2=[P_IOA_Dir]
r2|=0x8000
[P_IOA_Dir]=r2
retf
.public _Clr_Watchdog
_Clr_Watchdog:
r1=1
[0x7012]=r1
retf
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -