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

📄 ha0042s.asm

📁 HT16512 VFD控制器的使用,采用ASM语言
💻 ASM
字号:
;*********************************************
;FILE NAME:	FRONT PANEL
;MCU:		HT48R10A-1
;MAST OPTION:	WDT CLOCK SOURCE: DISABLE WDT
;		CLR WDT: ONE
;		TIMER CLOCK SOURCE: SYSTEM CLOCK
;		WAKE-UP PA: NONE
;		INPUT TYPE PA: SCHMITT TRIGGER
;		PULL-HIGH: PA,PB,PC
;		BZ/BZB: ALL DISABLE
;		LVR: ENABLE
;		OSC: EXT. CRYSTAL
;		FOSC: EXTERNAL
;		SYSVOLT: 5.0V
;		SYSFREQ: 8MHZ
;		PWM: DISABLE
;		PFD: DISABLE
;AUTHOR:	RADOME
;HISTORY:	2003.07.08
;*********************************************
include ht48r10a-1.inc

;----------------------------------------
vfd_mosi	equ	pa.5		;define vfd data_in signal (di pin)
vfd_mosi_ctrl	equ	pac.5 
vfd_miso	equ	pa.4		;define	vfd data_out (do pin)
vfd_miso_ctrl	equ	pac.4 
vfd_clk		equ	pa.6		;define	vfd clk signal(clk pin)
vfd_clk_ctrl	equ	pac.6
vfd_cs		equ	pa.7		;define	vfd cs signal(cs pin)
vfd_cs_ctrl	equ	pac.7  
;*********************************************
FrontPanel_data	.section 'data'
;*********************************************
;System
acc_bk		db	?		;define register for the backup of acc
status_bk	db	?		;define register for the backup of status
pa_bk		db	?		;define register for the backup of pa

;VFD
data_buffer1	db	?
data_buffer2	db	?
vfd_temp	db	?
key_buffer1	db	?
key_buffer2	db	?
key_buffer3	db	?

;*********************************************
FrontPanel_code	.section 'code'
;*********************************************
	org	0000h
	jmp	main

	org	0004h			;External Interrupt
	reti                    	
                                	
	org	0008h			;Timer Interrupt 
timer_int:
	push

timer_end:
	pop
	reti     	
;*********************************************
;Initializers
;*********************************************
main:				       ;initial mcu,clear ram
	clr	wdt
	clr	intc
	clr	tmrc

	clr	pa
	clr	pac
	clr	pb
	clr	pbc
	clr	pc
	clr	pcc
	
	mov	a,40h			;clear ram from 40h~7fh
	mov	mp,a
	mov	a,64
	set	iar
	inc	mp
	sdz	acc
	jmp	$-3

call	init_vfd
call	write_vfd2

	jmp	$
	

;*********************************************
;VFD HT16512
;*********************************************
;-------------------------------------------
;Initialize HT16512
;-------------------------------------------
init_vfd:
	clr	vfd_cs_ctrl		;set serial I/O
	clr	vfd_mosi_ctrl
	set	vfd_miso_ctrl
	clr	vfd_clk_ctrl
			
	clr	vfd_cs
	mov	a,00000010b		;display mode setting:6/16
	mov	data_buffer1,a
	call	data2vfd
	set	vfd_cs
	nop
	ret
;-------------------------------------------
;Write VFD
;-------------------------------------------
write_vfd1:
	mov	a,01000100b		;data setting:normal mode/fixes address/write display
	mov	data_buffer1,a
	clr	vfd_cs
	call	data2vfd
	set	vfd_cs
	nop
	clr	vfd_cs
	mov	a,11000010b		;address
	mov	data_buffer1,a
	call	data2vfd
	mov	a,0ffh
	mov	data_buffer1,a
	call	data2vfd
	set	vfd_cs
	nop
	clr	vfd_cs
	mov	a,10001111b		;dimming quantity setting:display on/14/16
	mov	data_buffer1,a
	call	data2vfd
	set	vfd_cs
	ret

write_vfd2:
	mov	a,01000000b		;data setting:normal mode/inc address/write display
	mov	data_buffer1,a
	clr	vfd_cs
	call	data2vfd
	set	vfd_cs
	nop
	clr	vfd_cs
	mov	a,11000011b		;address:from 1
	mov	data_buffer1,a
	call	data2vfd
	mov	a,18
	mov	vfd_temp,a
	mov	a,50h
	mov	mp,a	
write_vfd_loop:
	mov	a,iar
	mov	data_buffer1,a
	call	data2vfd
	inc	mp
	sdz	vfd_temp
	jmp	write_vfd_loop
	set	vfd_cs
	nop
	clr	vfd_cs
	mov	a,10001111b		;dimming quantity setting:display on/14/16
	mov	data_buffer1,a
	call	data2vfd		;sent data to vfd
	set	vfd_cs
	ret
;-------------------------------------------
;Write LED
;-------------------------------------------
write_led:
	mov	a,01000101b		;data setting:normal mode/fixes address/write display
	mov	data_buffer1,a
	clr	vfd_cs
	call	data2vfd
	set	vfd_cs
	nop
	clr	vfd_cs
	mov	a,00001111b		;led
	mov	data_buffer1,a
	call	data2vfd
	set	vfd_cs
	ret
;-------------------------------------------
;Read Key
;-------------------------------------------	
read_vfd_key:
	mov	a,01000000b		;data setting:normal mode/fixes address/read key
	mov	data_buffer1,a
	clr	vfd_cs
	call	data2vfd	
	call	data_in
	mov	key_buffer1,a
	call	data_in
	mov	key_buffer2,a
	call	data_in
	mov	key_buffer3,a
	set	vfd_cs
	nop
	clr	vfd_cs
	ret
;-------------------------------------------
;Data out
;-------------------------------------------
data2vfd:
	mov	a,8			;write data to vfd
data2vfd_loop:
	clr	vfd_clk
	rrc	data_buffer1
	snz	c
	jmp	out_0
out_1:
	set	vfd_mosi
	jmp	out_loop_next
out_0:
	clr	vfd_mosi
	nop
out_loop_next:	
	set	vfd_clk
	sdz	acc
	jmp	data2vfd_loop
	ret
;-------------------------------------------
;Data in
;-------------------------------------------
data_in:
	mov	a,8			;read data to mcu
data_in_loop:
	set	vfd_clk
	nop
	clr	vfd_clk
	snz	vfd_miso
	jmp	in_0
in_1:
	set	c
	jmp	in_loop_next
in_0:
	clr	c
in_loop_next:
	rrc	data_buffer2
	sdz	acc
	jmp	data_in_loop
	mov	a,data_buffer2
	ret

;*********************************************
	end

⌨️ 快捷键说明

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