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