;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)
最新推荐文章于 2023-01-11 16:22:06 发布