?? cjtemp.asm
字號:
shul8: nop ;--------------------
mov hang,#0 ;hang為常數(總是從第0行開始顯示)
mov hangc,#4
ttt: lCALL datawr1
inc hang
inc hang
djnz hangc, ttt;cs1 enable(在左側第一列顯示4個漢字)
ret
;--------右屏縱向顯示8個漢字菜單------------------------------
;--------入口參數為lie(1個參數)-----------------------------
shur8: mov hang,#0 ;
mov hangc,#4
uuu: lcall datawr2
inc hang
inc hang
djnz hangc,uuu;cs2 enable
ret
;----------輸入的參數為1個:表格地址-------------
;----------在左邊顯示16個漢字(即左半屏顯示)----
;------------------------------------------------
left16: nop
mov hang,#0
mov hangc,#4
mov lie,#0
mov liec,#4
loopl: lCALL datawr1 ;setup page and column!
mov a,lie
add a,#16 ;get next column
mov lie,a
djnz liec, loopl
mov liec,#4
mov lie,#0
inc hang
inc hang ;get next page,one hz need two page!
djnz hangc,loopl
ret
;----輸入的參數為1個:表格地址-------------------
;----在右邊顯示16個漢字(即右半屏顯示)----------
;------------------------------------------------
right16:nop
mov hang,#0
mov hangc,#4
mov lie,#0
mov liec,#4
loopr: lCALL datawr2
mov a,lie
add a,#16
mov lie,a
djnz liec, loopr
mov liec,#4
mov lie,#0
inc hang
inc hang
djnz hangc,loopr
ret
;-------在左屏某一個位置顯示一個字符-----------------
;-------入口參數是hang和lie,dptr----------------
bloblx: push dpl
push dph
mov counter,#16
;--------------------------------------------
mov a,hang
mov r1,a
mov a,lie
mov r2,a
lcall setpage1
lcall setcolumn1;-----------------設定顯示地址
pop dph
pop dpl
mov a,#0
bloopx: push acc
movc A,@A+DPTR
lcall DTWR1
inc DPTR
pop acc
djnz counter,bloopx
push dpl
push dph
;---------------------------------
mov counter,#16
mov a,hang;--------------恢復頁碼
inc acc ;--------------下一頁
mov r1,a
mov a,lie
mov r2,a
lcall setpage1
lcall setcolumn1
pop dph
pop dpl
mov a,#0
bloopy: push acc
MOVC A,@A+DPTR
lcall DTWR1
INC DPTR
pop acc
djnz counter,bloopy
ret
blobrx: push dpl
push dph
mov counter,#16
;--------------------------------------------
mov a,hang
mov r1,a
mov a,lie
mov r2,a
lcall setpage2
lcall setcolumn2;-----------------設定顯示地址
pop dph
pop dpl
mov a,#0
blooprx: push acc
movc A,@A+DPTR
lcall DTWR2
inc DPTR
pop acc
djnz counter,blooprx
push dpl
push dph
;---------------------------------
mov counter,#16
mov a,hang;--------------恢復頁碼
inc acc ;--------------下一頁
mov r1,a
mov a,lie
mov r2,a
lcall setpage2
lcall setcolumn2
pop dph
pop dpl
mov a,#0
bloopry: push acc
MOVC A,@A+DPTR
lcall DTWR2
INC DPTR
pop acc
djnz counter,bloopry
ret
;******************************************************************************
DELAY: MOV R5,#0FFH
MOV R4,#01H
DELAY1: MOV R6,#0FFH
DELAY2: DJNZ R6,DELAY2
DJNZ R5,DELAY1
MOV R5,#0FFH
DJNZ R4,DELAY1
RET
;******************************************************************************
PAUSE: lcall DELAY
lcall DELAY
lcall DELAY
lcall DELAY
RET
;******************************************************************************
CKBUSY1: ;Check busy for chip 1
BUSY1:
;---------
clr E
;---------
CLR D/I
SETB R/W
CLR CS1 ;?
SETB E
MOV C,P2.7
NOP
CLR E
SETB CS1
JC BUSY1
RET
;******************************************************************************
CKBUSY2: ;Check busy for chip 2
BUSY2: ;---------
clr E
;---------
CLR D/I
SETB R/W
CLR CS2
SETB E
MOV C,P2.7
NOP
CLR E
SETB CS2
JC BUSY2
RET
;******************************************************************************
DTWR1: ;Data write for chip 1
lcall CKBUSY1 ;Check busy flag
;----
CLR E
;----
;MOV P2,A
SETB D/I
CLR R/W
CLR CS1
SETB E
NOP
MOV P2,A;------
CLR E
SETB CS1
RET
;******************************************************************************
DTWR2: ;Data write for chip 2
lcall CKBUSY2 ;Check busy flag
;MOV P2,A;
SETB D/I
CLR R/W
CLR CS2
SETB E
NOP
MOV P2,A;------
CLR E
SETB CS2
RET
;******************************************************************************
CMDWR1: ;Command write for chip 1
lcall CKBUSY1 ;Check busy flag
;MOV p2,A ;----
CLR D/I
CLR R/W
CLR CS1
SETB E
NOP
MOV p2,A ;----
CLR E
SETB CS1
RET
;******************************************************************************
CMDWR2: ;Command write for chip 2
lcall CKBUSY2 ;Check busy flag
;MOV P2,A;-----
CLR D/I
CLR R/W
CLR CS2
SETB E
NOP
MOV p2,A ;----
CLR E
SETB CS2
RET
;******************************************************************************
SETPAGE1: ;Set page address for chip 1
MOV A,#10111000B
ORL A,R1
lcall CMDWR1
RET
;******************************************************************************
SETPAGE2: ;Set page address for chip 2
MOV A,#10111000B
ORL A,R1
lcall CMDWR2
RET
;******************************************************************************
SETCOLUMN1: ;Set column address for chip 1
MOV A,#01000000B
ORL A,R2
lcall CMDWR1
RET
;******************************************************************************
SETCOLUMN2: ;Set column address for chip 2
MOV A,#01000000B
ORL A,R2
lcall CMDWR2
RET
;-------------------------------------------
;--------入口參數hang,lie和menusel(0,2,4,6)------------------
;--------如果menusel=其他值,該程序就可以顯示正常的圖形數據
datawr1: mov counter,#0
;-----------
mov a,hang
push acc
mov r1,a
mov a,lie
mov r2,a
lcall setpage1
lcall setcolumn1
pagel: mov A,#00H
MOVC A,@A+DPTR
;---------------------
push acc
mov a,hang ;判斷當前選中的菜單是否反色
xrl a,menusel
jz anticolor1
pop acc
ajmp noanti1
anticolor1:pop acc
cpl a
noanti1: nop
;---------------------
lcall DTWR1
INC DPTR
INC counter
mov a,counter
CJNE a,#10H,pagel
;---------------------
mov counter,#0
pop acc
inc acc ;get next page
mov r1,a
mov a,lie
mov r2,a
lcall setpage1
lcall setcolumn1
pagell: mov A,#00H
MOVC A,@A+DPTR
;---------------------
;---------------------
push acc
mov a,hang ;判斷當前選中的菜單
xrl a,menusel
jz anticolor2
pop acc
ajmp noanti2
anticolor2:pop acc
cpl a
noanti2: nop
;---------------------
;---------------------
lcall DTWR1
INC DPTR
INC counter
mov a,counter
CJNE a,#10H,pagell
ret
datawr2: ;------------------
mov counter,#0
;-----------
mov a,hang
push acc
mov r1,a
mov a,lie
mov r2,a
lcall setpage2
lcall setcolumn2
pager: mov A,#00H
MOVC A,@A+DPTR
;---------------------
;---------------------
push acc
mov a,hang ;判斷當前選中的菜單
xrl a,menusel
jz anticolor3
pop acc
ajmp noanti3
anticolor3:pop acc
cpl a
noanti3: nop
;---------------------
;---------------------
lcall DTWR2
INC DPTR
INC counter
mov a,counter
CJNE a,#10H,pager
;---------------------
mov counter,#0
pop acc
inc acc ;get next page
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -