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

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

⌨️ 快捷键说明

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