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

📄 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  000A D             	wingbuf1	ds	1	;左右翼档位1
    54  000B D             	empennagebuf1	ds	1	;尾翼档位1
    55  000C D             	screwbuf1	ds	1	;螺旋桨档位1
    56  000D D             	swingbuf1	ds	1	;摆尾档位1
    57  00000E             ;	wingbuf2	ds	1	;左右翼档位1
    58  00000E             ;	empennagebuf2	ds	1	;尾翼档位1
    59  00000E             ;	screwbuf2	ds	1	;螺旋桨档位1
    60  00000E             ;	swingbuf2	ds	1	;摆尾档位1
    61  00000E             
    62  000E D             	samebuf1	ds	1
    63  000F D             	samebuf2	ds	1
    64  0010 D             	samebuf3	ds	1
    65  0011 D             	samebuf4	ds	1
    66  000012             
    67  000012             	
    68  0012 D             	leveh		ds	1	;接收信号的高电平计数值
    69  0013 D             	level		ds	1	;接收信号的低电平计数值
    70  0014 D             	levecount	ds	1	;接受信号计数值的中间变量
    71  000015             ;	timerswing	ds	1	;摆尾输出振荡波形的计数值
    72  000015             ;	timerempennage	ds	1	;尾翼输出振荡波形的计数值
    73  000015             ;	timerwing	ds	1	;机翼输出振荡波形的计数值
    74  000015             ;	timerscrew	ds	1	;螺旋桨输出振荡波形的计数值
    75  000015             	
    76  000015             	
    77  000015             	
    78  0015 D             	tablecount	ds	1	;查表的计数值
    79  000016             		
    80  000016             ;	timer1800us	ds	1
    81  0016 D             	timer5ms	ds	1
    82  0017 D             	timer500ms	ds	1
    83  000018             	
    84  000018             	
    85  000018             		
    86  000018             ;	pulsecount1	ds	1	;低电平计数
    87  000018             ;	pulsecount2	ds	1	;高电平计数
    88  000018             				
    89  0018 D             	r1		ds	1		;延时
    90  0019 D             	r2		ds	1
    91  00001A             	
    92  001A D             	flag		ds	1
    93  001B D             	flag1		ds	1
    94  001C D             	flag2		ds	1
    95  00001D             
    96  00001D             
    97  00001D             ;飞机各控制脚输出
    98  00001D             ;//set by carman
    99  001D D             	wingbuf		ds	1	;控制左右翼高电平输出宽度
   100  001E D             	empennagebuf	ds	1	;控制尾翼高电平输出宽度
   101  001F D             	screwbuf	ds	1	;控制螺旋桨高电平输出宽度
   102  0020 D             	swingbuf	ds	1	;控制摆尾高电平输出宽度
   103  000021             ;------
   104  000021             ;可以通过设定以下RAM来改变各高电平宽度
   105  0021 D             	wingloadbuf	ds	1	;重新载入左右翼高电平控制信号
   106  0022 D             	empennageloadbuf ds	1	;重新载入尾翼高电平控制信号
   107  0023 D             	screwloadbuf	ds	1	;重新载入螺旋桨高电平控制信号
   108  0024 D             	swingloadbuf	ds	1	;重新载入摆尾高电平控制信号
   109  000025             ;-----
   110  0025 D             	winglowbuf	ds	1	;控制左右翼低电平输出宽度
   111  0026 D             	empennagelowbuf	ds	1	;控制尾翼低电平输出宽度
   112  0027 D             	screwlowbuf	ds	1	;控制螺旋桨低电平输出宽度
   113  0028 D             	swinglowbuf	ds	1	;控制摆尾低电平输出宽度
   114  000029             
   115  000029             
   116  000029             ;*************** Define flag ***************
   117  000029             ;时间标志
   118  000029             ;	t5msflag1	equ	flag.0
   119  000029             ;	t5msflag2	equ	flag.1
   120  000029             ;	t5msflag3	equ	flag.2
   121  000029             ;	t5msflag4	equ	flag.3
   122  000029             ;	t1800usflag	equ	flag.4
   123  000029             ;	t200usflag	equ	flag.5
   124  E 0006001A         	t500msflag	equ	flag.6
   125  E 0007001A         	t5msflag	equ	flag.7
   126  000029             	
   127  000029             	
   128  E 0000001B         	csxenbflag		equ	flag1.0	;是否检测csx的信号
   129  000029             ;	winghighflag		equ	flag1.1	;机翼是否输出振荡波的标志
   130  000029             ;	empennagehighflag	equ	flag1.2	;尾翼是否输出振荡波的标志
   131  000029             ;	screwhighflag		equ	flag1.3	;螺旋桨是否输出振荡波的标志
   132  000029             ;	swinghighflag		equ	flag1.4	;摆尾是否输出振荡波的标志
   133  E 0005001B         	errorflag		equ	flag1.5	;
   134  000029             ;	singleflag		equ	flag1.6	;遥控接收信号的中断标志
   135  E 0007001B         	firstflag		equ	flag1.7	;第一个接收信号的标志
   136  000029             	
   137  E 0000001C         	keystatflag		equ	flag2.0
   138  000029             
   139  E 0001001C         	t18msflag		equ	flag2.1
   140  000029             
   141  000029             
   142  000029             
   143  000029             ;飞机各控制脚状态输出切换
   144  000029             ;//set by carman
   145  E 0002001C         	wingstatflag		equ	flag2.2	;=0:high output,=1:low output
   146  E 0003001C         	empennagestatflag	equ	flag2.3
   147  E 0004001C         	screwstatflag		equ	flag2.4
   148  E 0005001C         	swingstatflag		equ	flag2.5
   149  000029             
   150  000029             ;	t0count		equ	#230;231
   151  000029             
   152  E 0000000A         	samecontant		equ	#0ah	;解码得到相同的次数
   153  000029             ;----------------------------------------------
   154  000029             ;-------------constant define------------------
   155  000029             
   156  000029             ;*************Port define**************************
   157  000029             
   158  E 000000D0                 singleflag	equ     p0.0	;遥控接收脚
   159  E 000100D1         	ptwing		equ	p1.1	;机翼
   160  E 000000D1         	ptscrew		equ	p1.0	;螺旋桨
   161  E 000200D1         	ptempennage	equ	p1.2	;尾翼
   162  E 000300D1               	ptswing		equ     p1.3	;摆尾
   163  000029             	
   164  E 000000D5                	ptcsx1		equ	p5.0	;前后陀螺仪控制信号	
   165  E 000100D5         	ptcsx2		equ	p5.1	;
   166  E 000200D5         	ptcsx3		equ	p5.2	;
   167  E 000300D5         	ptcsx4		equ	p5.3	;
   168  E 000400D5         	ptcsy1		equ	p5.4	;左右陀螺仪控制信号
   169  E 000500D5         	ptcsy2		equ	p5.5	;
   170  E 000600D5         	ptcsy3		equ	p5.6	;
   171  E 000700D5         	ptcsy4		equ	p5.7	;
   172  000029             		
   173  000029             	
   174  000029             ;*********Micro define as following****************
   175  000029             	NOTBIT		macro bit
   176  000029             			b0bts0 bit
   177  000029             			jmp $+3
   178  000029             			b0bset bit
   179  000029             			jmp $+2
   180  000029             			b0bclr bit
   181  000029             			endm
   182  000029             
   183  000029             	IFLT16		expand mem1,val1,val2,adr			;mem<val val-->adr
   184  000029             			local flt00,flt10,flt20,flt30
   185  000029             			mov a,mem1+1
   186  000029             			cmprs a,val2
   187  000029             			jmp flt10
   188  000029             			mov a,mem1
   189  000029             			cmprs a,val1
   190  000029             			jmp flt20
   191  000029             			jmp flt30
   192  000029             		flt20:
   193  000029             			b0bts1 fc
   194  000029             			jmp adr
   195  000029             			jmp flt30
   196  000029             		flt10:
   197  000029             			b0bts1 fc
   198  000029             			jmp adr
   199  000029             		flt30:
   200  000029             			endm
   201  000029             
   202  000029             
   203  000029             ;***********************************************
   204  000000             .code
   205  000000             	org	0h
   206  000000   8010(2)  	jmp	start
   207  000001             	
   208  000008             	org	08h
   209  000008   8076(2)  	jmp	interruptSub
   210  000009             	
   211  000010             	org	10h
   212  000010             
   213  000010             	include		main.asm
   214  000010             ;***********************************************
   215  000010             start:
   216  000010   0000(1)  	nop
   217  000011   C02F(2)  	call		PortInitial
   218  000012   C01E(2)  	call		RAMInitial
   219  000013   C044(2)  	call		SysInitial
   220  000014   C05C(2)  	call		pdelay100ms
   221  000015   C02F(2)  	call		PortInitial
   222  000016   C01E(2)  	call		RAMInitial
   223  000017   C044(2)  	call		SysInitial
   224  000018             		
   225  000018             ;***********************************************
   226  000018             
   227  000018             mainloop:
   228  000018   2D5A(1)  	mov	a,#5ah
   229  000019   1FCC(1)  	mov 	wdtr,a
   230  00001A             ;	call	mnchkrx
   231  00001A   C158(2)  	call	mnint
   232  00001B   C18E(2)  	call	mnkey
   233  00001C   C068(2)  	call	mnapp
   234  00001D   8018(2)  	jmp	mainloop
   235  00001E             	
   236  00001E             ;***********************************************
   237  00001E             RAMInitial:
   238  00001E   2B84(1)  	clr	Y    				;Select bank 0
   239  00001F   2D2F(1)  	mov	A,#0x2f
   240  000020   2F83(1)  	b0mov	Z,A				;Set @YZ address from 7fh
   241  000021             
   242  000021             ClrRAM10:
   243  000021   2BE7(1)  	clr	@YZ				;Clear @YZ content
   244  000022   2683(1+S)  	decms	Z  				;z = z - 1 , skip next if z=0
   245  000023   8021(2)  	jmp	ClrRAM10
   246  000024   2BE7(1)  	clr 	@YZ				;Clear address 0x00
   247  000025             ;--------------------set some content----------------
   248  000025             ;设定各控制脚归零点
   249  000025   2D21(1)  	mov	a,#33
   250  000026   2F1D(1)  	b0mov	wingbuf,a
   251  000027   2F21(1)  	b0mov	wingloadbuf,a	
   252  000028             ;//	mov	a,#33		
   253  000028   2F1E(1)  	b0mov   empennagebuf,a	
   254  000029   2F22(1)  	b0mov	empennageloadbuf,a
   255  00002A             ;//	mov	a,#33	
   256  00002A   2F1F(1)  	b0mov   screwbuf,a
   257  00002B   2F23(1)          b0mov	screwloadbuf,a
   258  00002C             ;//     b0mov	a,#20	
   259  00002C   2F20(1)          b0mov   swingbuf,a
   260  00002D   2F24(1)  	b0mov   swingloadbuf,a	
   261  00002E   0E00(2)  	ret
   262  00002F             ;***********************************************
   263  00002F             PortInitial:
   264  00002F   2BD0(1)  	clr	p0
   265  000030   2BD1(1)  	clr	p1
   266  000031   2BD5(1)  	clr	p5
   267  000032             
   268  000032   2D00(1)  	mov	A,#00h  	;//don't Pull up p5,p1,p0 port
   269  000033   2FE0(1)  	b0mov	p0ur,a
   270  000034   2FE1(1)  	b0mov	P1UR,A
   271  000035   2DFF(1)  	mov	A,#0ffh 	
   272  000036   2FE5(1)  	b0mov	P5UR,A	
   273  000037             	
   274  000037   2DFE(1)  	mov	A,#0feh
   275  000038   1FB8(1)  	mov	p0m,a
   276  000039   2DFF(1)  	mov	A,#0ffh
   277  00003A   1FC1(1)  	mov	P1M,A
   278  00003B   2DFF(1)  	mov	A,#0ffh	
   279  00003C   1FC5(1)  	mov	P5M,A
   280  00003D             	
   281  00003D   0000(1)  	nop
   282  00003E   0000(1)  	nop
   283  00003F   0000(1)  	nop
   284  000040   2BD0(1)  	clr	p0
   285  000041   2BD1(1)  	clr	p1
   286  000042   2BD5(1)  	clr	p5
   287  000043   0E00(2)  	ret
   288  000044             ;***********************************************
   289  000044             ;**********************************************
   290  000044             ;Name	:SysInitial
   291  000044             ;Function:
   292  000044             ;Input  :
   293  000044             ;Output	:
   294  000044             ;Register Used:
   295  000044             ;***********************************************
   296  000044             SysInitial:
   297  000044   2B86(1)  	clr	PFLAG			;pflag = x,x,x,x,x,c,dc,z
   298  000045   2D00(1)  	mov  	A,#00h			;Clear watchdog timer and initial system mode
   299  000046   2FCA(1)  	b0mov	OSCM,A
   300  000047             
   301  000047   2D30(1)  	mov	A,#00110000B
   302  000048   2FD8(1)  	b0mov	T0M,A			; Set the T0 rate=Fcpu/64
   303  000049   2D00(1)  	mov	A,#0h
   304  00004A   2FD9(1)  	b0mov	T0C,A
   305  00004B   47D8(1)  	bclr	FT0enb			; Enable TIMER0
   306  00004C   4CC9(1)  	bset	ft0ien			; Enable T0 interrupt
   307  00004D   44C8(1)  	bclr	ft0irq			; CLEAR TIMER0 INTERRUPT FLAG
   308  00004E             
   309  00004E   2D74(1)  	MOV	A,#01110100B
   310  00004F   2FDA(1)  	B0MOV	TC0M,A			;Set the TC0 rate=Fcpu/2
   311  000050   2D9C(1)  	mov	A,#156;206;
   312  000051             
   313  000051             ;	MOV	A,#01100100B
   314  000051             ;	B0MOV	TC0M,A			; Set the TC0 rate=Fcpu/64

⌨️ 快捷键说明

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