📄 plane050930v01.lst
字号:
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 + -