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

📄 int.asm

📁 应用松翰母体开发的航模飞机的源代码!有舵机控制功能
💻 ASM
字号:
;************************************************
;Name	:InterruptSub
;Function:
;Input  :
;Output	:
;Register Used:
;*************************************************
InterruptSub:
	XCH	A,AccBuf
	XCH	A,PFLAG
	B0MOV	PflagBuf,A
	
	b0bts0	FTC0IRQ		;//Analyse the Interrupt resourc
	jmp	TC0INTR
	
	b0bts0	ft0irq
	jmp	t0intr

	b0bts0	FP00IRQ
	jmp	P00INTR

Interrupt90:
	XCH	A,PflagBuf
	B0MOV	PFLAG,A
	XCH	A,AccBuf	;//For release the Acc And Pflag
	RETI
;--------------------------------------------------------
;--------------------------------------------------------
TC0INTR:
	incms	timer5ms
	nop
	mov	a,timer5ms
	sub	a,#100
	bts1	fc
	jmp	tc0intr00
	clr	timer5ms
	bset	t5msflag
tc0intr00:
;----------------------
;左右翼控制
	b0bts0	wingstatflag
	jmp	TC0INTR10
	b0bset	ptwing	
	decms	wingbuf
	jmp	TC0INTR20
	b0bclr	ptwing	
	b0bset	wingstatflag
	mov_	winglowbuf,lowcontant		;set low level 10ms
	mov_	wingbuf,wingloadbuf	;set high level 
;-----
TC0INTR10:
	decms	winglowbuf
	jmp	TC0INTR20
	b0bclr	wingstatflag	
;-----------------------
TC0INTR20:
;尾翼控制
	b0bts0	empennagestatflag
	jmp	TC0INTR30
	b0bset	ptempennage	
	decms	empennagebuf
	jmp	TC0INTR40
	b0bclr	ptempennage	
	b0bset	empennagestatflag
	mov_	empennagelowbuf,lowcontant		;set low level 10ms
	mov_	empennagebuf,empennageloadbuf	;set high level 
;-----
TC0INTR30:
	decms	empennagelowbuf
	jmp	TC0INTR40
	b0bclr	empennagestatflag	
;-----------------------
TC0INTR40:
;螺旋桨控制
	b0bts0	screwstatflag
	jmp	TC0INTR50
	b0bset	ptscrew	
	decms	screwbuf
	jmp	TC0INTR60
	b0bclr	ptscrew	
	b0bset	screwstatflag
	mov_	screwlowbuf,lowcontant	;set low level 10ms
	mov_	screwbuf,screwloadbuf	;set high level 
;-----
TC0INTR50:
	decms	screwlowbuf
	jmp	TC0INTR60
	b0bclr	screwstatflag	
;-----------------------
TC0INTR60:
;摆尾控制
	b0bts0	swingstatflag
	jmp	TC0INTR70
	b0bset	ptswing	
	decms	swingbuf
	jmp	TC0INTR80
	b0bclr	ptswing	
	b0bset	swingstatflag
	mov_	swinglowbuf,lowcontant	;set low level 10ms
	mov_	swingbuf,swingloadbuf	;set high level 
;-----
TC0INTR70:
	decms	swinglowbuf
	jmp	TC0INTR80
	b0bclr	swingstatflag
;-----
TC0INTR80:	
TC0INTR90:
	b0bclr	FTC0IRQ
	jmp	Interrupt90
;--------------------------------------------------------
;--------------------------------------------------------
t0intr:
	mov	a,#6
	sub	a,levecount
	bts0	fc
	jmp	t0intr10
	bset	errorflag
	jmp	t0intr90
t0intr10:
	incms	levecount
	nop
t0intr90:
	bclr	ft0irq
	jmp	interrupt90
;--------------------------------------------------------
;--------------------------------------------------------
P00INTR:		
	bclr	fp00irq
	bclr	ft0enb
	mov	a,t0c
	bts1	singleflag	
	jmp	disasm100				
	mov	level,a		;上升沿进入
	jmp	disasm200		
disasm100:
	mov	leveh,a		;下降沿进入
	jmp	disasm200
disasm200:
	clr	t0c		
	bset	ft0enb	
	bts0	singleflag
	jmp	disasm220
	jmp 	disasm210
disasm210:
	@p00_edge	1		;下降沿进入,设为上升沿中断
	bts0	firstflag
	jmp	disasm221
	mov	a,levecount
	bts0	fz
	jmp	disasm80
	bset	firstflag
	clr	levecount
	clr	inputcount
	jmp	disasm90	
disasm220:
	@p00_edge	2		;上升沿进入,设为下降沿中断	
	mov	a,#40;60;56			;448us=8x56
	sub	a,level
	bts0	fc
	jmp	disasm80		;小于448us,出错
	mov	a,#90;70;75			;600us=8x75
	sub	a,level
	bts0	fc
	jmp	disasm90		;小于600us,返回
	jmp	disasm80		;大于600us,出错
disasm221:
	incms	inputcount
	nop
	mov	a,inputcount
	sub	a,#5
	bts1	fc
	jmp	disasm70;chksignaltable
	jmp	disasm80	
disasm80:
	@p00_edge	2		;出错,设为下降沿中断
	clr	inputcount
	clr	levecount
	bclr	firstflag
	jmp	disasm90
disasm70:
	bset	chksigntableflag	
disasm90:
P00INTR90:
	jmp	Interrupt90
;***********************************************
mnint:
	bts1	chksigntableflag
	jmp	gearempennage60
	bclr	chksigntableflag
	clr	tablecount
	bclr	fp00ien
chksignaltable:				;查询控制信号的档位
	b0mov	y,#signaltable$m
	b0mov	z,#signaltable$l
	mov	a,tablecount
	add	z,a
	mov	a,#0
	adc	y,a
	movc
	sub	a,leveh
	bts0	fc
	jmp	chksignaltableend	
	jmp	signaltableadd
signaltableadd:
	incms	tablecount
	nop
	jmp	chksignaltable
chksignaltableend:
	mov	a,tablecount	
	bts0	fz
	jmp	mnint008		;error
	sub	a,#21
	bts0	fc
	jmp	mnint008		;error
	mov	a,tablecount
	add	a,#23
	mov	gearbuf,a
	mov	a,inputcount
	@jmp_a	5
	jmp	mnint00
	jmp	gearwing
	jmp	gearempennage
	jmp	gearscrew
	jmp	gearswing
;	jmp	mnint00	
gearwing:
	mov	a,gearbuf
	cmprs	a,wingbuf1
	jmp	gearwing10
	incms	samebuf1
	nop
	mov	a,samebuf1
	sub	a,samecontant
	bts1	fc
	jmp	mnint00	
	mov	a,wingbuf1
	mov	wingloadbuf,a
	mov	wingbuf,a
	clr	samebuf1
	bclr	wingstatflag
	jmp	mnint00
gearwing10:
	mov	a,gearbuf
	mov	wingbuf1,a	
	clr	samebuf1
	jmp	mnint00
gearempennage:
	mov	a,gearbuf
	cmprs	a,empennagebuf1
	jmp	gearempennage10
	incms	samebuf2
	nop
	mov	a,samebuf2
	sub	a,samecontant
	bts1	fc
	jmp	mnint00
	clr	samebuf2
	call	complete
gearempennage50:
	bts1	csxenbflag
	jmp	gearempennage20
gearempennage60:
	bts1	csxenbflag
	jmp	mnint00
	bts1	empenaddflag
	jmp	gearempennage30
	bclr	empenaddflag
	mov	a,equalcontant
	add	a,csxcalibratebuf
	add	a,csxcalibratebuf
	jmp	gearempennage40

gearempennage30:
	bts1	empensubflag
	jmp	mnint00
	bclr	empensubflag
	mov	a,equalcontant
	sub	a,csxcalibratebuf
	sub	a,csxcalibratebuf
	jmp	gearempennage40
gearempennage20:
	mov	a,empennagebuf1
gearempennage40:
	mov	empennageloadbuf,a
	mov	empennagebuf,a
	bclr	empennagestatflag
	jmp	mnint00
gearempennage10:
	mov	empennagebuf1,a	
	clr	samebuf2
	jmp	mnint00
gearscrew:
	mov	a,gearbuf
	cmprs	a,screwbuf1
	jmp	gearscrew10
	incms	samebuf3
	nop
	mov	a,samebuf3
	sub	a,samecontant
	bts1	fc
	jmp	mnint00
	mov	a,screwbuf1
	mov	screwloadbuf,a
	mov	screwbuf,a
	clr	samebuf3
	bclr	screwstatflag
	jmp	mnint00
gearscrew10:
	mov	a,gearbuf
	mov	screwbuf1,a	
	clr	samebuf3
	jmp	mnint00
gearswing:
	mov	a,gearbuf
	cmprs	a,swingbuf1
	jmp	gearswing10
	incms	samebuf4
	nop
	mov	a,samebuf4
	sub	a,samecontant
	bts1	fc
	jmp	mnint00
	mov	a,swingbuf1
	mov	swingloadbuf,a
	mov	swingbuf,a
	clr	samebuf4
	bclr	swingstatflag
	jmp	mnint00
gearswing10:
	mov	a,gearbuf
	mov	swingbuf1,a	
	clr	samebuf4
	jmp	mnint00
mnint008:
	@p00_edge	2		;出错,设为下降沿中断
	clr	inputcount
	clr	levecount
	bclr	firstflag
mnint00:
	bset	fp00ien
mnint01:
	bts1	t5msflag
	jmp	mnint90
	bclr	t5msflag
	call	dkeychat	
mnint10:
	incms	timer500ms
	nop
	mov 	a,timer500ms
	sub	a,#100
	bts1	fc
	jmp	mnint90
	clr	timer500ms
	bset	t500msflag
mnint90:
	ret
;***********************************************	
	
signaltable:
	dw	03ah	;0	;1
	dw	041h	;1
	dw	048h	;2
	dw	04fh	;3
	dw	056h	;4
	dw	05dh	;5
	dw	064h	;6
	dw	06bh	;7	
	dw	072h	;8
	dw	079h	;9
	dw	080h	;10
	dw	087h	;11
	dw	08eh	;12
	dw	095h	;13
	dw	09ch	;14
	dw	0a3h	;15	
	dw	0aah	;16	
	dw	0b1h	;17
	dw	0b8h	;18
	dw	0bfh	;19
	dw	0ffh;0c6h	;20	;20	
/*
	dw	09dh	;21
	dw	0a2h	;22
	dw	0a7h	;23
	dw	0ach	;24	
	dw	0b3h	;25
	dw	0b8h	;26
	dw	0bdh	;27
	dw	0c2h	;28	
	dw	0ffh;0c7h	;29	;

	dw	0cdh	;30
	dw	0d2h	;31
	dw	0d7h	;32	
	dw	0ddh	;33
	dw	0e1h	;34
	dw	0e7h	;35
	dw	0ech	;36	
	dw	0f2h	;37
	dw	0f7h	;38
	dw	0fch	;39
	dw	0ffh	;40
*/	
	
	

⌨️ 快捷键说明

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