;PA LED
;PC7 K7 (特種車)
;PC6 K6 MAINROAD
;PC5 K5 BRANCHROAD
.MODEL TINY
;DISPLAY
EXTRN Display8:NEAR; CS5
;INIT8255
COM_ADD EQU 0F003H; CS1
PA_ADD EQU 0F000H
PB_ADD EQU 0F001H
PC_ADD EQU 0F002H
;INIT8259
IO8259_0 EQU 0E000H; CS2
IO8259_1 EQU 0E001H
;INIT8253
COM_ADDR EQU 0D003H; CS3
T0_ADDR EQU 0D000H
T1_ADDR EQU 0D001H
T2_ADDR EQU 0D002H
WR_COM_AD_L EQU 0C004H ;寫左半屏指令地址Cs4
WR_COM_AD_R EQU 0C000H ;寫右半屏指令地址
WR_DATA_AD_L EQU 0C006H ;寫左半屏數據地址
WR_DATA_AD_R EQU 0C002H ;寫右半屏數據地址
RD_BUSY_AD EQU 0C001H ;查忙地址
RD_DATA_AD EQU 0C003H ;讀數據地址
X EQU 0B8H ;起始顯示行基址
Y EQU 040H ;起始顯示列基址
FirstLine EQU 0C0H ;起始顯示行
.STACK 100
.DATA
BUFFER DB 8 DUP(?)
Counter db ?
ReDisplayFlag DB 0
HUNDREDFLAG DB 0
LRFLAG DB 0
LED_Data DB 01111101B
DB 11111101B
DB 10111101B
DB 11010111B
DB 11011111B
DB 11011011B
;-- 文字: G --
;-- 宋體12; 此字體下對應的點陣爲:寬x高=8x16 --
Line0_1 DB 0C0H,030H,008H,008H,008H,038H,000H,000H,007H,018H,020H,020H,022H,01EH,002H,000H
;-- 文字: a --
;-- 宋體12; 此字體下對應的點陣爲:寬x高=8x16 --
Line0_2 DB 000H,000H,080H,080H,080H,080H,000H,000H,000H,019H,024H,022H,022H,022H,03FH,020H
;-- 文字: r --
;-- 宋體12; 此字體下對應的點陣爲:寬x高=8x16 --
Line0_3 DB 080H,080H,080H,000H,080H,080H,080H,000H,020H,020H,03FH,021H,020H,000H,001H,000H
;-- 文字: d --
;-- 宋體12; 此字體下對應的點陣爲:寬x高=8x16 --
Line0_4 DB 000H,000H,000H,080H,080H,088H,0F8H,000H,000H,00EH,011H,020H,020H,010H,03FH,020H
;-- 文字: e --
;-- 宋體12; 此字體下對應的點陣爲:寬x高=8x16 --
Line0_5 DB 000H,000H,080H,080H,080H,080H,000H,000H,000H,01FH,022H,022H,022H,022H,013H,000H
;-- 文字: n --
;-- 宋體12; 此字體下對應的點陣爲:寬x高=8x16 --
Line0_6 DB 080H,080H,000H,080H,080H,080H,000H,000H,020H,03FH,021H,000H,000H,020H,03FH,020H
;-- 文字: --
;-- 宋體12; 此字體下對應的點陣爲:寬x高=8x16 --
Line0_7 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: V --
;-- 宋體12; 此字體下對應的點陣爲:寬x高=8x16 --
Line0_8 DB 008H,078H,088H,000H,000H,0C8H,038H,008H,000H,000H,007H,038H,00EH,001H,000H,000H
;-- 文字: 0 --
;-- 宋體12; 此字體下對應的點陣爲:寬x高=8x16 --
Line0_9 DB 000H,0E0H,010H,008H,008H,010H,0E0H,000H,000H,00FH,010H,020H,020H,010H,00FH,000H
;-- 文字: . --
;-- 宋體12; 此字體下對應的點陣爲:寬x高=8x16 --
Line0_10 DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,030H,030H,000H,000H,000H,000H,000H
;-- 文字: 1 --
;-- 宋體12; 此字體下對應的點陣爲:寬x高=8x16 --
Line0_11 DB 000H,010H,010H,0F8H,000H,000H,000H,000H,000H,020H,020H,03FH,020H,020H,000H,000H
;-- 文字: 白 --
Line1_1 DB 000H,000H,0F8H,008H,008H,00CH,00AH,009H,008H,008H,008H,008H,0F8H,000H,000H,000H
DB 000H,000H,0FFH,041H,041H,041H,041H,041H,041H,041H,041H,041H,0FFH,000H,000H,000H
;-- 文字: 天 --
Line1_2 DB 040H,040H,042H,042H,042H,042H,042H,0FEH,042H,042H,042H,042H,042H,040H,040H,000H
DB 080H,080H,040H,020H,010H,00CH,003H,000H,003H,00CH,010H,020H,040H,080H,080H,000H
;-- 文字: 模 --
Line1_3 DB 010H,010H,0D0H,0FFH,090H,014H,0E4H,0AFH,0A4H,0A4H,0A4H,0AFH,0E4H,004H,000H,000H
DB 004H,003H,000H,0FFH,000H,089H,04BH,02AH,01AH,00EH,01AH,02AH,04BH,088H,080H,000H
;-- 文字: 式 --
Line1_4 DB 010H,010H,090H,090H,090H,090H,090H,010H,010H,0FFH,010H,010H,011H,016H,010H,000H
DB 000H,020H,060H,020H,03FH,010H,010H,010H,000H,003H,00CH,010H,020H,040H,0F8H,000H
;-- 文字: 主 --
Line2_1 DB 000H,008H,008H,008H,008H,008H,009H,0FAH,008H,008H,008H,008H,008H,008H,000H,000H
DB 040H,040H,041H,041H,041H,041H,041H,07FH,041H,041H,041H,041H,041H,040H,040H,000H
;-- 文字: 幹 --
Line2_2 DB 080H,080H,082H,082H,082H,082H,082H,0FEH,082H,082H,082H,082H,082H,080H,080H,000H
DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: 道 --
Line2_3 DB 040H,040H,042H,0CCH,000H,008H,0E9H,0AAH,0B8H,0A8H,0A8H,0AAH,0E9H,008H,000H,000H
DB 000H,040H,020H,01FH,020H,040H,05FH,04AH,04AH,04AH,04AH,04AH,05FH,040H,040H,000H
;-- 文字: 來 --
Line2_4 DB 000H,008H,008H,028H,0C8H,008H,008H,0FFH,008H,008H,088H,068H,008H,008H,000H,000H
DB 021H,021H,011H,011H,009H,005H,003H,0FFH,003H,005H,009H,011H,011H,021H,021H,000H
;-- 文字: 車 --
Line2_5 DB 000H,008H,088H,048H,028H,018H,00FH,0E8H,008H,008H,008H,008H,008H,008H,000H,000H
DB 008H,008H,009H,009H,009H,009H,009H,0FFH,009H,009H,009H,009H,009H,008H,008H,000H
;-- 文字: 夜 --
Line3_1 DB 004H,004H,084H,0E4H,01CH,004H,005H,0C6H,03CH,0A4H,024H,024H,0E4H,004H,004H,000H
DB 002H,001H,000H,0FFH,000H,082H,081H,046H,028H,010H,029H,046H,041H,080H,080H,000H
;-- 文字: 間 --
Line3_2 DB 000H,0F8H,001H,006H,000H,0F0H,012H,012H,012H,0F2H,002H,002H,002H,0FEH,000H,000H
DB 000H,0FFH,000H,000H,000H,01FH,011H,011H,011H,01FH,000H,040H,080H,07FH,000H,000H
;-- 文字: 模 --
Line3_3 DB 010H,010H,0D0H,0FFH,090H,014H,0E4H,0AFH,0A4H,0A4H,0A4H,0AFH,0E4H,004H,000H,000H
DB 004H,003H,000H,0FFH,000H,089H,04BH,02AH,01AH,00EH,01AH,02AH,04BH,088H,080H,000H
;-- 文字: 式 --
Line3_4 DB 010H,010H,090H,090H,090H,090H,090H,010H,010H,0FFH,010H,010H,011H,016H,010H,000H
DB 000H,020H,060H,020H,03FH,010H,010H,010H,000H,003H,00CH,010H,020H,040H,0F8H,000H
;-- 文字: 次 --
Line4_1 DB 000H,002H,00CH,080H,060H,080H,040H,030H,00FH,0C8H,008H,008H,028H,018H,000H,000H
DB 002H,002H,07EH,001H,080H,040H,020H,018H,006H,001H,006H,018H,020H,040H,080H,000H
;-- 文字: 幹 --
Line4_2 DB 080H,080H,082H,082H,082H,082H,082H,0FEH,082H,082H,082H,082H,082H,080H,080H,000H
DB 000H,000H,000H,000H,000H,000H,000H,0FFH,000H,000H,000H,000H,000H,000H,000H,000H
;-- 文字: 道 --
Line4_3 DB 040H,040H,042H,0CCH,000H,008H,0E9H,0AAH,0B8H,0A8H,0A8H,0AAH,0E9H,008H,000H,000H
DB 000H,040H,020H,01FH,020H,040H,05FH,04AH,04AH,04AH,04AH,04AH,05FH,040H,040H,000H
;-- 文字: 來 --
Line4_4 DB 000H,008H,008H,028H,0C8H,008H,008H,0FFH,008H,008H,088H,068H,008H,008H,000H,000H
DB 021H,021H,011H,011H,009H,005H,003H,0FFH,003H,005H,009H,011H,011H,021H,021H,000H
;-- 文字: 車 --
Line4_5 DB 000H,008H,088H,048H,028H,018H,00FH,0E8H,008H,008H,008H,008H,008H,008H,000H,000H
DB 008H,008H,009H,009H,009H,009H,009H,0FFH,009H,009H,009H,009H,009H,008H,008H,000H
.CODE
START:
;*************8255init*********************
MOV AX,@DATA
MOV DS,AX
NOP
CALL DelayTime
MOV Counter,0
CALL LedDisplay
MOV DX,COM_ADD
MOV AL,88H
OUT DX,AL
MOV DX,PA_ADD
MOV AL,0FFH
OUT DX,AL
;8253
MOV DX,COM_ADDR
MOV AL,00110101B;00110101B
OUT DX,AL
NOP
LEA BX,LED_Data
NOP
;*************8259init*********************
CALL Init8259
CALL WriIntver
; CALL LCD_INIT ;液晶初始化
;CALL DelayTime
;CALL DisLine1 ;第2行顯示”白天模式”
;CALL DelayTime
;CALL DisLine3 ;第4行顯示”黑夜模式 ”
; CALL DelayTime
STI
;*****************main**********************
MAINLOOP:
CALL SWITCHMODE
DAYTIMEMODE:
CALL LCD_INIT ;液晶初始化
CALL DisLine0
CALL DisLine1 ;第2行顯示”白天模式”
MOV DX,PA_ADD
MOV AL,0
XLAT
OUT DX,AL
;CALL DL10S
;MOV BUFFER+3,01H
;LEA SI,BUFFER
;CALL Display8
; CALL LedDisplayH
MOV LRFLAG,1
MOV HUNDREDFLAG,1
MOV CX,100
MOV Counter,0
START2:
;DEC Counter
;TEST Counter,5
;JZ K1
;MOV HUNDREDFLAG,0
;K1:
MOV AL,Counter
SUB AL,1
DAS
MOV Counter,AL
CALL LedDisplay
MOV AL,1
XLAT
OUT DX,AL
CALL DL500ms
MOV AL,0
XLAT
OUT DX,AL
CALL DL500ms
LOOP START2
MOV CX,100
MOV Counter,0
STARTn:
MOV HUNDREDFLAG,0
;DEC Counter
;TEST Counter,5
;JZ K1
;MOV HUNDREDFLAG,0
;K1:
MOV AL,Counter
SUB AL,1
DAS
MOV Counter,AL
CALL LedDisplay
MOV AL,1
XLAT
OUT DX,AL
CALL DL500ms
MOV AL,0
XLAT
OUT DX,AL
CALL DL500ms
LOOP STARTn
MOV AL,2
XLAT
OUT DX,AL
CALL DL3S
MOV AL,3
XLAT
OUT DX,AL
;CALL DL5S
MOV LRFLAG,0
MOV CX,100
MOV Counter,0
START3:
; DEC Counter
MOV AL,Counter
SUB AL,1
DAS
MOV Counter,AL
CALL LedDisplay
MOV AL,4
XLAT
OUT DX,AL
CALL DL500ms
MOV AL,3
XLAT
OUT DX,AL
CALL DL500ms
LOOP START3
MOV AL,5
XLAT
OUT DX,AL
CALL DL3S
JMP MAINLOOP
;*****************SWITCHMODE***********************
SWITCHMODE:
MOV DX,PC_ADD
IN AL,DX
TEST AL,10000000B ;10000000選擇PC7口(NIGHT)
JZ NEXT1
JMP NIGHTMODE
NEXT1: MOV DX,PC_ADD
IN AL,DX
TEST AL,01000000B ;01000000選擇PC6口BRANCHROAD&MAINROAD
JZ NEXT2
JMP SPMAINROAD
NEXT2:
MOV DX,PC_ADD
IN AL,DX
TEST AL,00100000B ;00100000選擇PC6口BRANCHROA&MAINROAD
JZ LONGJMP
JMP SPBRANCHROAD
LONGJMP: JMP DAYTIMEMODE
;*****************SPECIALMODE**********************
SPMAINROAD:
MOV DX,PA_ADD
MOV AL,01111101B
OUT DX,AL
NOP
;CALL DL500ms
MOV DX,PA_ADD
CALL LCD_INIT
CALL DisLine0
CALL DisLine2 ;顯示”主幹道來車 ”
JMP START
SPBRANCHROAD:
MOV DX,PA_ADD
MOV AL,11010111B
OUT DX,AL
;CALL DL500ms
CALL LCD_INIT
CALL DisLine0
CALL DisLine4 ;顯示”次幹道來車 ”
JMP START
NIGHTMODE:
CALL LCD_INIT
CALL DisLine0
CALL DisLine3 ;顯示”黑夜模式 ”
MOV DX,PA_ADD
MOV AL,10111011B
OUT DX,AL
CALL DL500ms
MOV DX,PA_ADD
MOV AL,0FFH
OUT DX,AL
CALL DL500ms
JMP START
;*****************ENDOFSPECIALMODE***************
;*****************ENDOFMAIN**********************
;*****************LEDDISPLAY*********************
LedDisplay PROC NEAR
MOV AL,Counter
MOV AH,AL
AND AL,0FH
MOV BUFFER,AL
AND AH,0F0H
ROR AH,4
MOV BUFFER+1,AH
MOV BUFFER+2,10H
MOV BUFFER+3,10H
MOV BUFFER+4,10H
MOV BUFFER+5,10H
MOV BUFFER+6,10H
MOV BUFFER+7,10H
LEA SI,BUFFER
CALL Display8
RET
LedDisplay ENDP
;*****************DELAY500MS*********************
DL500ms PROC NEAR
MOV DX,T0_ADDR
MOV AL,00H
OUT DX,AL
MOV AL,10H
OUT DX,AL
MOV DX,COM_ADDR
MOV AL,77H
OUT DX,AL
MOV DX,T1_ADDR
MOV AL,00H
OUT DX,AL
MOV AL,10H
OUT DX,AL
DELAY: MOV DX,PC_ADD
IN AL,DX ;
TEST AL,10H
JZ DELAY;jump if zero
NOP
RET
DL500ms ENDP
DL3S PROC NEAR
PUSH CX
MOV CX,6
DL3S1: CALL DL500ms
LOOP DL3S1
POP CX
RET
ENDP
DL5S PROC NEAR
PUSH CX
MOV CX,10
DL5S1: CALL DL500ms
LOOP DL5S1
POP CX
RET
ENDP
DL10S PROC NEAR
PUSH CX
MOV CX,20
DL10S1: CALL DL500ms
LOOP DL10S1
POP CX
RET
ENDP
;*****************INTERRUPT*********************
Init8259 PROC NEAR
MOV DX,IO8259_0
MOV AL,13H
OUT DX,AL
MOV DX,IO8259_1
MOV AL,08H
OUT DX,AL
MOV AL,09H
OUT DX,AL
MOV AL,0FEH
OUT DX,AL
RET
Init8259 ENDP
WriIntver PROC NEAR
PUSH ES
MOV AX,0
MOV ES,AX
MOV DI,20H
LEA AX,INT_0
STOSW
MOV AX,CS
STOSW
POP ES
RET
WriIntver ENDP
;*****************INTERRUPT_HANDLER*********************
INT_0:
;JMP START
PUSH DX
PUSH AX
MOV AL,Counter
ADD AL,1
DAA
MOV DX,PA_ADD
MOV AL,01111111B
OUT DX,AL
; MOV Counter,AL
; MOV ReDisplayFlag,1
MOV DX,IO8259_0
MOV AL,20H
OUT DX,AL
MOV Counter,0
CALL LedDisplay
JMP START
POP AX
POP DX
IRET
;延時程序
DelayTime PROC NEAR
MOV CX,0
LOOP $
LOOP $
RET
DelayTime ENDP
;顯示”白天模式”
DisLine1 PROC NEAR
LEA SI,Line1_1
MOV AL,4 ;A-起始顯示行地址,第2行
MOV AH,32 ;B-起始顯示列地址,第32列,以下同
CALL WordDISL ;左半屏,顯示一個字子程序
LEA SI,Line1_2
MOV AL,4
MOV AH,48
CALL WordDISL
LEA SI,Line1_3
MOV AL,4
MOV AH,0
CALL WordDISR ;右半屏,顯示一個字子程序
LEA SI,Line1_4
MOV AL,4
MOV AH,16
CALL WordDISR
RET
DisLine1 ENDP
;顯示”主幹道來車”
DisLine2 PROC NEAR
LEA SI,Line2_1
MOV AL,4 ;A-起始顯示行地址,第2行
MOV AH,32 ;B-起始顯示列地址,第32列,以下同
CALL WordDISL ;左半屏,顯示一個字子程序
LEA SI,Line2_2
MOV AL,4
MOV AH,48
CALL WordDISL
LEA SI,Line2_3
MOV AL,4
MOV AH,0
CALL WordDISR ;右半屏,顯示一個字子程序
LEA SI,Line2_4
MOV AL,4
MOV AH,16
CALL WordDISR
LEA SI,Line2_5
MOV AL,4
MOV AH,32
CALL WordDISR
RET
DisLine2 ENDP
;顯示”次幹道來車”
DisLine4 PROC NEAR
LEA SI,Line4_1
MOV AL,4 ;A-起始顯示行地址,第2行
MOV AH,32 ;B-起始顯示列地址,第32列,以下同
CALL WordDISL ;左半屏,顯示一個字子程序
LEA SI,Line4_2
MOV AL,4
MOV AH,48
CALL WordDISL
LEA SI,Line4_3
MOV AL,4
MOV AH,0
CALL WordDISR ;右半屏,顯示一個字子程序
LEA SI,Line4_4
MOV AL,4
MOV AH,16
CALL WordDISR
LEA SI,Line4_5
MOV AL,4
MOV AH,32
CALL WordDISR
RET
DisLine4 ENDP
;第4行顯示黑夜模式”
DisLine3 PROC NEAR
LEA SI,Line3_1
MOV AL,4 ;A-起始顯示行地址,第6行
MOV AH,32 ;B-起始顯示列地址,第32列,以下同
CALL WordDISL ;左半屏,顯示一個字子程序
LEA SI,Line3_2
MOV AL,4
MOV AH,48
CALL WordDISL
LEA SI,Line3_3
MOV AL,4
MOV AH,0
CALL WordDISR ;右半屏,顯示一個字子程序
LEA SI,Line3_4
MOV AL,4
MOV AH,16
CALL WordDISR
RET
DisLine3 ENDP
;液晶初始化
LCD_INIT PROC NEAR
MOV AL,3EH ;初始化左半屏,關顯示
CALL WRComL ;寫指令子程序
MOV AL,FirstLine ;設置起始顯示行,第0行
CALL WRComL
MOV AL,3EH ;初始化右半屏,關顯示
CALL WRComR ;寫指令子程序
MOV AL,FirstLine ;設置起始顯示行,第0行
CALL WRComR
CALL LCDClear ;清屏
MOV AL,3FH ;開顯示
CALL WRComL
MOV AL,3FH ;開顯示
CALL WRComR
RET
LCD_INIT ENDP
;清屏
LCDClear PROC NEAR
;清左半屏
MOV AL,0 ;起始行,第0行
MOV AH,0 ;起始列,第0列
LCDClearL1: PUSH AX
MOV CX,64
CALL SETXYL ;設置起始顯示行列地址
LCDClearL2: MOV AL,0
CALL WRDATAL
LOOP LCDClearL2
POP AX
INC AX
CMP AL,8 ;共8行
JNZ LCDClearL1
;清右半屏
MOV AL,0 ;起始行,第0行
MOV AH,0 ;起始列,第0列
LCDClearR1: PUSH AX
MOV CX,64
CALL SETXYR ;設置起始顯示行列地址
LCDClearR2: XOR AL,AL
CALL WRDATAR
LOOP LCDClearR2
POP AX
INC AL
CMP AL,8 ;共8行
JNZ LCDClearR1
RET
LCDClear ENDP
;顯示字體,顯示一個數據要佔用X行兩行位置
;左半屏顯示一個字節/字:AL-起始顯示行序數X(0-7);AH-起始顯示列序數Y(0-63);SI-顯示字
數據首地址
ByteDisL PROC NEAR
MOV CX,8 ;顯示8個字節數據,用於顯示一個英文/符號
CALL DispL
RET
ByteDisL ENDP
WordDisL PROC NEAR
MOV CX,16 ;顯示16字節數據,用於顯示一個漢字
CALL DispL
RET
WordDisL ENDP
DispL PROC NEAR
PUSH AX
PUSH CX
CALL SETXYL ;設置起始顯示行列地址
CALL DisplayL ;顯示上半行數據
POP CX
POP AX
INC AL
CALL SETXYL ;設置起始顯示行列地址
CALL DisplayL ;顯示下半行數據
RET
DispL ENDP
;右半屏顯示一個字節/字:AL-起始顯示行序數X(0-7);AH-起始顯示列序數Y(0-63);SI-顯示字
數據首地址
ByteDisR PROC ENAR
MOV CX,8 ;顯示8個字節數據,用於顯示一個英文/符號
CALL DispR
RET
ByteDisR ENDP
WordDisR PROC NEAR
MOV CX,16 ;顯示16字節數據,用於顯示一個漢字
CALL DispR
RET
WordDisR ENDP
DispR PROC NEAR
PUSH AX
PUSH CX
CALL SETXYR ;設置起始顯示行列地址
CALL DisplayR ;顯示上半行數據
POP CX
POP AX
INC AL
CALL SETXYR ;設置起始顯示行列地址
CALL DisplayR ;顯示下半行數據
RET
DispR ENDP
;顯示圖形
;顯示左半屏一行圖形,AL-X起始行序數(0-7),AH-Y起始列地址序數(0-63)
LineDisL PROC NEAR
MOV CX,64
CALL SETXYL ;設置起始顯示行列
CALL DisplayL ;顯示數據
RET
LineDisL ENDP
;顯示右半屏一行圖形,AL-X起始行地址序數(0-7),AH-Y起始列地址序數(0-63)
LineDisR PROC NEAR
MOV CX,64
CALL SETXYR ;設置起始顯示行列
CALL DisplayR ;顯示數據
RET
LineDisR ENDP
;基本控制
;顯示左半屏數據,R7-顯示數據個數
DisplayL PROC NEAR
LODSB
CALL WRDataL ;寫左半屏數據
LOOP DisplayL
RET
DisplayL ENDP
;顯示右半屏數據,R7-顯示數據個數
DisplayR PROC NEAR
LODSB
CALL WRDataR ;寫左半屏數據
LOOP DisplayR
RET
DisplayR ENDP
;設置左半屏起始顯示行列地址,AL-X起始行序數(0-7),AH-Y起始列序數(0-63)
SETXYL PROC NEAR
OR AL,X ;行地址=行序數+行基址
CALL WRComL
MOV AL,AH
OR AL,Y ;列地址=列序數+列基址
CALL WRComL
RET
SETXYL ENDP
;設置右半屏起始顯示行列地址,AL-X起始行序數(0-7),AH-Y起始列序數(0-63)
SETXYR PROC NEAR
OR AL,X ;行地址=行序數+行基址
CALL WRComR
MOV AL,AH
OR AL,Y ;列地址=列序數+列基址
CALL WRComR
RET
SETXYR ENDP
;寫左半屏控制指令,A-寫入指令
WRComL PROC NEAR
MOV DX,WR_COM_AD_L
OUT DX,AL
WRComL1: MOV DX,RD_BUSY_AD
IN AL,DX
TEST AL,80H ;檢查液晶顯示是否處於忙狀態
JNZ WRComL1
RET
WRComL ENDP
;寫右半屏控制指令,A-寫入指令
WRComR PROC NEAR
MOV DX,WR_COM_AD_R
OUT DX,AL
WRComR1: MOV DX,RD_BUSY_AD
IN AL,DX
TEST AL,80H ;檢查液晶顯示是否處於忙狀態
JNZ WRComR1
RET
WRComR ENDP
;寫左半屏數據,A-寫入數據
WRDataL PROC NEAR
MOV DX,WR_DATA_AD_L
OUT DX,AL
WRDataL1: MOV DX,RD_BUSY_AD
IN AL,DX
TEST AL,80H ;檢查液晶顯示是否處於忙狀態
JNZ WRDataL1
RET
WRDataL ENDP
;寫右半屏數據,A-寫入數據
WRDataR PROC NEAR
MOV DX,WR_DATA_AD_R
OUT DX,AL
WRDataR1: MOV DX,RD_BUSY_AD
IN AL,DX
TEST AL,80H ;檢查液晶顯示是否處於忙狀態
JNZ WRDataR1
RET
WRDataR ENDP
;第3行顯示"STAR ES51PRO"
DisLine0 PROC NEAR
LEA SI,Line0_1
MOV AL,2 ;A-起始顯示行地址,第4行
MOV AH,16 ;B-起始顯示列地址,第16列,以下同
CALL ByteDISL ;左半屏,顯示一個字節子程序
LEA SI,Line0_2
MOV AL,2
MOV AH,24
CALL ByteDISL
LEA SI,Line0_3
MOV AL,2
MOV AH,32
CALL ByteDISL
LEA SI,Line0_4
MOV AL,2
MOV AH,40
CALL ByteDISL
LEA SI,Line0_5
MOV AL,2
MOV AH,48
CALL ByteDISL
LEA SI,Line0_6
MOV AL,2
MOV AH,56
CALL ByteDISL
LEA SI,Line0_7
MOV AL,2
MOV AH,0
CALL ByteDISR ;右半屏字節顯示數據
LEA SI,Line0_8
MOV AL,2
MOV AH,8
CALL ByteDISR
LEA SI,Line0_9
MOV AL,2
MOV AH,16
CALL ByteDISR
LEA SI,Line0_10
MOV AL,2
MOV AH,24
CALL ByteDISR
LEA SI,Line0_11
MOV AL,2
MOV AH,32
CALL ByteDISR
RET
DisLine0 ENDP
END START
交通燈控制系統課程設計(基於STAR-ES598PCI)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.