📄 pt6311.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 + -