📄 40x2.txt
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 中断入口程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
ORG 0000H ;程序执行开始地址
LJMP MAIN ;跳至MAIN执行
ORG 0003H ;外中断0中断入口地址
RETI ;中断返回(不开中断)
ORG 000BH ;定时器T0中断入口地址
RETI ;中断返回(不开中断)
ORG 0013H ;外中断1中断入口地址
RETI ;中断返回(不开中断)
ORG 001BH ;定时器T1中断入口地址
RETI ;中断返回(不开中断)
ORG 0023H ;串行口中断入口地址
RETI ;中断返回(不开中断)
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 初始化程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
CLEARMEN: MOV A,#01H ;清屏
LCALL OUTI ;调用指令传送程序
LCALL DL1MS ;确保清屏成功
LCALL DL1MS ;确保清屏成功
MOV A,#38H ;置8位接口,双行显示,5*7点阵
LCALL OUTI ;调用指令传送程序
MOV A,#0CH ;置显示开,关光标,不闪烁
LCALL OUTI ;调用指令传送程序
MOV A,#06H ;置RAM读写按地址递增
LCALL OUTI ;调用指令传送程序
MOV A,#80H ;置DD RAM首地址为00H
LCALL OUTI ;调用指令传送程序
RET ;返回
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 主程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
MAIN: LCALL CLEARMEN ;调用初始化程序
START: LCALL DISP3 ;调用中文显示程序
LCALL DELAY ;停止显示1S
AJMP START ;跳回START循环
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 中文显示程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
DISP3: MOV A,#40H ;置CG RAM首地址为00H
LCALL OUTI ;调用指令传送程序
MOV B,#00H ;字符数据地址
MOV R1,#40H ;字符计数初值
DISPD: MOV A,B
MOV DPTR,#TAB3
MOVC A,@A+DPTR
LCALL OUTD
INC B
DJNZ R1,DISPD
MOV A,#0C0H ;置DD RAM首地址为14H
LCALL OUTI ;调用指令传送程序
MOV B,#00H ;字符数据地址
MOV R1,#14H ;字符计数初值
DISPE: MOV A,B
MOV DPTR,#TAB4
MOVC A,@A+DPTR
LCALL OUTD
INC B
DJNZ R1,DISPE
MOV A,#0CH ;开显示
LCALL OUTI
RET ;返回
TAB3: DB 08H,0FH,12H,0FH,0AH,1FH,02H,02H ;年
DB 0FH,09H,0FH,09H,0FH,09H,09H,13H ;月
DB 0FH,09H,09H,0FH,09H,09H,0FH,00H ;日
DB 1FH,0AH,0AH,1FH,0AH,0AH,0AH,12H ;开
DB 08H,0FH,0AH,17H,02H,07H,02H,03H ;钟
DB 04H,1FH,15H,15H,1FH,04H,04H,04H ;
DB 08H,0EH,09H,15H,0AH,04H,08H,05H ;然
DB 04H,05H,1FH,04H,04H,0AH,11H,0AH ;
DB 04H,0AH,11H,0EH,05H,05H,09H,13H ;分
DB 00H,00H,0FH,09H,0FH,09H,0FH,00H ;时
DB 02H,02H,0FH,02H,0AH,02H,02H,06H ;
DB 02H,0EH,14H,0FH,04H,15H,04H,04H ;秒
DB 04H,04H,04H,14H,15H,05H,02H,0CH ;
TAB4: DB '2004',00H,'07',01H,'08',02H,' ',04H,05H,' ',03H,' ',06H,07H
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 指令传送程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
OUTI: CLR P3.1 ;传送指令
CLR P3.1
CLR P3.3
CLR P3.3
SETB P3.0
SETB P3.0
MOV P1,A
MOV P1,A
CLR P3.0
CLR P3.0
MOV R4,#02H ;延时1MS
TM4: MOV R5,#0FFH
TM5: DJNZ R5,TM5
DJNZ R4,TM4
RET
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 数据传送程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
OUTD: SETB P3.3 ;传送数据
SETB P3.3
CLR P3.1
CLR P3.1
SETB P3.0
SETB P3.0
MOV P1,A
MOV P1,A
CLR P3.0
CLR P3.0
MOV R4,#0FFH ;延时0.5MS
TM2: DJNZ R4,TM2
RET
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 1毫秒延时程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
DL1MS: MOV 75H,#14H
DL1: MOV 76H,#19H
DL2: DJNZ 76H,DL2
DJNZ 75H,DL1
RET
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 1秒延时程序 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
DELAY: MOV 73H,#10H
DLA: MOV 74H,#0FFH
DLB: LCALL DL1MS
DJNZ 74H,DLB
DJNZ 73H,DLA
MOV A,#01H ;清屏
LCALL OUTI ;调用指令传送程序
LCALL DL1MS ;确保清屏成功
LCALL DL1MS ;确保清屏成功
RET
END
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 程序结束 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -