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

📄 pt6311.asm

📁 完整功放的控制程序
💻 ASM
字号:
;*******************************第一个PT6311 器件子程序集 ****************************
;VFD控制驱动器
;占用:	ACC, R0, R1

	;************ 公共变量定义 ****************
	PUBLIC	WVFD_6311
	PUBLIC	GETKEY_6311
	PUBLIC	SETUP_6311
	PUBLIC  DIM_VFD
	PUBLIC  WLED_6311
       
	EXTRN	DATA(DIM_NUM)          ;现键值寄存
       	
       	;************* 变量说明 *******************
       	BC_DIN_6311	BIT	P2.6	;数据输入脚
       	BC_DOUT_6311	BIT	P2.6	;数据输出脚
	BC_CLK_6311	BIT	P3.6	;时钟
	BC_STB_6311	BIT	P3.7	;使能脚

	
	;************** 常数定义 ******************
	PT6311KEY_NUM 	EQU   4         ;现在用的6311键总数(48个)
	READ_6311KEY  	EQU   42H       ;PT6311读键值命令符
;=============================== 公共子程序 (可被C调用) ===============================

;************* 写6311显示内存  **************
;********************************************
;参数1: PAR	要写的显存地址(MSB: 1 1 B5,B4,B3,B2,B1,B0 :LSB)(B5-B0 MEM START ADDRESS)
;参数2: PAR+03H	写的高1位数据
;参数3: PAR+02H 写的中8位数据
;参数4: PAR+01H	写的低8位数据(先送出, 且从bit0位开始)
;返回:
;占用: 	ACC

WVFD_6311:                	 ;发送数据到PT6311进行显示
          CLR   BC_STB_6311      ;pt6311 stb=0 (ENABLE)
          MOV   A,#40H           ;data set command--write data to disp mem by increment address mod
          LCALL DISP             ;sendn data to pt6311 here is data set command
          SETB  BC_STB_6311      ;STD=1 (DISABLE)
          NOP
          CLR   BC_STB_6311      ;PT6311 ENABLE
          MOV   A, PAR        	 ;pt6311 disp mem start mem in 1DH
          LCALL DISP             ;send data to pt6311 here is address set command
          MOV   A, PAR+02H
          LCALL DISP             ;send data to pt6311 here is transmission data
          MOV   A, PAR+01H
          LCALL DISP             ;send data to pt6311 here is transmission data
          SETB  BC_STB_6311      ;PT6311 DISABLE
          RET


;******** 读键盘按键子程序  ************
;***************************************
;参数:
;返回: PAR 	返回键值, 0=无按键
;占用: ACC

GETKEY_6311:
       SETB  BC_STB_6311                ;STB
       SETB  BC_DOUT_6311      		;pt6311 Dout
       SETB  BC_DIN_6311      		;pt6311 Din
       NOP 
       CLR   BC_STB_6311      		;pt6311 STB
       MOV   A, #READ_6311KEY
       LCALL DISP      			;向pt6311发送读键值命令
       MOV   PAR, #PT6311KEY_NUM
       NOP
LBL_P8:
       CLR   BC_CLK_6311      		;Pt6311 CLK
       NOP
       NOP
       NOP  				
       NOP
       MOV   C,BC_DOUT_6311    		;pt6311 Dout
       JC    LBL_P9 
       NOP
       SETB  BC_CLK_6311      		;Pt6311 CLK
       NOP
       DJNZ  PAR, LBL_P8 		;PAR表示键位置
       LJMP  LBL_P99
LBL_P9:
       NOP
LBL_P99:
       SETB  BC_STB_6311      		;pt6311 STB
       RET 

;*****************************************						
;********** 送数据到6311的LED口 *********
;****************************************
;参数:	PAR	要送入的数据
;返回:
;占用: 	ACC

WLED_6311:
    CLR  BC_STB_6311            ;pt6311 stb=0 (ENABLE)
    MOV  A,#41H            	;data set command--write data to LED PORT
    LCALL DISP             	;sendn data to pt6311 here is data set command
    MOV  A, PAR         	;pt6311 LED DATA
    LCALL DISP             	;send data to pt6311 here is address set command
    SETB BC_STB_6311            ;PT6311 DISABLE
    RET

;*********************************************
;参数:
;返回:
;占用: ACC

SETUP_6311:
       CLR   BC_STB_6311      ;ready to send data to pt6311 STB
       MOV   A,#0CH           ;0000,1100=0CH  13G,15P
       LCALL DISP             ;send command to pt6311,here is set displayer mod,11dig/17seg
       SETB  BC_STB_6311      ;STD
       RET

;********** 打开荧光显示  **************
;参数:
;返回:
;占用: 	ACC

DIM_VFD:  CLR   BC_STB_6311             ;STD=0  点亮显示字符
	  NOP
	  MOV   A,DIM_NUM
	  CJNE  A,#00H,LBL_DIM_00
	  MOV   A,#88H
	  LJMP  LBL_DIM_11
LBL_DIM_00:
	  CJNE  A,#01H,LBL_DIM_1
	  MOV   A,#89H
	  LJMP  LBL_DIM_11
LBL_DIM_1:	  
	  CJNE  A,#02H,LBL_DIM_2
	  MOV   A,#8AH
	  LJMP  LBL_DIM_11
LBL_DIM_2:	  
	  CJNE  A,#03H,LBL_DIM_3
	  MOV   A,#8BH
	  LJMP  LBL_DIM_11
LBL_DIM_3:	  
	  CJNE  A,#04H,LBL_DIM_4
	  MOV   A,#8CH
	  LJMP  LBL_DIM_11
LBL_DIM_4:	  
	  CJNE  A,#05H,LBL_DIM_5
	  MOV   A,#8DH
	  LJMP  LBL_DIM_11
LBL_DIM_5:	  
	  CJNE  A,#06H,LBL_DIM_6
	  MOV   A,#8EH
	  LJMP  LBL_DIM_11
LBL_DIM_6:
          MOV    A,#8FH
LBL_DIM_11:          
          MOV   C,B_CLOSE_MACH
          MOV   ACC.3,C
          
          LCALL DISP             	;send data to pt6311,here is control disp dimming
          NOP
          SETB  BC_STB_6311             ;STD=1
          RET
;********** 清除11段数据显示(清荧光屏) ********

;********** 送数据到6311的LED口 *********
;================================= 文件内部子程序 ================================
;************** 写一字节到6311 ************
;******************************************
;参数:	ACC	要写入的数据(从bit0位开始送出)
;返回:
;占用: 	ACC, R0

DISP:     MOV   R0,#008H         	;send command to pt6311
          CLR   C
LBL206:   CLR   BC_CLK_6311             ;PT6311 CLK
          RRC   A
          MOV   BC_DIN_6311,C           ;send data to pt6311
          NOP
          NOP
          NOP
          NOP
          NOP
          SETB  BC_CLK_6311             ;CLK 
          NOP
          NOP
          NOP
          NOP
          DJNZ  R0, LBL206
          SETB  BC_DIN_6311
          SETB  BC_CLK_6311             ;BC_CLK_6311 normal high
          RET
;******************************************

⌨️ 快捷键说明

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