;VFD控制驅(qū)動(dòng)器 ;占用: ACC, R0, R1
;************ 公共變量定義 **************** PUBLIC WVFD_6311 PUBLIC GETKEY_6311 PUBLIC SETUP_6311 PUBLIC DIM_VFD PUBLIC CLEAR_VFD PUBLIC WLED_6311 ;************ 公共變量定義 **************** ; EXTRN BIT(B_CLOSE_MACH) ;現(xiàn)鍵值寄存 ;************* 變量說明 ******************* BC_DIN_6311 BIT P2.4 ;數(shù)據(jù)輸入腳 BC_DOUT_6311 BIT P2.5 ;數(shù)據(jù)輸出腳 BC_CLK_6311 BIT P2.6 ;時(shí)鐘 BC_STB_6311 BIT P2.3 ;使能腳
;************ 變量說明 *****************
;************** 常數(shù)定義 ******************
;************** 常數(shù)定義 ****************** PT6311KEY_NUM EQU 16D ;現(xiàn)在用的6311鍵總數(shù)(48個(gè)) READ_6311KEY EQU 42H ;PT6311讀鍵值命令符 ;===========公共子程序 (可被C調(diào)用)==================
;************* 寫6311顯示內(nèi)存 ************** ;******************************************** ;參數(shù)1: PAR 要寫的顯存地址(MSB: 1 1 B5,B4,B3,B2,B1,B0 :LSB)(B5-B0 MEM START ADDRESS) ;參數(shù)2: PAR+03H 寫的高1位數(shù)據(jù) ;參數(shù)3: PAR+02H 寫的中8位數(shù)據(jù) ;參數(shù)4: PAR+01H 寫的低8位數(shù)據(jù)(先送出, 且從bit0位開始) ;返回: ;占用: ACC
WVFD_6311: ;發(fā)送數(shù)據(jù)到PT6311進(jìn)行顯示 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 ; JB B_CLOSE_MACH,CLEAR_LBL1 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 CLEAR_LBL1: MOV A, #00H LCALL DISP ;send data to pt6311 here is transmission data MOV A, #00H LCALL DISP ;send data to pt6311 here is transmission data SETB BC_STB_6311 ;PT6311 DISABLE RET ;******** 讀鍵盤按鍵子程序 ************ ;*************************************** ;參數(shù): ;返回: 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發(fā)送讀鍵值命令 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
;***************************************** ;參數(shù): ;返回: ;占用: ACC
SETUP_6311: CLR BC_STB_6311 ;ready to send data to pt6311 STB MOV A,#0CH ;0000,1010=0AH LCALL DISP ;send command to pt6311,here is set displayer mod,11dig/17seg SETB BC_STB_6311 ;STD RET
;********** 打開熒光顯示 ************** ;參數(shù): ;返回: ;占用: ACC
DIM_VFD: CLR BC_STB_6311 ;STD=0 點(diǎn)亮顯示字符 NOP MOV A,#8FH LCALL DISP ;send data to pt6311,here is control disp dimming NOP SETB BC_STB_6311 ;STD=1 RET ;********** 清除11段數(shù)據(jù)顯示(清熒光屏) ******** ;參數(shù): ;返回: ;占用: ACC, R1
CLEAR_VFD: MOV R1,#0EH ;清除14段數(shù)據(jù)顯示 MOV PAR, #0C0H ;置顯存第1段的地址 LBL200: MOV PAR+01H, #00H ;置低8位數(shù)據(jù) MOV PAR+02H, #00H ;置中8位數(shù)據(jù) LCALL WVFD_6311 ;送入pt6311顯存 MOV A, PAR ADD A, #03H MOV PAR, A ;start address move to next digit 下一個(gè) DJNZ R1,LBL200 RET
;********** 送數(shù)據(jù)到6311的LED口 *********
;參數(shù): PAR 要送入的數(shù)據(jù) ;返回: ;占用: 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
;************** 寫一字節(jié)到6311 ************ ;參數(shù): ACC 要寫入的數(shù)據(jù)(從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
|
|