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

📄 vector.asm

📁 通用OSD控制(51单片机控制的TFTLCD源码,MTV018)
💻 ASM
字号:
NAME	VECTOR

?C_INITSEG						SEGMENT CODE 
?BI?VECTOR						SEGMENT BIT 
?PR?timer0_interrupt?VECTOR     SEGMENT CODE 
?PR?int0_interrupt?VECTOR     	SEGMENT CODE 
?PR?___delay?VECTOR   			SEGMENT CODE 
?PR?soft_interrupt?VECTOR     	SEGMENT CODE 

	EXTRN	DATA(jiffies)
	EXTRN	DATA(th1_val)
;	EXTRN	DATA(tl1_val)
	EXTRN	BIT (timerbh_pending)
  	EXTRN	BIT (int0bh_pending)
	EXTRN	CODE (timer_bh)
  	EXTRN	CODE (int0_bh)

	RSEG	?PR?timer0_interrupt?VECTOR
	USING	0
timer0_interrupt:
	MOV  	TH0, #063H;9.6M TH0 = #63H,12M TH0 = #3CH
	MOV  	TL0, #0B0H
	INC  	jiffies
	SETB 	timerbh_pending
	RETI 	

	RSEG	?PR?int0_interrupt?VECTOR
	USING	0
int0_interrupt:
;	PUSH	ACC
	CLR	TR0
;	MOV	tl1_val, TL0
	MOV	th1_val, TH0
;	CLR	A
;	MOV	TH0, A
;	MOV	TL0, A
	SETB	TR0
	SETB	int0bh_pending
;	POP	ACC
	RETI

	RSEG	?BI?VECTOR
in_softint:	DBIT   1

	RSEG	?C_INITSEG
	DB	0C1H, in_softint

  	RSEG  ?PR?soft_interrupt?VECTOR
  	PUBLIC	soft_interrupt
    
soft_interrupt:
  	USING	0
  	JB   	in_softint,out
  
  	CLR  	EA
  	JB   	timerbh_pending, ?do_softint?100
  	JNB   	int0bh_pending, out_sti

?do_softint?100:
	SETB 	in_softint
  
?do_softint?restart:
  	SETB 	EA
  
    	PUSH 	ACC
    	PUSH 	B
    	PUSH 	DPH
    	PUSH 	DPL
    	PUSH 	PSW
    	MOV  	PSW,#00H
    	PUSH 	AR0
    	PUSH 	AR1
    	PUSH 	AR2
    	PUSH 	AR3
    	PUSH 	AR4
    	PUSH 	AR5
    	PUSH 	AR6
    	PUSH 	AR7
    	USING	0
  
	JBC  	timerbh_pending, call_timer_bh
	SJMP 	do_softint?1
call_timer_bh:
  	LCALL	timer_bh

do_softint?1:
	JBC  	int0bh_pending, call_int0_bh
	SJMP 	do_softint?2
call_int0_bh:
	LCALL	int0_bh

do_softint?2:
    	POP  	AR7
    	POP  	AR6
    	POP  	AR5
    	POP  	AR4
    	POP  	AR3
    	POP  	AR2
    	POP  	AR1
    	POP  	AR0
    	POP  	PSW
    	POP  	DPL
    	POP  	DPH
    	POP  	B
    	POP  	ACC
  
  	CLR  	EA
  	JB   	timerbh_pending,?do_softint?restart
  	JB   	int0bh_pending,?do_softint?restart

  	CLR  	in_softint
out_sti:
  	SETB 	EA
out:
  	RET  	
; $IF 0 
	RSEG	?PR?___delay?VECTOR
	PUBLIC	___delay
___delay:
	USING	0
	MOV  	A,AR7
	JNZ	__delay?2
__delay?1:
	MOV  	A,AR6
	JZ	__delay?3
	DEC	AR6
__delay?2:
	DJNZ 	R7,__delay?2
	LJMP	__delay?1
__delay?3:
	RET
;	$ENDIF

CSEG	AT	00003H
	LCALL	int0_interrupt
	LJMP	soft_interrupt

CSEG	AT	0000BH
	LCALL	timer0_interrupt
	LJMP	soft_interrupt

	END

⌨️ 快捷键说明

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