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

📄 plane051011v02.lst

📁 应用松翰母体开发的航模飞机的源代码!有舵机控制功能
💻 LST
📖 第 1 页 / 共 5 页
字号:
     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             	csxcalibratebuf	ds	1	;csx校准值
    47  000009             	
    48  0009 D             	csytable	ds	1
    49  000A D             	csycalibratebuf	ds	1
    50  000B D             	gearbuf		ds	1	;输出档位值
    51  000C D             	inputcount	ds	1	;哪一个控制脚
    52  00000D             	
    53  00000D             ;飞机各控制脚输出
    54  00000D             ;//set by carman
    55  000D D             	wingbuf		ds	1	;控制左右翼高电平输出宽度
    56  000E D             	wingbuf1	ds	1	;左右翼档位1
    57  000F D             	wingloadbuf	ds	1	;重新载入左右翼高电平控制信号
    58  0010 D             	winglowbuf	ds	1	;控制左右翼低电平输出宽度
    59  000011             
    60  0011 D             	empennagebuf	ds	1	;控制尾翼高电平输出宽度
    61  0012 D             	empennagebuf1	ds	1	;尾翼档位1
    62  0013 D             	empennageloadbuf ds	1	;重新载入尾翼高电平控制信号
    63  0014 D             	empennagelowbuf	ds	1	;控制尾翼低电平输出宽度
    64  000015             
    65  0015 D             	screwbuf	ds	1	;控制螺旋桨高电平输出宽度
    66  0016 D             	screwbuf1	ds	1	;螺旋桨档位1
    67  0017 D             	screwloadbuf	ds	1	;重新载入螺旋桨高电平控制信号
    68  0018 D             	screwlowbuf	ds	1	;控制螺旋桨低电平输出宽度
    69  000019             
    70  0019 D             	swingbuf	ds	1	;控制摆尾高电平输出宽度
    71  001A D             	swingbuf1	ds	1	;摆尾档位1
    72  001B D             	swingloadbuf	ds	1	;重新载入摆尾高电平控制信号
    73  001C D             	swinglowbuf	ds	1	;控制摆尾低电平输出宽度
    74  00001D             ;------
    75  00001D             ;可以通过设定以下RAM来改变各高电平宽度
    76  00001D             ;-----
    77  00001D             
    78  001D D             	samebuf1	ds	1
    79  001E D             	samebuf2	ds	1
    80  001F D             	samebuf3	ds	1
    81  0020 D             	samebuf4	ds	1
    82  000021             
    83  000021             	
    84  0021 D             	leveh		ds	1	;接收信号的高电平计数值
    85  0022 D             	level		ds	1	;接收信号的低电平计数值
    86  0023 D             	levecount	ds	1	;接受信号计数值的中间变量
    87  000024             	
    88  000024             	
    89  0024 D             	tablecount	ds	1	;查表的计数值
    90  000025             		
    91  0025 D             	timer5ms	ds	1
    92  0026 D             	timer500ms	ds	1
    93  000027             	
    94  000027             		
    95  000027             				
    96  0027 D             	r1		ds	1		;延时
    97  0028 D             	r2		ds	1
    98  000029             	
    99  0029 D             	flag		ds	1
   100  002A D             	flag1		ds	1
   101  002B D             	flag2		ds	1
   102  002C D             	flag3		ds	1
   103  00002D             
   104  00002D             
   105  00002D             
   106  00002D             
   107  00002D             ;*************** Define flag ***************
   108  00002D             
   109  E 00000029         	add1flag	equ	flag.0
   110  E 00010029         	add2flag	equ	flag.1
   111  E 00020029         	add3flag	equ	flag.2
   112  E 00030029         	add4flag	equ	flag.3
   113  00002D             ;	t1800usflag	equ	flag.4
   114  00002D             ;	t200usflag	equ	flag.5
   115  00002D             ;时间标志
   116  E 00060029         	t500msflag	equ	flag.6
   117  E 00070029         	t5msflag	equ	flag.7
   118  00002D             	
   119  00002D             	
   120  E 0000002A         	csxenbflag		equ	flag1.0	;是否检测csx的信号
   121  E 0001002A         	csyenbflag		equ	flag1.1	;
   122  E 0002002A         	wingaddflag		equ	flag1.2	;
   123  E 0003002A         	wingsubflag		equ	flag1.3	;
   124  E 0004002A         	changeflag		equ	flag1.4	;
   125  E 0005002A         	errorflag		equ	flag1.5	;
   126  00002D             ;	singleflag		equ	flag1.6	;遥控接收信号的中断标志
   127  E 0007002A         	firstflag		equ	flag1.7	;第一个接收信号的标志
   128  00002D             	
   129  E 0000002B         	keystatflag		equ	flag2.0
   130  00002D             
   131  E 0001002B         	t18msflag		equ	flag2.1
   132  00002D             
   133  00002D             
   134  00002D             
   135  00002D             ;飞机各控制脚状态输出切换
   136  00002D             ;//set by carman
   137  E 0002002B         	wingstatflag		equ	flag2.2	;=0:high output,=1:low output
   138  E 0003002B         	empennagestatflag	equ	flag2.3
   139  E 0004002B         	screwstatflag		equ	flag2.4
   140  E 0005002B         	swingstatflag		equ	flag2.5
   141  00002D             
   142  00002D             
   143  E 0006002B         	chksigntableflag	equ	flag2.6
   144  E 0007002B         	empenaddflag		equ	flag2.7	;csx值加减标志
   145  E 0000002C         	empensubflag		equ	flag3.0
   146  00002D             ;	t0count		equ	#230;231
   147  00002D             
   148  E 00000003         	samecontant		equ	#03h	;解码得到相同的次数
   149  E 000000A5         	lowcontant		equ	#165	;低电平宽度
   150  E 00000011         	equalcontant		equ	#011h;33	;上电高电平参数
   151  E 00000007         	zerocontant		equ	#7	;高电平宽度补偿
   152  00002D             ;----------------------------------------------
   153  00002D             ;-------------constant define------------------
   154  00002D             
   155  00002D             ;*************Port define**************************
   156  00002D             
   157  E 000000D0                 singleflag	equ     p0.0	;遥控接收脚
   158  E 000100D1         	ptwing		equ	p1.1	;机翼
   159  E 000000D1         	ptscrew		equ	p1.0	;螺旋桨
   160  E 000200D1         	ptempennage	equ	p1.2	;尾翼
   161  E 000300D1               	ptswing		equ     p1.3	;摆尾
   162  00002D             	
   163  E 000000D5                	ptcsx1		equ	p5.0	;前后陀螺仪控制信号	
   164  E 000100D5         	ptcsx2		equ	p5.1	;
   165  E 000200D5         	ptcsx3		equ	p5.2	;
   166  E 000300D5         	ptcsx4		equ	p5.3	;
   167  E 000400D5         	ptcsy1		equ	p5.4	;左右陀螺仪控制信号
   168  E 000500D5         	ptcsy2		equ	p5.5	;
   169  E 000600D5         	ptcsy3		equ	p5.6	;
   170  E 000700D5         	ptcsy4		equ	p5.7	;
   171  00002D             		
   172  00002D             	
   173  00002D             ;*********Micro define as following****************
   174  00002D             	NOTBIT		macro bit
   175  00002D             			b0bts0 bit
   176  00002D             			jmp $+3
   177  00002D             			b0bset bit
   178  00002D             			jmp $+2
   179  00002D             			b0bclr bit
   180  00002D             			endm
   181  00002D             
   182  00002D             	IFLT16		expand mem1,val1,val2,adr			;mem<val val-->adr
   183  00002D             			local flt00,flt10,flt20,flt30
   184  00002D             			mov a,mem1+1
   185  00002D             			cmprs a,val2
   186  00002D             			jmp flt10
   187  00002D             			mov a,mem1
   188  00002D             			cmprs a,val1
   189  00002D             			jmp flt20
   190  00002D             			jmp flt30
   191  00002D             		flt20:
   192  00002D             			b0bts1 fc
   193  00002D             			jmp adr
   194  00002D             			jmp flt30
   195  00002D             		flt10:
   196  00002D             			b0bts1 fc
   197  00002D             			jmp adr
   198  00002D             		flt30:
   199  00002D             			endm
   200  00002D             
   201  00002D             
   202  00002D             ;***********************************************
   203  000000             .code
   204  000000             	org	0h
   205  000000   8010(2)  	jmp	start
   206  000001             	
   207  000008             	org	08h
   208  000008   8089(2)  	jmp	interruptSub
   209  000009             	
   210  000010             	org	10h
   211  000010             
   212  000010             	include		main.asm
   213  000010             ;***********************************************
   214  000010             start:
   215  000010   0000(1)  	nop
   216  000011   C033(2)  	call		PortInitial
   217  000012             ;	call		RAMInitial
   218  000012             ;	call		SysInitial
   219  000012   C060(2)  	call		pdelay100ms
   220  000013   C033(2)  	call		PortInitial
   221  000014   C01C(2)  	call		RAMInitial
   222  000015   C048(2)  	call		SysInitial
   223  000016             		
   224  000016             ;***********************************************
   225  000016             
   226  000016             mainloop:
   227  000016   2D5A(1)  	mov	a,#5ah
   228  000017   1FCC(1)  	mov 	wdtr,a
   229  000018             ;	call	mnchkrx
   230  000018   C115(2)  	call	mnint
   231  000019   C22E(2)  	call	mnkey
   232  00001A   C06C(2)  	call	mnapp
   233  00001B   8016(2)  	jmp	mainloop
   234  00001C             	
   235  00001C             ;***********************************************
   236  00001C             RAMInitial:
   237  00001C   2B84(1)  	clr	Y    				;Select bank 0
   238  00001D   2D2F(1)  	mov	A,#0x2f
   239  00001E   2F83(1)  	b0mov	Z,A				;Set @YZ address from 7fh
   240  00001F             
   241  00001F             ClrRAM10:
   242  00001F   2BE7(1)  	clr	@YZ				;Clear @YZ content
   243  000020   2683(1+S)  	decms	Z  				;z = z - 1 , skip next if z=0
   244  000021   801F(2)  	jmp	ClrRAM10
   245  000022   2BE7(1)  	clr 	@YZ				;Clear address 0x00
   246  000023             ;--------------------set some content----------------
   247  000023             ;设定各控制脚归零点
   248  000023   482A(1)  	bset	csxenbflag
   249  000024   492A(1)  	bset	csyenbflag
   250  000025   2D11(1)  	mov	a,equalcontant;33
   251  000026             
   252  000026   2F0D(1)  	b0mov	wingbuf,a
   253  000027   2F0F(1)  	b0mov	wingloadbuf,a	
   254  000028   2F0E(1)  	b0mov	wingbuf1,a
   255  000029             		
   256  000029   2F11(1)  	b0mov   empennagebuf,a	
   257  00002A   2F13(1)  	b0mov	empennageloadbuf,a
   258  00002B   2F12(1)  	b0mov	empennagebuf1,a
   259  00002C             	
   260  00002C   2F15(1)  	b0mov   screwbuf,a
   261  00002D   2F17(1)          b0mov	screwloadbuf,a
   262  00002E   2F16(1)  	b0mov   screwbuf1,a
   263  00002F             	
   264  00002F   2F19(1)          b0mov   swingbuf,a
   265  000030   2F1B(1)  	b0mov   swingloadbuf,a
   266  000031   2F1A(1)          b0mov   swingbuf1,a
   267  000032             	
   268  000032   0E00(2)  	ret
   269  000033             ;***********************************************
   270  000033             PortInitial:
   271  000033   2BD0(1)  	clr	p0
   272  000034   2BD1(1)  	clr	p1
   273  000035   2BD5(1)  	clr	p5
   274  000036             
   275  000036   2D00(1)  	mov	A,#00h  	;//don't Pull up p5,p1,p0 port
   276  000037   2FE0(1)  	b0mov	p0ur,a
   277  000038   2FE1(1)  	b0mov	P1UR,A
   278  000039   2DFF(1)  	mov	A,#0ffh 	
   279  00003A   2FE5(1)  	b0mov	P5UR,A	
   280  00003B             	
   281  00003B   2DFE(1)  	mov	A,#0feh
   282  00003C   1FB8(1)  	mov	p0m,a
   283  00003D   2DFF(1)  	mov	A,#0ffh
   284  00003E   1FC1(1)  	mov	P1M,A
   285  00003F   2D00(1)  	mov	A,#00h	
   286  000040   1FC5(1)  	mov	P5M,A
   287  000041             	
   288  000041   0000(1)  	nop
   289  000042   0000(1)  	nop
   290  000043   0000(1)  	nop
   291  000044   2BD0(1)  	clr	p0
   292  000045   2BD1(1)  	clr	p1

⌨️ 快捷键说明

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