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

📄 tch3000.asm

📁 功 能:定时中断、产生2ms标志
💻 ASM
字号:

        #include ht48r06A-1.inc
data		.section	'data'
_buz     equ    pb.1
;********************************************************************************
bha      equ    [40h]
bhs      equ    [41h]
becon    equ    [42h]
betim    equ    [43h]
betimbak equ    [44h]
ustim    equ    [45h]
f_2ms    equ    [46h].0
frist_one equ   [46h].1
frist_two  equ  [46h].2
O5sh     equ    [47h]
halfs    equ    [48h]
stim     equ    [49h]
mtim     equ    [4ah]
f_pull   equ    [4bh]
kdisc    equ    [4ch]
keycou   equ    [4dh]
SEG      equ    [4eh]
dig1     equ    [4fh]
dig2     equ    [50h]
onesecond equ   [51h]
tensecond equ   [52h]
on_key    equ   [53h]
off_key   equ   [54h]
dead      equ   [55h]
threemin  equ   [56h]
frist     equ   [57h]
mark      equ   [58h]
delay     equ   [59h]
;---------------------------------------------------------------------------------
code		.section	at 000h		'code'
		org		000h
		jmp		start
		org		004h
		reti
		org		008h
		jmp		timint
		org		010h
;初始化---------------------------------------------------------------------------
start:
		clr		intc
		clr		wdt1
		clr		wdt2
		mov		a,40h
		mov		mp,a
		mov		a,64
ramclr:
		clr		r0
		inc		mp
		sdz		acc
		jmp		ramclr
;---------------------------------------------------------------------------------
		mov		a,131
		mov		tmr,a
		set		intc.0
		set		intc.2
		mov		a,10010001b
		mov		tmrc,a
		mov		a,2
		mov		becon,a
		mov		a,80
		mov		betim,a
        mov     a,0
        mov     pac,a
        mov     a,0ffh
        mov     pa,a
        clr     pcc.1
        clr     pbc.2
        set     pc.1
        set     pb.2
        set     dead
        mov     a,18
        mov     threemin,a
;*********************************************************************************
main:
		snz		f_2ms
		jmp		main
		clr		f_2ms
		clr		wdt1
		clr		wdt2
        jmp		beedirsub
key:
		jmp		keysub
disply:
		jmp		displysub
timer:
		jmp		timersub
over:
		jmp		main
;定时中断程序*********************************************************************
;---------------------------------------------------------------------------------
;模块  名:timint
;输   入:无
;输   出:f_2ms,f_suss
;调用模块:无
;功    能:定时中断、产生2ms标志,蜂鸣器驱动,遥控接收。
;---------------------------------------------------------------------------------
timint:
		mov		bha,a		;125us中断一次
		mov		a,status
		mov		bhs,a
;bee-------------------------------------------------
		snz		becon.0
		jmp		beeex
		clr		pbc.1
		mov		a,00000010b
		xorm	a,pb
		nop
		nop
beeex:
        inc		ustim
		mov		a,ustim
		sub		a,16
		snz		c
		jmp		timintex
		clr		ustim
		set		f_2ms
        siz     O5sh
        jmp     timintex
        set     halfs
        inc     frist
        mov     a,frist
        sub     a,1
        snz     c
        jmp     timintex
        set     frist_one
        mov     a,frist
        sub     a,2
        snz     c
        jmp     timintex
        clr     frist_one
        clr     frist
timintex:
		mov		a,bhs
		mov		status,a
		mov		a,bha
		reti
;嵌套1子程序**********************************************************************
;---------------------------------------------------------------------------------
;模块  名:beedirsub
;输   入:becon、betim
;输   出:becon
;调用模块:无
;功    能:蜂鸣器控制。
;---------------------------------------------------------------------------------
beedirsub:
		sz		becon
		jmp		beework
		clr		_buz
		jmp		beesubex
beework:
		inc		betimbak
		mov		a,betimbak
		sub		a,betim
		snz		c
		jmp		beesubex
		clr		betimbak
		dec		becon
beesubex:
		jmp		key
;---------------------------------------------------------------------------------
;模块  名:timersub
;输   入:无
;输   出:无
;调用模块:timoff
;功    能:定时
;---------------------------------------------------------------------------------
timersub:
        snz     on_key.0
        jmp     timersubex
        sz      dead.0
        jmp     timersubex
        snz     halfs.0
        jmp     timersubex
        clr     halfs
		inc		stim
		mov		a,stim
		sub		a,2
		snz		c
		jmp		timersubex
		clr		stim
        set     onesecond
;1s-----------------------------------------------
		inc		mtim
		mov		a,mtim
		sub		a,10
		snz		c
		jmp		timersubex
		clr		mtim
        set     tensecond
        sdz     threemin
        jmp     timersubex
        jmp     all_off
;0.5m--------------------------------------------------
timersubex:
		jmp		over
;---------------------------------------------------------------------------------
;模块  名:scankey
;输   入:无
;输   出:无
;调用模块:kmodesub、kswsub、offsub、ktimsub、on_spedsub、klight
;功    能:按键处理
;---------------------------------------------------------------------------------
keysub:
       set     pb.2
       set     pc.1
;-------------------------------------------------------------------------------------
       set     pcc.0
       set     pc.0
       sz      pc.0
       jmp     loosen_key
       sz	   f_pull
	   jmp	   keysubex
keysao:
       mov	   a,2
	   mov	   becon,a
	   mov	   a,40
	   mov	   betim,a 
       inc		kdisc
	   mov		a,kdisc
	   sub		a,1
	   sz		z
	   call		key0
	   mov		a,kdisc
	   sub		a,2
	   sz		z
	   call		key1     
       jmp		keysubex
loosen_key:
       inc		keycou
	   mov		a,keycou
	   sub		a,30
	   snz		c
	   jmp		keysubex
	   clr		keycou
	   clr		f_pull 
       jmp      keysubex
key0:  
       clr      dead
       set     f_pull
       clr      off_key
       set      on_key
       ret
key1:  
       set     f_pull
       clr      on_key
       clr      kdisc 
       set      off_key
       ret
keysubex:
       jmp      disply
;---------------------------------------------------------------------------------
;模块  名:displysub
;输   入:无
;输   出:无
;调用模块:无
;功    能:显示
;---------------------------------------------------------------------------------
displysub:
        snz     on_key.0
        jmp     zijian
        sz      dead.0
        jmp     digital
        snz     off_key.0
        jmp     digital
        jmp     off_reset
digital:
        SNZ	    SEG.0
		JMP	    PA2SEG
		MOV	    A,2
		MOV	    SEG,A
        set     pb.2
        sz     onesecond
        inc     dig1
        mov     a, dig1
        add     a,tab1
        mov     tblp,a 
        tabrdl  acc
        mov     pa,a
        clr     pc.1
        clr     onesecond
        jmp     disubex
;--------------------------------------------------------------------------------
PA2SEG:
        MOV	    A,1
		MOV	   SEG,A
	    set    pc.1
        sz     tensecond
        call   dg2
        jmp    digst2
dg2:    inc    dig2
        clr    dig1
        clr     onesecond
        ret 
digst2: mov     a, dig2
        add     a,tab1
        mov     tblp,a 
        tabrdl  acc
        mov      pa,a
        clr      pb.2
        clr     tensecond
        mov     a,dig2
        sub     a,6
        snz     c
        jmp     disubex
        clr     dig2
disubex:
		jmp		timer
zijian: 
        sz     dead
        jmp    disubex
        snz     frist_one
        jmp     zjoff
        jmp     zjon
zjon:   
        clr     pc.1
        clr     pb.2
        mov     a,10
        add     a,tab1
        mov     tblp,a
        tabrdl  acc
        mov     pa,a
        mov     a,2
        mov     delay,a
        sdz     delay
        jmp     disubex
        clr     frist_one
        jmp     disubex
zjoff:  
        set     pc.1
        set     pb.2
        mov     a,10
        add     a,tab1
        mov     tblp,a
        tabrdl  acc
        mov     pa,a
        jmp     disubex
;TAB*****************************************************************************
		org		300h
tab1:
 		    dc       	0c0h;0
	        dc       	0f9h;1
	        dc       	0A4h;2
	        dc       	0B0h;3
	        dc       	099h;4
	        dc       	092h;5
	        dc       	082h;6
	        dc       	0F8h;7
	        dc       	080h;8
	        dc       	090h;9
	        dc     	   	0bfh;-
;------------------------------------------------------------------------
off_reset:
            set         pb.2
            set         pc.1
            jmp         main 
;------------------------------------------------------------------------
all_off:
            set         pb.2
            set         pc.1
            set         dead
            jmp         start   

⌨️ 快捷键说明

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