?? 80c_pio.asm
字號:
;==========================演示程序=========================
;用并口通信時,只需發送仿真軟件的十六進制顯示窗口的第四個字節后的所有數據。
;如:清全屏的十六進制顯示窗口是55AA0001434C42,采用并口通信時只需發送434C42
;
;P1為數據總線
;定義LCD控制線
EE EQU P3.1 ;使能信號.下降沿有效。
RWA EQU P3.0 ;讀數據時必須低電平,向控制板寫數據時必須高電平
END0 EQU P3.2 ;指令結束信號,在讀最后一個數據時,或寫最后一個數據時必須是低電平。
;當讀第一個數據時END0就為低電平則所讀為查忙數據。
PINT EQU P3.3 ;觸摸屏中斷,產生低電平。
;另一功能是當控制板上電準備就緒時產生一個5MS的低電平
CHX_DATH EQU 40H
CHX_DATL EQU 41H
CHY_DATH EQU 42H
CHY_DATL EQU 43H
JUDE EQU 30H
Year EQU 31H
Mon EQU 32H
Day EQU 33H
Hour EQU 34H
Min EQU 35H
Sec EQU 36H
Date EQU 37H
ORG 0000H
JMP START
ORG 0003H
RETI
ORG 000BH
JMP LOOP;;;;;;;;;;
ORG 0013H
LJMP REXY
ORG 001BH
RETI
ORG 0023H
RETI
ORG 002BH
RETI
ORG 0030H
NOP
START:
NOP
MOV C,PINT
;JC START ;檢查控制板是否上電就緒。若用仿真器仿真時應屏蔽此指令。
MAIN: NOP
CALL LCD_CLR ;清屏
;main1: CALL DISLINE ;顯示直線
; CALL DISell ;顯示橢圓
; CALL DEL2S
; CALL DISN ;顯示第0幅位圖
; CALL DISFS ;反色矩形
; CALL DEL2S
; CALL DISFS ;反色矩形
; CALL DEL2S
; CALL DISCLR ;矩形清除
; CALL DEL2S
; CALL LCD_CLR
;CALL DISN1 ;自動顯示位圖
;CALL SETTIME ;設置時間(當時間存在誤差時,可以重新設置時間)
; CALL TIME ;打開時間顯示功能
; CALL RETIME ;讀時間,必須在緊跟在"打開時間顯示功能"后面。
; CALL DEL2S
; CALL TIME1 ;關閉時間顯示功能
; CALL LCD_CLR
; CALL DISZZ ;顯示字符
;__________________________________________________
jia: ajmp main
;--------------------------------------------------
LOOP: NOP
MOV C,PINT
JC LOOP
CALL REXY ;讀被觸摸的X,Y 值
NOP
CALL DISVi_1 ;調用顯示變量子程序,顯示X軸坐標值。
CALL DISVi_2 ;調用顯示變量子程序,顯示Y軸坐標值。
CALL DISell_2 ;調用顯示圓子程序,在按下的地方顯示一個小圓。
RETI;;;;;;;;;;;;;
; LJMP LOOP
;**********************************************************************
;讀觸摸屏子程序(在實際應用中必須是在PINT產生中斷時才調用這個子程序)
REXY: NOP
CALL REBUY
CLR RWA ;讀數據時必須低電平
CALL EETASK ;產生下降沿時序
MOV CHX_DATH,P1 ;讀入的第一個數據送CHX_DATH
CALL EETASK
MOV CHX_DATL,P1 ;讀入的第二個數據送CHX_DATL
CALL EETASK
MOV CHY_DATH,P1 ;讀入的第三個數據送CHY_DATH
CLR END0 ;END0為低電平,表示讀最后一個數據
CALL EETASK ;產生下降沿時序
MOV CHY_DATL,P1 ;讀入的第四個數據送CHY_DATL
SETB END0
SETB RWA
RET
;************************************************************************
;查忙子程序
REBUY: CLR RWA
CLR END0 ;讀第一個數據時END0就低電平。則所讀數據為查忙信號
CALL EETASK
MOV A,P1
JNZ REBUY
SETB END0
SETB RWA
RET
;****************************************************************
;清屏子程序
LCD_CLR:
CALL REBUY ;查忙
SETB RWA
MOV P1,#043H ;發送清屏指令高字節
CALL EETASK
MOV P1,#04CH ;發送清屏指令低字節
CALL EETASK
MOV P1,#0E0H ;發送前景顏色E0H指令
CALL EETASK
MOV P1,#01CH ;發送背景顏色1FH指令
CLR END0 ;END0為低電平,表示寫最后一個數據
CALL EETASK
SETB END0
RET
;***********************************************************
;顯示字符子程序
DISZZ: CALL REBUY ;查忙
SETB RWA
MOV P1,#044H ;發送顯示字符指令高字節
CALL EETASK
MOV P1,#057H ;發送顯示字符指令低字節
CALL EETASK
MOV P1,#0E0H ;發送前景顏色E0H指令
CALL EETASK
MOV P1,#01FH ;發送背景顏色1FH指令
CALL EETASK
MOV P1,#000H ;X軸起點坐標高字節
CALL EETASK
MOV P1,#000H ;X軸起點坐標低字節
CALL EETASK
MOV P1,#000H ;Y軸起點坐標高字節
CALL EETASK
MOV P1,#000H ;Y軸起點坐標低字節
CALL EETASK
MOV P1,#0C7H ;送字符對用ASCII碼
CALL EETASK
MOV P1,#0EBH
CALL EETASK
MOV P1,#0B0H
CALL EETASK
MOV P1,#0B4H
CALL EETASK
MOV P1,#0B4H
CALL EETASK
MOV P1,#0A5H
CALL EETASK
MOV P1,#0C3H
CALL EETASK
MOV P1,#0FEH
CALL EETASK
MOV P1,#0C6H
CALL EETASK
MOV P1,#0C1H
CLR END0 ;END0為低電平,表示寫最后一個數據
CALL EETASK
SETB END0
RET
;***************************************************************
;顯示變量子程序1
DISVi_1:
CALL REBUY ;查忙
SETB RWA
MOV P1,#044H ;發送顯示變量指令高字節
CALL EETASK
MOV P1,#056H ;發送顯示變量指令低字節
CALL EETASK
MOV P1,#0E0H ;發送前景顏色E0H指令
CALL EETASK
MOV P1,#01FH ;發送背景顏色1FH指令
CALL EETASK
MOV P1,#000H ;X軸起點坐標高字節
CALL EETASK
MOV P1,#100 ;X軸起點坐標低字節
CALL EETASK
MOV P1,#000H ;Y軸起點坐標高字節
CALL EETASK
MOV P1,#000H ;Y軸起點坐標低字節
CALL EETASK
MOV P1,CHX_DATH ;變量值(2個字節)
CALL EETASK
MOV P1,CHX_DATL
CALL EETASK
MOV P1,#03H
CLR END0 ;END0為低電平,表示寫最后一個數據
CALL EETASK
SETB END0
RET
;*****************************************************************
;顯示變量子程序2
DISVi_2:
CALL REBUY ;查忙
SETB RWA
MOV P1,#044H ;發送顯示變量指令高字節
CALL EETASK
MOV P1,#056H ;發送顯示變量指令低字節
CALL EETASK
MOV P1,#0E0H ;發送前景顏色E0H指令
CALL EETASK
MOV P1,#01FH ;發送背景顏色1FH指令
CALL EETASK
MOV P1,#000H ;X軸起點坐標高字節
CALL EETASK
MOV P1,#150 ;X軸起點坐標低字節
CALL EETASK
MOV P1,#000H ;Y軸起點坐標高字節
CALL EETASK
MOV P1,#000H ;Y軸起點坐標低字節
CALL EETASK
MOV P1,CHY_DATH ;變量值(2個字節)
CALL EETASK
MOV P1,CHY_DATL
CALL EETASK
MOV P1,#03H
CLR END0 ;END0為低電平,表示寫最后一個數據
CALL EETASK
SETB END0
RET
;***********************************************************
;顯示橢圓子程序
DISell: CALL REBUY ;查忙
SETB RWA
MOV P1,#044H ;發送顯示橢圓指令高字節
CALL EETASK
MOV P1,#045H ;發送顯示橢圓指令低字節
CALL EETASK
MOV P1,#0E0H ;發送前景顏色E0H指令
CALL EETASK
MOV P1,#01FH ;發送背景顏色1FH指令
CALL EETASK
MOV P1,#000H ;圓心坐標X軸高字節
CALL EETASK
MOV P1,#0A0H ;圓心坐標X軸低字節
CALL EETASK
MOV P1,#000H ;圓心坐標Y軸高字節
CALL EETASK
MOV P1,#078H ;圓心坐標Y軸低字節,即圓心坐標為(00A0H,0078H)
CALL EETASK
MOV P1,#000H ;橢圓X軸半徑高字節
CALL EETASK
MOV P1,#01EH ;橢圓X軸半徑低字節
CALL EETASK
MOV P1,#000H ;橢圓Y軸半徑高字節
CALL EETASK
MOV P1,#032H ;橢圓Y軸半徑低字節(當橢圓X軸半徑=橢圓Y軸半徑的時,顯示為一個圓).
CLR END0 ;END0為低電平,表示寫最后一個數據
CALL EETASK
SETB END0
RET
;*************************************************************
;在按下的地方顯示圓子程序
DISell_2:
CALL REBUY ;查忙
SETB RWA
MOV P1,#044H
CALL EETASK
MOV P1,#045H
CALL EETASK
MOV P1,#0E0H ;發送前景顏色E0H指令
CALL EETASK
MOV P1,#01FH ;發送背景顏色1FH指令
CALL EETASK
MOV P1,CHX_DATH
CALL EETASK
MOV P1,CHX_DATL ;圓心坐標(XX)
CALL EETASK
MOV P1,#000H
CALL EETASK
MOV P1,CHY_DATL ;圓心坐標(YY)
CALL EETASK
MOV P1,#000H ;X軸半徑高字節
CALL EETASK
MOV P1,#004H ;X軸半徑低字節
CALL EETASK
MOV P1,#000H ;Y軸半徑高字節
CALL EETASK
MOV P1,#004H ;Y軸半徑低字節(X軸半徑=Y軸半徑的時,顯示為一個圓).
CLR END0 ;END0為低電平,表示寫最后一個數據
CALL EETASK
SETB END0
RET
;***************************************************************
;顯示直線子程序
DISLINE:
CALL REBUY ;查忙
SETB RWA
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -