📄 6510低成本.asm
字号:
ds .section 'data'
cs .section 'code'
;programe name:6510_低成本
;mcu: ht48f06e
;osc: cystal 4M
;author: yxg
;================================================
; define spe_reg
;================================================
#include ht48f06e.INC
;================================================
; define port_bit
;================================================
#include define_port_bit.inc
;================================================
; define use_reg
;================================================
#include define_use_reg.inc
code .section at 0 'code' ;== program section ==
;-------------------------------------------------------
org 00h ;
jmp start ;
org 04h ;external interrupt subroutine
reti ;for guarantee
org 08h ;timer/event 0 interrupt subroutine
jmp time_int ;for guarantee
org 0ch ;timer/event 1 interrupt subroutine
reti ;for guarantee
time_int:
;mov a_buffer,a
;mov a,status
;mov psw_buffer,a
;snz ti_test
;jmp ti_0
;clr ti_test
;jmp out
;ti_0:
; set ti_test
;out:
reti
start:
call ram_set
call port_set ;buzz,ledr is started
;main:
;-------------------------300ms
mov a,250
call delay_10ms
;---------------100ms
mov a,250
call delay_10ms
;---------------200ms
mov a,250
call delay_10ms
;--------------------------------
clr buzz
;-------------------------140ms
mov a,250
call delay_10ms
;----------------100ms
mov a,100
call delay_10ms
;----------------40ms-----------
set buzz
;--------------------------380ms
mov a,250
call delay_10ms
mov a,250
call delay_10ms
mov a,200
call delay_10ms
;-----------------------------------
clr buzz
set ledg
clr ledr
set hold
;jmp $
nop
clr emi ;ud开总断
clr eti ;关定时中断
clr eei
;-------------------------------------------------
;在这就开始启到125K载波,在这之前PB.0 is output and hight
;定时器的中断的f=250k,16分频,初值为fd
mov a,080h ;采用fsys=4mz 分频后f=4m/16,定时器此时关着,1:2
mov tmrc,a
mov a,0f8h ;初值,fint 约等于1ms,50*1ms=50ms
mov tmr,a ;开始计数
set tmrc.4 ;启动定时器
;jmp $
;--------------------------------------------------
jmp read_head ;检测有没有卡进入
;----------------------------------------------------- ;
; receive_data ;55个data
;-----------------------------------------------------
;----------------------------------------------------- ;
; port_set:
;-----------------------------------------------------
port_set:
;pa_port
set pac.0 ;pa.0 is seted input
clr pac.1 ;pa.1 is seted output
set hold ;hold start is high
clr pac.2 ;pa.2 is seted output
clr data1rx ;tada0rx start is low
clr pac.3 ;pa.3 is seted output
clr data0tx ;tada1tx start is low
clr pac.4 ;pa.4 is seted input
clr pa.4
clr pac.5 ;pa.5 is seted output
clr ledg ;ledg start is brighted
clr pac.6 ;pa.6 is seted output
set ledr ;ledr is unbrighted
set pac.7 ;pa.7 is seted input
;pb_port
clr pbc.0 ;pb.0 is seted output
set f_125k ;reday for 125k
clr pbc.1 ;pb.1 is seted output
set pb.1
clr pbc.2 ;pb.2 is seted output
set buzz ;buzz is started
;pc_port
clr pcc.0
clr pc.0
set pcc.0 ;pc.0 is seted input
clr eei
clr eif
; pcc.1
ret
;----------------------------------------------------- ;
; ram_set
;-----------------------------------------------------
ram_set:
nop
clr p0_bit
clr p1_bit
clr p2_bit
clr pc0_bit
clr pc1_bit
clr pc2_bit
clr pc3_bit
clr flag
clr head0
clr head1
clr data0
clr data1
clr data2
clr data3
clr data4
clr data5
clr data6
clr data7
clr data8
clr data9
clr data10
clr head_count
mov a,9
mov head_count,a
clr data_count
mov a,55
mov data_count,a
ret
;================================================
; read_head
;================================================
#include read_head.inc
;================================================
; delay_subroutine
;================================================
#include delay.inc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -