📄 yxd-cf12232a06d.asm
字号:
;#########################################################################
;##### #####
;##### Program Name : ST-7920 LCD CONTROL TEST #####
;##### CPU : WINBOND 78E52-40 #####
;##### CRYSTAL : 12MHz #####
;##### INTERFACE : 8-Bit Parallel 68 Series #####
;##### #####
;##### EditcModify Date: 2001/05/20 #####
;##### Author : KEVIN #####
;##### #####
;#########################################################################
;##### #####
;##### Control Pin Port-3 #####
;##### data bus D0..D7 Map Port-1 #####
;##### VDD=5.0V #####
;##### #####
;#########################################################################
RS EQU P3.0 ;
RW EQU P3.1 ;
E EQU P3.2 ;
;PORT-1 P10...P17 ==== D0...D7 ;
;---------------------------------------;
;REGISTER DEFINE ;
BYTE1 EQU 20H ;
BYTE2 EQU 21H ;
EX_FT EQU 22H ;
NR_FT EQU 23H ;
SEC EQU 24H ;
MIN EQU 25H ;
HOUR EQU 26H ;
G_LEN EQU 27H ;
G_WID EQU 28H ;
G_ROW EQU 29H ;
G_COL EQU 2AH ;
STACK EQU 30H ;
;#########################################################################
;##### 巨集定义 #####
;#########################################################################
S_LINE MACRO ADDRESS ;
MOV A,ADDRESS ;
CALL DISPLAY_DELAY ;
ENDM ;
;---------------------------------------;
G_BLOCK MACRO LENGTH,WIDTH,START_ROW,START_COLUMN
MOV G_ROW,START_ROW ;
MOV G_COL,START_COLUMN ;
MOV G_LEN,LENGTH ;
MOV G_WID,WIDTH ;
CALL GRAP_SUB ;
ENDM ;
;---------------------------------------;
G_ADDR MACRO B1,B2 ;
MOV BYTE1,B1 ;
MOV BYTE2,B2 ;
CALL SET_GRAPHIC_ADDRESS ;
ENDM ;
;---------------------------------------;
WR2DATA MACRO B1,B2 ;
MOV BYTE1,B1 ;
MOV BYTE2,B2 ;
CALL WRITE_DOUBLE_DATA ;
ENDM ;
;---------------------------------------;
INS_W MACRO INS ;
MOV A,INS ;
CALL WRINS ;
ENDM ;
;---------------------------------------;
DATA_W MACRO DATA ;
MOV A,DATA ;
CALL WRDATA ;
ENDM ;
;#########################################################################
;##### 中断矢量表 #####
;#########################################################################
ORG 00H ;
JMP RESET ;REST ** RESET **
ORG 03H ;
RETI ;IE0 外部中断-0
ORG 0BH ;
RETI ;IE1 计时器-0
ORG 13H ;
RETI ;IE1 外部中断-1
ORG 1BH ;
RETI ;TF1 计时器-1
ORG 23H ;
RETI ;RI & TI 接收/发射
ORG 2BH ;
RETI ;TF2 & EXF2 计时器-2
;#########################################################################
;##### 主程序 #####
;#########################################################################
;*******************************;
RESET: ;*** 设定各寄存器 ***;
;*******************************;
MOV SP,#STACK ;
MOV TMOD,#02 ;TIMER0(MODE2)
MOV TH0,#0 ;COUNT VALUE=256
SETB TR0 ;START COUNT
CALL DELAY1 ;
MOV EX_FT,#00110110B ;
MOV NR_FT,#00110000B ;
;===============================;
; LCD 开机设定 ;
;===============================;
MOV A,#30H ;FUNCTION SET 8 bit
CALL WRINS_NOCHK ;
CALL DELAY1 ;
MOV A,#30H ;FUNCTION SET 8 bit
CALL WRINS_NOCHK ;
CALL DELAY1 ;
MOV A,#30H ;FUNCTION SET 8 bit
CALL WRINS_NOCHK ;
CALL DELAY1 ;
;
MOV A,#06H ;ENTRY MODE SET
CALL WRINS_NOCHK ;
CALL DELAY1 ;
;
MOV A,#01 ;CLEAR DISPLAY (DDRAM)
CALL WRINS_NOCHK ;
CALL DELAY1 ;
;
MOV A,#0CH ;DISPLAY ON
CALL WRINS_NOCHK ;
CALL DELAY1 ;
;===============================;
; LCD 测试流程 ;
;===============================;
MAIN: CALL CLEAR_GRAPHIC ; <----------------------------------------------
INS_W #01H ; CLEAR DISPALY (DDRAM) |
INS_W #0CH ; DISPALY ON |
S_LINE #80H ; |
DB 'welcome ST7920 ',0; |
S_LINE #90H ; |
DB 'www.sitronix.com.tw ',0; |
CALL DLY1S ; |
INS_W #01 ; CLEAR DISPALY (DDRAM) |
MOV DPTR,#PIC_TABLE ; SET GDRAM DATA |
G_BLOCK #32,#3,#0,#0 ; |
G_BLOCK #32,#3,#0,#3 ; |
G_BLOCK #32,#3,#0,#6 ; |
G_BLOCK #32,#3,#32,#0 ; |
G_BLOCK #32,#3,#32,#3 ; |
CALL DLY1S ; |
S_LINE #80H ; |
DB 'Graphic + Character ',0; |
S_LINE #90H ; |
DB '绘图与文字混合使用 ',0; |
CALL DLY1S ; |
;-------------------------------; |
MOV R0,#04 ;LOOP COUNT = 4 |
$0 MOV EX_FT,#00110100B ;graphic mode off <--- |
INS_W EX_FT ; | |
CALL DLY1S ; | |
MOV EX_FT,#00110110B ;graphic mode on | |
INS_W EX_FT ; | |
CALL DLY1S ; | |
DJNZ R0,$0 ;--------------------- |
;-------------------------------; |
CALL DLY1S ; |
MOV R1,#0 ; |
$1 MOV A,R1 ;<------ 上卷 |
CALL ROW_DISPLAY ; | |
INC R1 ; | |
CALL DELAY1 ; | |
CALL DELAY1 ; | |
CALL DELAY1 ; | |
CJNE R1,#33,$1 ;------- |
CALL DLY1S ; |
;-------------------------------; |
MOV R1,#32 ; |
$2 MOV A,R1 ;<------ 下卷 |
CALL ROW_DISPLAY ; | |
DEC R1 ; | |
CALL DELAY1 ; | |
CALL DELAY1 ; | |
CALL DELAY1 ; | |
CJNE R1,#0-1,$2 ;------- |
CALL DLY1S ; |
;-------------------------------; |
JMP MAIN ;------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;; ;;;;;;;;
;;;;;;;; 功能: 清除 GRAPHIC RAM ;;;;;;;;
;;;;;;;; 输入参数: 输出参数: ;;;;;;;;
;:::::;: :::::::;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLEAR_GRAPHIC: ;
PUSH 0 ;
PUSH 1 ;
MOV EX_FT,#00110100B ;
MOV R0,#0 ;
MOV R1,#0 ; ADDRESS R0=X R1=Y
$2 G_ADDR R0,R1 ;
$1 DATA_W #00 ;
DATA_W #00 ; DATA = 00,00
INC R0 ;
MOV A,R0 ;
CJNE A,#16,$1 ;
INC R1 ;
MOV R0,#0 ;
MOV A,R1 ;
CJNE A,#64,$2 ;
MOV EX_FT,#00110110B ;
POP 1 ;
POP 0 ;
RET ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;; ;;;;;;;;
;;;;;;;; 功能: 填 GRAPHIC RAM DATA ;;;;;;;;
;;;;;;;; 输入参数: 输出参数: ;;;;;;;;
;:::::;: :::::::;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
GRAP_SUB: ;
SETB RS0 ;
MOV A,G_ROW ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -