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

📄 plane050930v01.lst

📁 应用松翰母体开发的航模飞机的源代码!有舵机控制功能
💻 LST
📖 第 1 页 / 共 4 页
字号:
     1  000000             ;********************************************************
     2  000000             ;  COMPANY      : CHOMP					*
     3  000000             ;  PROJECT NAME : 					*
     4  000000             ;  Author	: 					*
     5  000000             ;  VERSION	: V0.0			      		*
     6  000000             ;  START DATE	: 2004.12.				*
     7  000000             ;  COMPLISH DATE: 2004.12.				*
     8  000000             ;  Modify	: 2004.12.				*
     9  000000             ;  BODY		: SN8P2602				*
    10  000000             ;  COMPILER	: 2K					*
    11  000000             ;  CRYSTAL	: 4MHz					*
    12  000000             ;  Modify function:					*
    13  000000             ; *******************************************************
    14  000000             
    15  000000             ;//Set ICE emulation mode.Pay attention to it be reset after emulation.
    16  000000             ;ICE_MODE	EQU	1
    17  000000             ;// Please set ICE_MODE equ 0  and recompiler  before write the code into IC body
    18  000000             ;//ICE_MODE	EQU	0
    19  000000             
    20  000000             chip	sn8p2602a
    21  000000             //{{SONIX_CODE_OPTION
    22  000000             	.Code_Option	Noise_Filter	Enable
    23  000000             	.Code_Option	Reset_Pin	P15
    24  000000             	.Code_Option	Watch_Dog	Always_On	; Watchdog still enable even in Green and Sleep mode
    25  000000             	.Code_Option	High_Clk	12M_X'tal	; Crystal/Resonator: 10Mhz~16Mhz
    26  000000             	.Code_Option	Fcpu		#2     ; Fcpu = High_Clk/4
    27  000000             	.Code_Option	Security	Enable
    28  000000             	
    29  000000             //}}SONIX_CODE_OPTION
    30  000000             
    31  000000             	include		define.asm
    32  000000             .list
    33  000000             .DATA
    34  000000             
    35  000000             	org	0h				;Bank 0 data section start from RAM address 0x000
    36  0000 D             	AccBuf		ds	1		;Accumulater buffer
    37  0001 D             	PflagBuf	ds	1		;PFLAG buffer
    38  000002             	
    39  0002 D             	Keyinbuf	ds	1		;按键
    40  0003 D             	Keychkbuf	ds	1
    41  0004 D             	Keycvtbuf	ds	1
    42  0005 D             	Keyoldbuf	ds	1
    43  0006 D             	Keychat		ds	1
    44  000007             ;	aplcode		ds	1
    45  0007 D             	csxtable	ds	1	;csx的表值	
    46  0008 D             	gearbuf		ds	1	;输出档位值
    47  0009 D             	inputcount	ds	1	;哪一个控制脚
    48  00000A             	
    49  00000A             ;	wingbuf		ds	1	;左右翼档位
    50  00000A             ;	empennagebuf	ds	1	;尾翼档位
    51  00000A             ;	screwbuf	ds	1	;螺旋桨档位
    52  00000A             ;	swingbuf	ds	1	;摆尾档位
    53  00000A             ;飞机各控制脚输出
    54  00000A             ;//set by carman
    55  000A D             	wingbuf		ds	1	;控制左右翼高电平输出宽度
    56  000B D             	wingbuf1	ds	1	;左右翼档位1
    57  000C D             	wingloadbuf	ds	1	;重新载入左右翼高电平控制信号
    58  000D D             	winglowbuf	ds	1	;控制左右翼低电平输出宽度
    59  00000E             
    60  000E D             	empennagebuf	ds	1	;控制尾翼高电平输出宽度
    61  000F D             	empennagebuf1	ds	1	;尾翼档位1
    62  0010 D             	empennageloadbuf ds	1	;重新载入尾翼高电平控制信号
    63  0011 D             	empennagelowbuf	ds	1	;控制尾翼低电平输出宽度
    64  000012             
    65  0012 D             	screwbuf	ds	1	;控制螺旋桨高电平输出宽度
    66  0013 D             	screwbuf1	ds	1	;螺旋桨档位1
    67  0014 D             	screwloadbuf	ds	1	;重新载入螺旋桨高电平控制信号
    68  0015 D             	screwlowbuf	ds	1	;控制螺旋桨低电平输出宽度
    69  000016             
    70  0016 D             	swingbuf	ds	1	;控制摆尾高电平输出宽度
    71  0017 D             	swingbuf1	ds	1	;摆尾档位1
    72  0018 D             	swingloadbuf	ds	1	;重新载入摆尾高电平控制信号
    73  0019 D             	swinglowbuf	ds	1	;控制摆尾低电平输出宽度
    74  00001A             ;------
    75  00001A             ;可以通过设定以下RAM来改变各高电平宽度
    76  00001A             ;-----
    77  00001A             
    78  00001A             
    79  00001A             
    80  00001A             ;	wingbuf2	ds	1	;左右翼档位1
    81  00001A             ;	empennagebuf2	ds	1	;尾翼档位1
    82  00001A             ;	screwbuf2	ds	1	;螺旋桨档位1
    83  00001A             ;	swingbuf2	ds	1	;摆尾档位1
    84  00001A             
    85  001A D             	samebuf1	ds	1
    86  001B D             	samebuf2	ds	1
    87  001C D             	samebuf3	ds	1
    88  001D D             	samebuf4	ds	1
    89  00001E             
    90  00001E             	
    91  001E D             	leveh		ds	1	;接收信号的高电平计数值
    92  001F D             	level		ds	1	;接收信号的低电平计数值
    93  0020 D             	levecount	ds	1	;接受信号计数值的中间变量
    94  000021             ;	timerswing	ds	1	;摆尾输出振荡波形的计数值
    95  000021             ;	timerempennage	ds	1	;尾翼输出振荡波形的计数值
    96  000021             ;	timerwing	ds	1	;机翼输出振荡波形的计数值
    97  000021             ;	timerscrew	ds	1	;螺旋桨输出振荡波形的计数值
    98  000021             	
    99  000021             	
   100  000021             	
   101  0021 D             	tablecount	ds	1	;查表的计数值
   102  000022             		
   103  000022             ;	timer1800us	ds	1
   104  0022 D             	timer5ms	ds	1
   105  0023 D             	timer500ms	ds	1
   106  000024             	
   107  0024 D             	csxcalibratebuf	ds	1	;csx校准值
   108  000025             		
   109  000025             ;	pulsecount1	ds	1	;低电平计数
   110  000025             ;	pulsecount2	ds	1	;高电平计数
   111  000025             				
   112  0025 D             	r1		ds	1		;延时
   113  0026 D             	r2		ds	1
   114  000027             	
   115  0027 D             	flag		ds	1
   116  0028 D             	flag1		ds	1
   117  0029 D             	flag2		ds	1
   118  002A D             	flag3		ds	1
   119  00002B             
   120  00002B             
   121  00002B             
   122  00002B             
   123  00002B             ;*************** Define flag ***************
   124  00002B             ;时间标志
   125  00002B             ;	t5msflag1	equ	flag.0
   126  00002B             ;	t5msflag2	equ	flag.1
   127  00002B             ;	t5msflag3	equ	flag.2
   128  00002B             ;	t5msflag4	equ	flag.3
   129  00002B             ;	t1800usflag	equ	flag.4
   130  00002B             ;	t200usflag	equ	flag.5
   131  E 00060027         	t500msflag	equ	flag.6
   132  E 00070027         	t5msflag	equ	flag.7
   133  00002B             	
   134  00002B             	
   135  E 00000028         	csxenbflag		equ	flag1.0	;是否检测csx的信号
   136  00002B             ;	winghighflag		equ	flag1.1	;机翼是否输出振荡波的标志
   137  00002B             ;	empennagehighflag	equ	flag1.2	;尾翼是否输出振荡波的标志
   138  00002B             ;	screwhighflag		equ	flag1.3	;螺旋桨是否输出振荡波的标志
   139  00002B             ;	swinghighflag		equ	flag1.4	;摆尾是否输出振荡波的标志
   140  E 00050028         	errorflag		equ	flag1.5	;
   141  00002B             ;	singleflag		equ	flag1.6	;遥控接收信号的中断标志
   142  E 00070028         	firstflag		equ	flag1.7	;第一个接收信号的标志
   143  00002B             	
   144  E 00000029         	keystatflag		equ	flag2.0
   145  00002B             
   146  E 00010029         	t18msflag		equ	flag2.1
   147  00002B             
   148  00002B             
   149  00002B             
   150  00002B             ;飞机各控制脚状态输出切换
   151  00002B             ;//set by carman
   152  E 00020029         	wingstatflag		equ	flag2.2	;=0:high output,=1:low output
   153  E 00030029         	empennagestatflag	equ	flag2.3
   154  E 00040029         	screwstatflag		equ	flag2.4
   155  E 00050029         	swingstatflag		equ	flag2.5
   156  00002B             
   157  00002B             
   158  E 00060029         	chksigntableflag	equ	flag2.6
   159  E 00070029         	empenaddflag		equ	flag2.7	;csx值加减标志
   160  E 0000002A         	empensubflag		equ	flag3.0
   161  00002B             ;	t0count		equ	#230;231
   162  00002B             
   163  E 00000005         	samecontant		equ	#05h	;解码得到相同的次数
   164  E 000000FA         	lowcontant		equ	#250
   165  E 00000021         	equalcontant		equ	#33
   166  00002B             
   167  00002B             ;----------------------------------------------
   168  00002B             ;-------------constant define------------------
   169  00002B             
   170  00002B             ;*************Port define**************************
   171  00002B             
   172  E 000000D0                 singleflag	equ     p0.0	;遥控接收脚
   173  E 000100D1         	ptwing		equ	p1.1	;机翼
   174  E 000000D1         	ptscrew		equ	p1.0	;螺旋桨
   175  E 000200D1         	ptempennage	equ	p1.2	;尾翼
   176  E 000300D1               	ptswing		equ     p1.3	;摆尾
   177  00002B             	
   178  E 000000D5                	ptcsx1		equ	p5.0	;前后陀螺仪控制信号	
   179  E 000100D5         	ptcsx2		equ	p5.1	;
   180  E 000200D5         	ptcsx3		equ	p5.2	;
   181  E 000300D5         	ptcsx4		equ	p5.3	;
   182  E 000400D5         	ptcsy1		equ	p5.4	;左右陀螺仪控制信号
   183  E 000500D5         	ptcsy2		equ	p5.5	;
   184  E 000600D5         	ptcsy3		equ	p5.6	;
   185  E 000700D5         	ptcsy4		equ	p5.7	;
   186  00002B             		
   187  00002B             	
   188  00002B             ;*********Micro define as following****************
   189  00002B             	NOTBIT		macro bit
   190  00002B             			b0bts0 bit
   191  00002B             			jmp $+3
   192  00002B             			b0bset bit
   193  00002B             			jmp $+2
   194  00002B             			b0bclr bit
   195  00002B             			endm
   196  00002B             
   197  00002B             	IFLT16		expand mem1,val1,val2,adr			;mem<val val-->adr
   198  00002B             			local flt00,flt10,flt20,flt30
   199  00002B             			mov a,mem1+1
   200  00002B             			cmprs a,val2
   201  00002B             			jmp flt10
   202  00002B             			mov a,mem1
   203  00002B             			cmprs a,val1
   204  00002B             			jmp flt20
   205  00002B             			jmp flt30
   206  00002B             		flt20:
   207  00002B             			b0bts1 fc
   208  00002B             			jmp adr
   209  00002B             			jmp flt30
   210  00002B             		flt10:
   211  00002B             			b0bts1 fc
   212  00002B             			jmp adr
   213  00002B             		flt30:
   214  00002B             			endm
   215  00002B             
   216  00002B             
   217  00002B             ;***********************************************
   218  000000             .code
   219  000000             	org	0h
   220  000000   8010(2)  	jmp	start
   221  000001             	
   222  000008             	org	08h
   223  000008   807B(2)  	jmp	interruptSub
   224  000009             	
   225  000010             	org	10h
   226  000010             
   227  000010             	include		main.asm
   228  000010             ;***********************************************
   229  000010             start:
   230  000010   0000(1)  	nop
   231  000011   C032(2)  	call		PortInitial
   232  000012             ;	call		RAMInitial
   233  000012             ;	call		SysInitial
   234  000012   C05F(2)  	call		pdelay100ms
   235  000013   C032(2)  	call		PortInitial
   236  000014   C01C(2)  	call		RAMInitial
   237  000015   C047(2)  	call		SysInitial
   238  000016             		
   239  000016             ;***********************************************
   240  000016             
   241  000016             mainloop:
   242  000016   2D5A(1)  	mov	a,#5ah
   243  000017   1FCC(1)  	mov 	wdtr,a
   244  000018             ;	call	mnchkrx
   245  000018   C107(2)  	call	mnint
   246  000019   C1B0(2)  	call	mnkey
   247  00001A   C06B(2)  	call	mnapp
   248  00001B   8016(2)  	jmp	mainloop
   249  00001C             	
   250  00001C             ;***********************************************
   251  00001C             RAMInitial:
   252  00001C   2B84(1)  	clr	Y    				;Select bank 0
   253  00001D   2D2F(1)  	mov	A,#0x2f
   254  00001E   2F83(1)  	b0mov	Z,A				;Set @YZ address from 7fh
   255  00001F             
   256  00001F             ClrRAM10:
   257  00001F   2BE7(1)  	clr	@YZ				;Clear @YZ content
   258  000020   2683(1+S)  	decms	Z  				;z = z - 1 , skip next if z=0
   259  000021   801F(2)  	jmp	ClrRAM10
   260  000022   2BE7(1)  	clr 	@YZ				;Clear address 0x00
   261  000023             ;--------------------set some content----------------
   262  000023             ;设定各控制脚归零点
   263  000023   4828(1)  	bset	csxenbflag
   264  000024   2D21(1)  	mov	a,equalcontant;33
   265  000025   2F0A(1)  	b0mov	wingbuf,a
   266  000026   2F0C(1)  	b0mov	wingloadbuf,a	
   267  000027   2F0B(1)  	b0mov	wingbuf1,a		
   268  000028   2F0E(1)  	b0mov   empennagebuf,a	
   269  000029   2F10(1)  	b0mov	empennageloadbuf,a
   270  00002A   2F0F(1)  	b0mov	empennagebuf1,a
   271  00002B             	
   272  00002B   2F12(1)  	b0mov   screwbuf,a
   273  00002C   2F14(1)          b0mov	screwloadbuf,a
   274  00002D   2F13(1)  	b0mov   screwbuf1,a
   275  00002E             	
   276  00002E   2F16(1)          b0mov   swingbuf,a
   277  00002F   2F18(1)  	b0mov   swingloadbuf,a
   278  000030   2F17(1)          b0mov   swingbuf1,a	
   279  000031   0E00(2)  	ret
   280  000032             ;***********************************************
   281  000032             PortInitial:
   282  000032   2BD0(1)  	clr	p0
   283  000033   2BD1(1)  	clr	p1
   284  000034   2BD5(1)  	clr	p5
   285  000035             
   286  000035   2D00(1)  	mov	A,#00h  	;//don't Pull up p5,p1,p0 port
   287  000036   2FE0(1)  	b0mov	p0ur,a
   288  000037   2FE1(1)  	b0mov	P1UR,A
   289  000038   2DFF(1)  	mov	A,#0ffh 	
   290  000039   2FE5(1)  	b0mov	P5UR,A	
   291  00003A             	
   292  00003A   2DFE(1)  	mov	A,#0feh
   293  00003B   1FB8(1)  	mov	p0m,a
   294  00003C   2DFF(1)  	mov	A,#0ffh
   295  00003D   1FC1(1)  	mov	P1M,A
   296  00003E   2D00(1)  	mov	A,#00h	
   297  00003F   1FC5(1)  	mov	P5M,A
   298  000040             	
   299  000040   0000(1)  	nop
   300  000041   0000(1)  	nop
   301  000042   0000(1)  	nop
   302  000043   2BD0(1)  	clr	p0
   303  000044   2BD1(1)  	clr	p1
   304  000045   2BD5(1)  	clr	p5
   305  000046   0E00(2)  	ret
   306  000047             ;***********************************************
   307  000047             ;**********************************************
   308  000047             ;Name	:SysInitial
   309  000047             ;Function:
   310  000047             ;Input  :
   311  000047             ;Output	:
   312  000047             ;Register Used:
   313  000047             ;***********************************************
   314  000047             SysInitial:
   315  000047   2B86(1)  	clr	PFLAG			;pflag = x,x,x,x,x,c,dc,z
   316  000048   2D00(1)  	mov  	A,#00h			;Clear watchdog timer and initial system mode
   317  000049   2FCA(1)  	b0mov	OSCM,A
   318  00004A             
   319  00004A   2D30(1)  	mov	A,#00110000B
   320  00004B   2FD8(1)  	b0mov	T0M,A			; Set the T0 rate=Fcpu/64
   321  00004C   2D00(1)  	mov	A,#0h
   322  00004D   2FD9(1)  	b0mov	T0C,A
   323  00004E   47D8(1)  	bclr	FT0enb			; Enable TIMER0
   324  00004F   4CC9(1)  	bset	ft0ien			; Enable T0 interrupt
   325  000050   44C8(1)  	bclr	ft0irq			; CLEAR TIMER0 INTERRUPT FLAG
   326  000051             
   327  000051   2D74(1)  	MOV	A,#01110100B
   328  000052   2FDA(1)  	B0MOV	TC0M,A			;Set the TC0 rate=Fcpu/2

⌨️ 快捷键说明

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