📄 80c_pio.asm
字号:
MOV P1,#044H ;发送显示直线指令高字节
CALL EETASK
MOV P1,#04CH ;发送显示直线指令低字节
CALL EETASK
MOV P1,#0E0H ;发送前景颜色E0H指令
CALL EETASK
MOV P1,#01FH ;发送背景颜色1FH指令
CALL EETASK
MOV P1,#000H ;X轴起点坐标高字节
CALL EETASK
MOV P1,#005H ;X轴起点坐标低字节
CALL EETASK
MOV P1,#000H ;Y轴起点坐标高字节
CALL EETASK
MOV P1,#005H ;Y轴起点坐标低字节
CALL EETASK
MOV P1,#000H ;X轴终点坐标高字节
CALL EETASK
MOV P1,#064H ;X轴终点坐标低字节
CALL EETASK
MOV P1,#000H ;Y轴终点坐标高字节
CALL EETASK
MOV P1,#064H ;Y轴终点坐标低字节
CALL EETASK
MOV P1,#000H ;直线宽度高字节
CALL EETASK
MOV P1,#002H ;直线宽度低字节
CLR END0 ;END0为低电平,表示写最后一个数据
CALL EETASK
SETB END0
RET
;********************************************************************
;显示位图子程序
DISN: CALL REBUY ;查忙
SETB RWA
MOV P1,#044H ;发送显示位图指令高字节
CALL EETASK
MOV P1,#053H ;发送显示位图指令低字节
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,#000H ;显示第0幅位图
CLR END0 ;END0为低电平,表示写最后一个数据
CALL EETASK
SETB END0
RET
;******************************************************************
;自动显示位图子程序
DISN1: CALL REBUY ;查忙
SETB RWA
MOV P1,#05AH ;发送自动显示位图指令高字节
CALL EETASK
MOV P1,#044H ;发送自动显示位图指令低字节
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,#000H
CALL EETASK
MOV P1,#002H ;逐幅显示0-2幅位图
CALL EETASK
MOV P1,#006H ;时间间隔06H
CLR END0 ;END0为低电平,表示写最后一个数据
CALL EETASK
SETB END0
RET
;**************************************************************
;反色矩形子程序
DISFS: CALL REBUY ;查忙
SETB RWA
MOV P1,#043H ;发送反色矩形指令高字节
CALL EETASK
MOV P1,#04EH ;发送反色矩形指令低字节
CALL EETASK
MOV P1,#0E0H ;发送前景颜色E0H指令
CALL EETASK
MOV P1,#01FH ;发送背景颜色1FH指令
CALL EETASK
MOV P1,#000H ;矩形X轴起点坐标高字节
CALL EETASK
MOV P1,#064H ;矩形X轴起点坐标低字节
CALL EETASK
MOV P1,#000H ;矩形Y轴起点坐标高字节
CALL EETASK
MOV P1,#03CH ;矩形Y轴起点坐标低字节
CALL EETASK
MOV P1,#000H ;矩形长度高字节
CALL EETASK
MOV P1,#064H ;矩形长度低字节
CALL EETASK
MOV P1,#000H ;矩形宽度高字节
CALL EETASK
MOV P1,#064H ;矩形宽度低字节
CLR END0 ;END0为低电平,表示写最后一个数据
CALL EETASK
SETB END0
RET
;**********************************************************
;矩形清除子程序
DISCLR: CALL REBUY ;查忙
SETB RWA
MOV P1,#043H ;发送矩形清除指令高字节
CALL EETASK
MOV P1,#058H ;发送矩形清除指令低字节
CALL EETASK
MOV P1,#0E0H ;发送前景颜色E0H指令
CALL EETASK
MOV P1,#01FH ;发送背景颜色1FH指令
CALL EETASK
MOV P1,#000H ;矩形X轴起点坐标高字节
CALL EETASK
MOV P1,#064H ;矩形X轴起点坐标低字节
CALL EETASK
MOV P1,#000H ;矩形Y轴起点坐标高字节
CALL EETASK
MOV P1,#03CH ;矩形Y轴起点坐标低字节
CALL EETASK
MOV P1,#000H ;矩形长度高字节
CALL EETASK
MOV P1,#064H ;矩形长度低字节
CALL EETASK
MOV P1,#000H ;矩形宽度高字节
CALL EETASK
MOV P1,#064H ;矩形宽度低字节
CLR END0 ;END0为低电平,表示写最后一个数据
CALL EETASK
SETB END0
RET
;****************************************************************
;设置时间子程序
SETTIME:
CALL REBUY ;查忙
SETB RWA
MOV P1,#053H ;发送设置时间指令高字节
CALL EETASK
MOV P1,#054H ;发送设置时间指令低字节
CALL EETASK
MOV P1,#0E0H ;发送前景颜色E0H指令
CALL EETASK
MOV P1,#01FH ;发送背景颜色1FH指令
CALL EETASK
MOV P1,#004H ;2004年
CALL EETASK
MOV P1,#008H ;8月
CALL EETASK
MOV P1,#01AH ;26日
CALL EETASK
MOV P1,#0C0H ;13时
CALL EETASK
MOV P1,#003H ;3分
CALL EETASK
MOV P1,#000H ;0秒
CALL EETASK
MOV P1,#001H ;星期
CLR END0 ;END0为低电平,表示写最后一个数据
CALL EETASK
SETB END0
RET
;******************************************************************
;显示时间子程序
TIME: CALL REBUY ;查忙
SETB RWA
MOV P1,#044H ;发送显示时间指令高字节
CALL EETASK
MOV P1,#054H ;发送显示时间指令低字节
CALL EETASK
MOV P1,#0E0H ;发送前景颜色E0H指令
CALL EETASK
MOV P1,#01FH ;发送背景颜色1FH指令
CALL EETASK
MOV P1,#000H ;X轴起点坐标高字节
CALL EETASK
MOV P1,#005H ;X轴起点坐标低字节
CALL EETASK
MOV P1,#000H ;Y轴起点坐标高字节
CALL EETASK
MOV P1,#005H ;Y轴起点坐标低字节
CALL EETASK
MOV P1,#003H ;以方式3显示(共有6种显示方式,01H,02H,03H,11H,12H,13H)
CLR END0 ;END0为低电平,表示写最后一个数据
CALL EETASK
SETB END0
RET
;*********************************************************************
;关闭时间显示子程序
TIME1: CALL REBUY ;查忙
SETB RWA
MOV P1,#044H ;发送显示时间指令高字节
CALL EETASK
MOV P1,#054H ;发送显示时间指令低字节
CALL EETASK
MOV P1,#0E0H ;发送前景颜色E0H指令
CALL EETASK
MOV P1,#01FH ;发送背景颜色1FH指令
CALL EETASK
MOV P1,#000H ;X轴起点坐标高字节
CALL EETASK
MOV P1,#005H ;X轴起点坐标低字节
CALL EETASK
MOV P1,#000H ;Y轴起点坐标高字节
CALL EETASK
MOV P1,#005H ;Y轴起点坐标低字节
CALL EETASK
MOV P1,#000H ;00H不显示时间.
CLR END0 ;END0为低电平,表示写最后一个数据
CALL EETASK
SETB END0
RET
;*******************************************************
JUDG: NOP
CALL REBUY
CLR RWA
CALL EETASK
MOV JUDE,P1
RET
;*******************************************************
;读时间子程序(读出来的时间是上回调用TIME子程序的时间)
RETIME: NOP
CALL REBUY ;查忙
CLR RWA
CALL EETASK
MOV JUDE,P1
CALL EETASK
MOV Year,P1 ;年
CALL EETASK
MOV Mon,P1 ;月
CALL EETASK
MOV Day,P1 ;日
CALL EETASK
MOV Hour,P1 ;时
CALL EETASK
MOV Min,P1 ;分
CALL EETASK
MOV Sec,P1 ;秒
CALL EETASK
MOV Date,P1 ;星期
CLR END0 ;END0为低电平,表示读最后一个数据
CALL EETASK
SETB END0
SETB RWA
RET
;***********************************************************
;产生使能信号
EETASK: CLR EE
SETB EE
NOP
NOP ;经过测试用89C51,12MHz时需加入3个NOP空指令。
;89C51,22MHz时需加入5个NOP空指令。
NOP ;其它型号的单片机需适当调节这里的延时,
; NOP
; NOP
RET
;*************************************************
;延时子程序
DELAY:
MOV R5,#0
MOV R6,#0
MOV R7,#1
DEL:
DJNZ R5,DEL
DJNZ R6,DEL
DJNZ R7,DEL
RET
DEL2S:
MOV R5,#0
MOV R6,#0
MOV R7,#10
D2S:
DJNZ R5,D2S
DJNZ R6,D2S
DJNZ R7,D2S
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -