⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 80c_pio.asm

📁 用并口通信时,只需发送仿真软件的十六进制显示窗口的第四个字节后的所有数据。 如:清全屏的十六进制显示窗口是55AA0001434C42,采用并口通信时只需发送434C42
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;==========================演示程序=========================
;用并口通信时,只需发送仿真软件的十六进制显示窗口的第四个字节后的所有数据。
;如:清全屏的十六进制显示窗口是55AA0001434C42,采用并口通信时只需发送434C42
;
;P1为数据总线
;定义LCD控制线
  EE         EQU  P3.1          ;使能信号.下降沿有效。
  RWA        EQU  P3.0          ;读数据时必须低电平,向控制板写数据时必须高电平
  END0       EQU  P3.2          ;指令结束信号,在读最后一个数据时,或写最后一个数据时必须是低电平。
                                ;当读第一个数据时END0就为低电平则所读为查忙数据。
  PINT       EQU  P3.3          ;触摸屏中断,产生低电平。
                                ;另一功能是当控制板上电准备就绪时产生一个5MS的低电平
  CHX_DATH   EQU  40H
  CHX_DATL   EQU  41H
  CHY_DATH   EQU  42H
  CHY_DATL   EQU  43H

  JUDE       EQU  30H
  Year       EQU  31H
  Mon        EQU  32H
  Day        EQU  33H
  Hour       EQU  34H
  Min        EQU  35H
  Sec        EQU  36H
  Date       EQU  37H

  	ORG  	0000H
	JMP  	START
	ORG	0003H
	RETI
	ORG	000BH
	JMP	LOOP;;;;;;;;;;
	ORG	0013H
	LJMP	REXY
	ORG	001BH
	RETI
	ORG	0023H
	RETI
	ORG	002BH
	RETI
	ORG	0030H
  	NOP

START:
  	NOP
  	MOV   C,PINT
  	;JC    START                 ;检查控制板是否上电就绪。若用仿真器仿真时应屏蔽此指令。

MAIN:	NOP
  	CALL  LCD_CLR                ;清屏
;main1:  CALL  DISLINE                ;显示直线
;  	CALL  DISell                 ;显示椭圆
;  	CALL  DEL2S
;  	CALL  DISN                   ;显示第0幅位图
;  	CALL  DISFS                  ;反色矩形
;  	CALL  DEL2S
;  	CALL  DISFS                  ;反色矩形
;  	CALL  DEL2S
;  	CALL  DISCLR                 ;矩形清除
;  	CALL  DEL2S
;  	CALL  LCD_CLR
  	;CALL  DISN1                 ;自动显示位图

  	;CALL  SETTIME               ;设置时间(当时间存在误差时,可以重新设置时间)
;  	CALL  TIME                   ;打开时间显示功能
;  	CALL  RETIME                 ;读时间,必须在紧跟在"打开时间显示功能"后面。
;  	CALL  DEL2S
;  	CALL  TIME1                  ;关闭时间显示功能
;  	CALL  LCD_CLR
; 	CALL  DISZZ                  ;显示字符
;__________________________________________________
jia:	ajmp	main
;--------------------------------------------------
LOOP:	NOP
  	MOV  C,PINT
  	JC   LOOP
  	CALL  REXY                   ;读被触摸的X,Y 值
  	NOP
  	CALL  DISVi_1                ;调用显示变量子程序,显示X轴坐标值。
  	CALL  DISVi_2                ;调用显示变量子程序,显示Y轴坐标值。
  	CALL  DISell_2               ;调用显示圆子程序,在按下的地方显示一个小圆。
	RETI;;;;;;;;;;;;;
;  	LJMP  LOOP
;**********************************************************************
;读触摸屏子程序(在实际应用中必须是在PINT产生中断时才调用这个子程序)
REXY:	NOP
  	CALL  REBUY
  	CLR   RWA                    ;读数据时必须低电平
  	CALL  EETASK                 ;产生下降沿时序
  	MOV   CHX_DATH,P1            ;读入的第一个数据送CHX_DATH
  	CALL  EETASK
  	MOV   CHX_DATL,P1            ;读入的第二个数据送CHX_DATL
  	CALL  EETASK
  	MOV   CHY_DATH,P1            ;读入的第三个数据送CHY_DATH
  	CLR   END0                   ;END0为低电平,表示读最后一个数据
  	CALL  EETASK                 ;产生下降沿时序
  	MOV   CHY_DATL,P1            ;读入的第四个数据送CHY_DATL
  	SETB  END0
  	SETB  RWA
  	RET
;************************************************************************
;查忙子程序
REBUY:	CLR   RWA
  	CLR   END0        ;读第一个数据时END0就低电平。则所读数据为查忙信号
  	CALL  EETASK
  	MOV   A,P1
  	JNZ   REBUY
  	SETB  END0
  	SETB  RWA
  	RET
;****************************************************************
;清屏子程序
LCD_CLR:
	CALL  REBUY                  ;查忙
  	SETB  RWA
  	MOV   P1,#043H               ;发送清屏指令高字节
  	CALL  EETASK
  	MOV   P1,#04CH               ;发送清屏指令低字节
  	CALL  EETASK

  	MOV   P1,#0E0H               ;发送前景颜色E0H指令
  	CALL  EETASK
  	MOV   P1,#01CH               ;发送背景颜色1FH指令
  	CLR   END0              ;END0为低电平,表示写最后一个数据
  	CALL  EETASK
  	SETB  END0
  	RET
;***********************************************************
;显示字符子程序
DISZZ:	CALL  REBUY                  ;查忙
  	SETB  RWA
  	MOV   P1,#044H               ;发送显示字符指令高字节
  	CALL  EETASK
  	MOV   P1,#057H               ;发送显示字符指令低字节
  	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,#0C7H               ;送字符对用ASCII码
  	CALL  EETASK
  	MOV   P1,#0EBH
  	CALL  EETASK

  	MOV   P1,#0B0H
  	CALL  EETASK
  	MOV   P1,#0B4H
  	CALL  EETASK

  	MOV   P1,#0B4H
  	CALL  EETASK
  	MOV   P1,#0A5H
  	CALL  EETASK

  	MOV   P1,#0C3H
  	CALL  EETASK
  	MOV   P1,#0FEH
  	CALL  EETASK

  	MOV   P1,#0C6H
  	CALL  EETASK
  	MOV   P1,#0C1H
  	CLR   END0           ;END0为低电平,表示写最后一个数据
  	CALL  EETASK
  	SETB  END0
  	RET
;***************************************************************
;显示变量子程序1
DISVi_1:
	CALL  REBUY                  ;查忙
  	SETB  RWA
  	MOV   P1,#044H               ;发送显示变量指令高字节
  	CALL  EETASK
  	MOV   P1,#056H               ;发送显示变量指令低字节
  	CALL  EETASK

  	MOV   P1,#0E0H               ;发送前景颜色E0H指令
  	CALL  EETASK
  	MOV   P1,#01FH               ;发送背景颜色1FH指令
  	CALL  EETASK

  	MOV   P1,#000H               ;X轴起点坐标高字节
  	CALL  EETASK
  	MOV   P1,#100                ;X轴起点坐标低字节
  	CALL  EETASK
  	MOV   P1,#000H               ;Y轴起点坐标高字节
  	CALL  EETASK
  	MOV   P1,#000H               ;Y轴起点坐标低字节
  	CALL  EETASK

  	MOV   P1,CHX_DATH            ;变量值(2个字节)
  	CALL  EETASK
  	MOV   P1,CHX_DATL
  	CALL  EETASK


  	MOV   P1,#03H
  	CLR   END0             ;END0为低电平,表示写最后一个数据
  	CALL  EETASK
  	SETB  END0
 	RET
;*****************************************************************
;显示变量子程序2
DISVi_2:
	CALL  REBUY                  ;查忙
  	SETB  RWA
  	MOV   P1,#044H               ;发送显示变量指令高字节
  	CALL  EETASK
  	MOV   P1,#056H               ;发送显示变量指令低字节
  	CALL  EETASK

  	MOV   P1,#0E0H               ;发送前景颜色E0H指令
  	CALL  EETASK
  	MOV   P1,#01FH               ;发送背景颜色1FH指令
  	CALL  EETASK

  	MOV   P1,#000H               ;X轴起点坐标高字节
  	CALL  EETASK
  	MOV   P1,#150                ;X轴起点坐标低字节
  	CALL  EETASK
  	MOV   P1,#000H               ;Y轴起点坐标高字节
  	CALL  EETASK
  	MOV   P1,#000H               ;Y轴起点坐标低字节
  	CALL  EETASK

  	MOV   P1,CHY_DATH            ;变量值(2个字节)
  	CALL  EETASK
  	MOV   P1,CHY_DATL
  	CALL  EETASK


  	MOV   P1,#03H
  	CLR   END0           ;END0为低电平,表示写最后一个数据
  	CALL  EETASK
  	SETB  END0
  	RET
;***********************************************************
;显示椭圆子程序
DISell:	CALL  REBUY                  ;查忙
  	SETB  RWA
  	MOV   P1,#044H               ;发送显示椭圆指令高字节
  	CALL  EETASK
  	MOV   P1,#045H               ;发送显示椭圆指令低字节
  	CALL  EETASK

  	MOV   P1,#0E0H               ;发送前景颜色E0H指令
  	CALL  EETASK
  	MOV   P1,#01FH               ;发送背景颜色1FH指令
  	CALL  EETASK

  	MOV   P1,#000H               ;圆心坐标X轴高字节
  	CALL  EETASK
  	MOV   P1,#0A0H               ;圆心坐标X轴低字节
  	CALL  EETASK
  	MOV   P1,#000H               ;圆心坐标Y轴高字节
  	CALL  EETASK
  	MOV   P1,#078H      ;圆心坐标Y轴低字节,即圆心坐标为(00A0H,0078H)
  	CALL  EETASK

  	MOV   P1,#000H               ;椭圆X轴半径高字节
  	CALL  EETASK
  	MOV   P1,#01EH               ;椭圆X轴半径低字节
  	CALL  EETASK
  	MOV   P1,#000H               ;椭圆Y轴半径高字节
  	CALL  EETASK

  	MOV   P1,#032H      ;椭圆Y轴半径低字节(当椭圆X轴半径=椭圆Y轴半径的时,显示为一个圆).
  	CLR   END0                   ;END0为低电平,表示写最后一个数据
  	CALL  EETASK
  	SETB  END0
  	RET
;*************************************************************
;在按下的地方显示圆子程序
DISell_2:
  	CALL  REBUY                  ;查忙
  	SETB  RWA
  	MOV   P1,#044H
  	CALL  EETASK
  	MOV   P1,#045H
  	CALL  EETASK

  	MOV   P1,#0E0H               ;发送前景颜色E0H指令
  	CALL  EETASK
  	MOV   P1,#01FH               ;发送背景颜色1FH指令
  	CALL  EETASK

  	MOV   P1,CHX_DATH
  	CALL  EETASK
  	MOV   P1,CHX_DATL             ;圆心坐标(XX)
  	CALL  EETASK
  	MOV   P1,#000H
  	CALL  EETASK
  	MOV   P1,CHY_DATL             ;圆心坐标(YY)
  	CALL  EETASK

  	MOV   P1,#000H                ;X轴半径高字节
  	CALL  EETASK
  	MOV   P1,#004H                ;X轴半径低字节
  	CALL  EETASK
  	MOV   P1,#000H                ;Y轴半径高字节
  	CALL  EETASK

  	MOV   P1,#004H     ;Y轴半径低字节(X轴半径=Y轴半径的时,显示为一个圆).
  	CLR   END0         ;END0为低电平,表示写最后一个数据
  	CALL  EETASK
  	SETB  END0
  	RET
;***************************************************************
;显示直线子程序
DISLINE:
  	CALL  REBUY                   ;查忙
  	SETB  RWA

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -