📄 vfd_display.asm
字号:
;;;DATA:2004-5-30
title "vfd dis DRIVER "
include "P16F630.INC"
LIST P=16F630
;;__config _WDT_OFF&_XT_OSC
__idlocs 4611h
errorlevel 2,-207,-215,-306
LCD_TEMP EQU 2DH
BIT_COUNT EQU 2EH
BUFF_COUNT EQU 2FH
;;;;--------------LCD RAM ---------------------
cblock 30h
LCD_BUFF:0CH
SEG_NUM
endc
#DEFINE CS PORTC,0
#DEFINE CLK PORTC,1
#DEFINE DATA PORTC,2
ORG 000H
NOP
GOTO RESET
org 004h
nop
goto $
ORG 010H
RESET
BCF STATUS,RP0
BCF STATUS,RP1
CLRF INTCON
CLRF TMR0
BSF STATUS,RP0
MOVLW B'10000111'
MOVWF OPTION_REG
BCF STATUS,RP0
BTFSS INTCON,T0IF
GOTO $-1
MOVLW B'00110000'
MOVWF PORTC
BSF STATUS,RP0
MOVLW B'11001000'
MOVWF TRISC
BCF STATUS,RP0
VFD_DISPLAY_INTI
NOP
BSF CS
NOP
NOP
BCF CS
NOP
NOP
BSF CS
MOVLW 00H ;;;CONTROL COMMAND:4*16(seg*com)
MOVWF LCD_TEMP
BCF CS
CALL SENTBYTE
BSF CS
MOVLW 40H ;;;DATA COMMAND:
MOVWF LCD_TEMP
BCF CS
CALL SENTBYTE
BSF CS
MOVLW 0C0H ;;;ADDRESS COMMAND
MOVWF LCD_TEMP
BCF CS
CALL SENTBYTE
BCF CS ;;;???????ADDR后紧跟DATA,CS不变
;;;----
MOVLW LCD_BUFF ;;;DATA SENT
MOVWF FSR
MOVLW 10H
MOVWF BUFF_COUNT
SENTLOOP
BCF CS
;;MOVF INDF,W
MOVLW 0FFH ;; 0FFH ALL SEGMENT FLASH
MOVWF LCD_TEMP
CALL SENTBYTE
INCF FSR
DECFSZ BUFF_COUNT,F
GOTO SENTLOOP
BSF CS
;;;----
MOVLW 8FH ;;;DIMMING COMMAND
MOVWF LCD_TEMP
BCF CS
CALL SENTBYTE
BSF CS
GOTO $ ;;;;;;;;;;?????????????????
RETURN
;;--------
SENTBYTE
NOP
BCF INTCON,GIE
MOVLW 08H
MOVWF BIT_COUNT
SENTBYTE_LP
NOP
BCF CLK
NOP
NOP
BCF DATA
BTFSC LCD_TEMP,0
BSF DATA
NOP
RRF LCD_TEMP,F
NOP
NOP
BSF CLK ;;;;;RISING EDGING INYPUY
DECFSZ BIT_COUNT,F
GOTO SENTBYTE_LP
NOP
RETURN
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -