?? 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 Disable
23 000000 .Code_Option Reset_Pin P15
24 000000 .Code_Option Watch_Dog Disable ; Disable Watchdog
25 000000 .Code_Option High_Clk 4M_X'tal ; Crystal/Resonator: 2Mhz~10Mhz
26 000000 .Code_Option Fcpu #0 ; Fcpu = High_Clk/1
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
58 00000E ; wingbuf2 ds 1 ;左右翼檔位1
59 00000E ; empennagebuf2 ds 1 ;尾翼檔位1
60 00000E ; screwbuf2 ds 1 ;螺旋槳檔位1
61 00000E ; swingbuf2 ds 1 ;擺尾檔位1
62 00000E
63 000E D samebuf1 ds 1
64 000F D samebuf2 ds 1
65 0010 D samebuf3 ds 1
66 0011 D samebuf4 ds 1
67 000012
68 000012
69 0012 D leveh ds 1 ;接收信號的高電平計數值
70 0013 D level ds 1 ;接收信號的低電平計數值
71 0014 D levecount ds 1 ;接受信號計數值的中間變量
72 0015 D timerswing ds 1 ;擺尾輸出振蕩波形的計數值
73 0016 D timerempennage ds 1 ;尾翼輸出振蕩波形的計數值
74 0017 D timerwing ds 1 ;機翼輸出振蕩波形的計數值
75 0018 D timerscrew ds 1 ;螺旋槳輸出振蕩波形的計數值
76 000019
77 000019
78 000019
79 000019 ; tempmaxh ds 1
80 000019 ; tempmaxl ds 1
81 000019 ; tempmidh ds 1
82 000019 ; tempmidl ds 1
83 000019 ; tempminh ds 1
84 000019 ; tempminl ds 1
85 000019 ; tempvalh ds 1
86 000019 ; tempvall ds 1
87 000019 ; tempcount ds 1
88 000019
89 000019 ; tablebufh ds 1 ;查表值
90 000019 ; tablebufl ds 1 ;
91 000019
92 0019 D tablecount ds 1 ;查表的計數值
93 00001A ; tablecountbak ds 1 ;上一次的計數值
94 00001A ; samecount ds 1 ;跟上一次相同的次數
95 00001A ; countbuf ds 1 ;最終結果值
96 00001A
97 00001A ; tmrf1 ds 1
98 00001A ; tmrf2 ds 1
99 00001A ; tmrt1 ds 1
100 00001A ; tmrt2 ds 1
101 00001A ; temp6 ds 1
102 00001A
103 001A D timer1800us ds 1
104 001B D timer5ms ds 1
105 001C D timer500ms ds 1
106 00001D ; timer1s ds 1
107 00001D ; timer1m ds 1
108 00001D ; timercount ds 1 ;時間計數
109 00001D ; timertable ds 1 ;定時時間
110 00001D
111 00001D
112 00001D
113 001D D pulsecount1 ds 1 ;低電平計數
114 001E D pulsecount2 ds 1 ;高電平計數
115 00001F
116 001F D r1 ds 1 ;延時
117 0020 D r2 ds 1
118 000021
119 000021 ;// temp0 ds 1
120 000021 ;// temp1 ds 1
121 000021
122 0021 D flag ds 1
123 0022 D flag1 ds 1
124 0023 D flag2 ds 1
125 000024 ;// flag3 ds 1
126 000024 ;---------
127 000024 ;飛機各控制腳輸出
128 000024 ;//set by carman
129 0024 D wingbuf ds 1 ;控制左右翼高電平輸出寬度
130 0025 D empennagebuf ds 1 ;控制尾翼高電平輸出寬度
131 0026 D screwbuf ds 1 ;控制螺旋槳高電平輸出寬度
132 0027 D swingbuf ds 1 ;控制擺尾高電平輸出寬度
133 000028 ;------
134 000028 ;可以通過設定以下RAM來改變各高電平寬度
135 0028 D wingloadbuf ds 1 ;重新載入左右翼高電平控制信號
136 0029 D empennageloadbuf ds 1 ;重新載入尾翼高電平控制信號
137 002A D screwloadbuf ds 1 ;重新載入螺旋槳高電平控制信號
138 002B D swingloadbuf ds 1 ;重新載入擺尾高電平控制信號
139 00002C ;-----
140 002C D winglowbuf ds 1 ;控制左右翼低電平輸出寬度
141 002D D empennagelowbuf ds 1 ;控制尾翼低電平輸出寬度
142 002E D screwlowbuf ds 1 ;控制螺旋槳低電平輸出寬度
143 002F D swinglowbuf ds 1 ;控制擺尾低電平輸出寬度
144 000030 ;*************** Define flag ***************
145 000030 ;時間標志
146 E 00000021 t5msflag1 equ flag.0
147 E 00010021 t5msflag2 equ flag.1
148 E 00020021 t5msflag3 equ flag.2
149 E 00030021 t5msflag4 equ flag.3
150 E 00040021 t1800usflag equ flag.4
151 E 00050021 t200usflag equ flag.5
152 E 00060021 t500msflag equ flag.6
153 E 00070021 t5msflag equ flag.7
154 000030
155 000030
156 E 00000022 csxenbflag equ flag1.0 ;是否檢測csx的信號
157 E 00010022 winghighflag equ flag1.1 ;機翼是否輸出振蕩波的標志
158 E 00020022 empennagehighflag equ flag1.2 ;尾翼是否輸出振蕩波的標志
159 E 00030022 screwhighflag equ flag1.3 ;螺旋槳是否輸出振蕩波的標志
160 E 00040022 swinghighflag equ flag1.4 ;擺尾是否輸出振蕩波的標志
161 E 00050022 errorflag equ flag1.5 ;
162 000030 ; singleflag equ flag1.6 ;遙控接收信號的中斷標志
163 E 00070022 firstflag equ flag1.7 ;第一個接收信號的標志
164 000030
165 E 00000023 keystatflag equ flag2.0
166 E 00010023 t18msflag equ flag2.1
167 000030 ;---------
168 000030 ;飛機各控制腳狀態輸出切換
169 000030 ;//set by carman
170 E 00020023 wingstatflag equ flag2.2 ;=0:high output,=1:low output
171 E 00030023 empennagestatflag equ flag2.3
172 E 00040023 screwstatflag equ flag2.4
173 E 00050023 swingstatflag equ flag2.5
174 000030
175 000030 ; t0count equ #230;231
176 E 00000005 samecontant equ #5 ;解碼得到相同的次數
177 000030 ;----------------------------------------------
178 000030 ;-------------constant define------------------
179 000030
180 000030 ;*************Port define**************************
181 000030
182 E 000000D0 singleflag equ p0.0 ;遙控接收腳
183 E 000100D1 ptwing equ p1.1 ;機翼
184 E 000000D1 ptscrew equ p1.0 ;螺旋槳
185 E 000200D1 ptempennage equ p1.2 ;尾翼
186 E 000300D1 ptswing equ p1.3 ;擺尾
187 000030
188 E 000000D5 ptcsx1 equ p5.0 ;前后陀螺儀控制信號
189 E 000100D5 ptcsx2 equ p5.1 ;
190 E 000200D5 ptcsx3 equ p5.2 ;
191 E 000300D5 ptcsx4 equ p5.3 ;
192 E 000400D5 ptcsy1 equ p5.4 ;左右陀螺儀控制信號
193 E 000500D5 ptcsy2 equ p5.5 ;
194 E 000600D5 ptcsy3 equ p5.6 ;
195 E 000700D5 ptcsy4 equ p5.7 ;
196 000030
197 000030
198 000030 ;*********Micro define as following****************
199 000030 NOTBIT macro bit
200 000030 b0bts0 bit
201 000030 jmp $+3
202 000030 b0bset bit
203 000030 jmp $+2
204 000030 b0bclr bit
205 000030 endm
206 000030
207 000030 IFLT16 expand mem1,val1,val2,adr ;mem<val val-->adr
208 000030 local flt00,flt10,flt20,flt30
209 000030 mov a,mem1+1
210 000030 cmprs a,val2
211 000030 jmp flt10
212 000030 mov a,mem1
213 000030 cmprs a,val1
214 000030 jmp flt20
215 000030 jmp flt30
216 000030 flt20:
217 000030 b0bts1 fc
218 000030 jmp adr
219 000030 jmp flt30
220 000030 flt10:
221 000030 b0bts1 fc
222 000030 jmp adr
223 000030 flt30:
224 000030 endm
225 000030
226 000030
227 000030 ;***********************************************
228 000000 .code
229 000000 org 0h
230 000000 8010(2) jmp start
231 000001
232 000008 org 08h
233 000008 810A(2) jmp interruptSub
234 000009
235 000010 org 10h
236 000010
237 000010 include main.asm
238 000010 ;***********************************************
239 000010 start:
240 000010 0000(1) nop
241 000011 C02A(2) call PortInitial
242 000012 ;// call RAMInitial
243 000012 ;// call SysInitial
244 000012 ;// call pdelay100ms
245 000012 C02A(2) call PortInitial
246 000013 C019(2) call RAMInitial
247 000014 C03F(2) call SysInitial
248 000015 ;***********************************************
249 000015 ;// b0bclr fgie
250 000015 mainloop:
251 000015 ;// jmp mainloop
252 000015 ;-----------------------------------------------
253 000015 ;//test mode
254 000015 looplow:
255 000015 /*
256 000015 b0bclr ptwing
257 000015 mov_ r1,#80
258 000015 call Pdelay10us
259 000015 mov a,#2
260 000015 add r2,a
261 000015 mov a,r2
262 000015 cmprs a,#19
263 000015 jmp $+3
264 000015 mov a,#1
265 000015 mov r2,a
266 000015 mov a,r2
267 000015 mov r1,a
268 000015 b0bset ptwing
269 000015 ;// mov_ r1,#1
270 000015 call Pdelay10us
271 000015 b0bclr ptwing
272 000015 nop
273 000015 */
274 000015 ;------
275 000015 /*
276 000015 b0bclr ptwing
277 000015 mov_ r2,#160
278 000015 call Pdelay100us ;50us
279 000015 b0bset ptwing
280 000015 mov_ r2,#50
281 000015 call Pdelay100us ;50us
282 000015 */
283 000015 ;// jmp looplow
284 000015
285 000015 ;-----------------------------------------------
286 000015 2D5A(1) mov a,#5ah
287 000016 1FCC(1) mov wdtr,a
288 000017 C1EC(2) call mnint
289 000018 ;// call mnkey
290 000018 ;// call mnapp
291 000018 8015(2) jmp mainloop
292 000019
293 000019 ;***********************************************
294 000019 ;***********************************************
295 000019 ;***********************************************
296 000019 RAMInitial:
297 000019 2B84(1) clr Y ;Select bank 0
298 00001A 2D2F(1) mov A,#0x2f
299 00001B 2F83(1) b0mov Z,A ;Set @YZ address from 7fh
300 00001C
301 00001C ClrRAM10:
302 00001C 2BE7(1) clr @YZ ;Clear @YZ content
303 00001D 2683(1+S) decms Z ;z = z - 1 , skip next if z=0
304 00001E 801C(2) jmp ClrRAM10
305 00001F 2BE7(1) clr @YZ ;Clear address 0x00
306 000020 ;--------------------set some content----------------
307 000020 ;設定各控制腳歸零點
308 000020 2D21(1) mov a,#33
309 000021 2F24(1) b0mov wingbuf,a
310 000022 2F28(1) b0mov wingloadbuf,a
311 000023 ;// mov a,#33
312 000023 2F25(1) b0mov empennagebuf,a
313 000024 2F29(1) b0mov empennageloadbuf,a
314 000025 ;// mov a,#33
315 000025 2F26(1) b0mov screwbuf,a
316 000026 2F2A(1) b0mov screwloadbuf,a
317 000027 ;// b0mov a,#20
318 000027 2F27(1) b0mov swingbuf,a
319 000028 2F2B(1) b0mov swingloadbuf,a
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -