?? 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 ;哪一個(gè)控制腳
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 ;接收信號(hào)的高電平計(jì)數(shù)值
69 0013 D level ds 1 ;接收信號(hào)的低電平計(jì)數(shù)值
70 0014 D levecount ds 1 ;接受信號(hào)計(jì)數(shù)值的中間變量
71 000015 ; timerswing ds 1 ;擺尾輸出振蕩波形的計(jì)數(shù)值
72 000015 ; timerempennage ds 1 ;尾翼輸出振蕩波形的計(jì)數(shù)值
73 000015 ; timerwing ds 1 ;機(jī)翼輸出振蕩波形的計(jì)數(shù)值
74 000015 ; timerscrew ds 1 ;螺旋槳輸出振蕩波形的計(jì)數(shù)值
75 000015
76 000015
77 000015
78 0015 D tablecount ds 1 ;查表的計(jì)數(shù)值
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 ;低電平計(jì)數(shù)
87 000018 ; pulsecount2 ds 1 ;高電平計(jì)數(shù)
88 000018
89 0018 D r1 ds 1 ;延時(shí)
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 ;飛機(jī)各控制腳輸出
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 ;可以通過(guò)設(shè)定以下RAM來(lái)改變各高電平寬度
105 0021 D wingloadbuf ds 1 ;重新載入左右翼高電平控制信號(hào)
106 0022 D empennageloadbuf ds 1 ;重新載入尾翼高電平控制信號(hào)
107 0023 D screwloadbuf ds 1 ;重新載入螺旋槳高電平控制信號(hào)
108 0024 D swingloadbuf ds 1 ;重新載入擺尾高電平控制信號(hào)
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 ;時(shí)間標(biāo)志
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 ;是否檢測(cè)csx的信號(hào)
129 000029 ; winghighflag equ flag1.1 ;機(jī)翼是否輸出振蕩波的標(biāo)志
130 000029 ; empennagehighflag equ flag1.2 ;尾翼是否輸出振蕩波的標(biāo)志
131 000029 ; screwhighflag equ flag1.3 ;螺旋槳是否輸出振蕩波的標(biāo)志
132 000029 ; swinghighflag equ flag1.4 ;擺尾是否輸出振蕩波的標(biāo)志
133 E 0005001B errorflag equ flag1.5 ;
134 000029 ; singleflag equ flag1.6 ;遙控接收信號(hào)的中斷標(biāo)志
135 E 0007001B firstflag equ flag1.7 ;第一個(gè)接收信號(hào)的標(biāo)志
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 ;飛機(jī)各控制腳狀態(tài)輸出切換
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 ;解碼得到相同的次數(shù)
153 000029 ;----------------------------------------------
154 000029 ;-------------constant define------------------
155 000029
156 000029 ;*************Port define**************************
158 E 000000D0 singleflag equ p0.0 ;遙控接收腳
159 E 000100D1 ptwing equ p1.1 ;機(jī)翼
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 ;前后陀螺儀控制信號(hào)
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 ;左右陀螺儀控制信號(hào)
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 ;設(shè)定各控制腳歸零點(diǎn)
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
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -