📄 yc_play.lst
字号:
1 .file "YC_Play.c"
2 .arch atmega8
3 __SREG__ = 0x3f
4 __SP_H__ = 0x3e
5 __SP_L__ = 0x3d
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
77 .global bCurPlayIdx
78 .data
81 bCurPlayIdx:
82 0000 01 .byte 1
83 .global WASHVAL
86 WASHVAL:
87 0001 0008 .word 2048
88 .text
93 .global PlayStaticAsh
95 PlayStaticAsh:
1:YC_Play.c **** /*===========================================================================
2:YC_Play.c **** 【项目名】: 遥控渐变选色程序
3:YC_Play.c **** 【文件名】: YC_Play
4:YC_Play.c **** 【名 称】: 主文件
5:YC_Play.c **** 【版 本】: 1.0
6:YC_Play.c **** 【组 织】: 深圳市红绿蓝光电科技有限公司研发中心
7:YC_Play.c **** 【作 者】: 周盛志
8:YC_Play.c **** 【E-mail】: zhounanxu@163.com
9:YC_Play.c **** ===========================================================================*/
10:YC_Play.c **** #include <avrx/avrx.h>
11:YC_Play.c **** #include <avr/eeprom.h>
12:YC_Play.c ****
13:YC_Play.c **** #include "YC_MainFile.h"
14:YC_Play.c **** #include "Hardware.h"
15:YC_Play.c **** #include "YC_Play.h"
16:YC_Play.c ****
17:YC_Play.c **** BYTE bLastPlayIdx EEPROM;
18:YC_Play.c **** WORD bColorAsh[5][3] EEPROM;
19:YC_Play.c ****
20:YC_Play.c **** WORD WASHVAL=2048; //灰度值
21:YC_Play.c **** WORD wCurRedAsh, wCurGreAsh, wCurBluAsh;
22:YC_Play.c **** WORD wCurRedAshVal, wCurGreAshVal, wCurBluAshVal;
23:YC_Play.c **** BYTE bCurPlayIdx = 1;
24:YC_Play.c ****
25:YC_Play.c **** struct WORKFLAG
26:YC_Play.c **** {
27:YC_Play.c **** BYTE bColseWork; //关机标志,1=关机,0=开机;
28:YC_Play.c **** BYTE bKeyUpt; //按键状态标志,1=有键按下,0=无键按下;
29:YC_Play.c **** BYTE bAshExit; //灰度播放快速退出标志,1=有效,0=无效;
30:YC_Play.c **** BYTE bSaveKeyC; //保存按键C按下标记,1=有效,0=无效;
31:YC_Play.c **** BYTE bPlayAshOld; //上一节目是否灰度播放标志.
32:YC_Play.c **** }WorkFlag;
33:YC_Play.c ****
34:YC_Play.c **** /*=====================================================================
35:YC_Play.c **** 【功 能】: 重迭1/2周期RGB三角波渐变.
36:YC_Play.c **** 【名 称】: Play_Gradual(BYTE bGradSpeeds)
37:YC_Play.c **** 【日 期】: 2006年8月30日
38:YC_Play.c **** =====================================================================*/
39:YC_Play.c **** void Play_Gradual(BYTE bGradSpeeds)
40:YC_Play.c **** {
41:YC_Play.c **** WORD wi, wj;
42:YC_Play.c **** WorkFlag.bPlayAshOld = 1;
43:YC_Play.c **** for(wi = 0; wi < WASHVAL; wi++)
44:YC_Play.c **** {
45:YC_Play.c **** if(WorkFlag.bAshExit == 1)
46:YC_Play.c **** {WorkFlag.bAshExit = 0;return;}
47:YC_Play.c **** for(wj=0; wj<bGradSpeeds; wj++)
48:YC_Play.c **** {
49:YC_Play.c **** wCurRedAsh = wi;
50:YC_Play.c **** wCurGreAsh = WASHVAL-wi;
51:YC_Play.c **** wCurBluAsh = 0;
52:YC_Play.c **** PlayStaticAsh(wCurRedAsh, wCurGreAsh, wCurBluAsh);
53:YC_Play.c **** }
54:YC_Play.c **** }
55:YC_Play.c ****
56:YC_Play.c **** for(wi=0; wi<WASHVAL; wi++)
57:YC_Play.c **** {
58:YC_Play.c **** if(WorkFlag.bAshExit == 1)
59:YC_Play.c **** {WorkFlag.bAshExit = 0;return;}
60:YC_Play.c **** for(wj=0; wj<bGradSpeeds; wj++)
61:YC_Play.c **** {
62:YC_Play.c **** wCurRedAsh = WASHVAL-wi;
63:YC_Play.c **** wCurGreAsh = 0;
64:YC_Play.c **** wCurBluAsh = wi;
65:YC_Play.c **** PlayStaticAsh(wCurRedAsh, wCurGreAsh, wCurBluAsh);
66:YC_Play.c **** }
67:YC_Play.c **** }
68:YC_Play.c ****
69:YC_Play.c **** for(wi=0; wi<WASHVAL; wi++)
70:YC_Play.c **** {
71:YC_Play.c **** if(WorkFlag.bAshExit == 1)
72:YC_Play.c **** {WorkFlag.bAshExit = 0;return;}
73:YC_Play.c **** for(wj=0; wj<bGradSpeeds; wj++)
74:YC_Play.c **** {
75:YC_Play.c **** wCurRedAsh = 0;
76:YC_Play.c **** wCurGreAsh = wi;
77:YC_Play.c **** wCurBluAsh = WASHVAL-wi;
78:YC_Play.c **** PlayStaticAsh(wCurRedAsh, wCurGreAsh, wCurBluAsh);
79:YC_Play.c **** }
80:YC_Play.c **** }
81:YC_Play.c **** }
82:YC_Play.c ****
83:YC_Play.c **** /*=====================================================================
84:YC_Play.c **** 【功 能】: 播放某一RGB灰度颜色
85:YC_Play.c **** 【名 称】: PlayStaticAsh(BYTE bRedAsh, BYTE bGreenAsh, BYTE bBlueAsh)
86:YC_Play.c **** 【日 期】: 2006年8月30日
87:YC_Play.c **** =====================================================================*/
88:YC_Play.c **** void PlayStaticAsh(WORD wRedAsh, WORD wGreenAsh, WORD wBlueAsh)
89:YC_Play.c **** {
97 .LM1:
98 /* prologue: frame size=0 */
99 /* prologue end (size=0) */
90:YC_Play.c **** WORD wi;
91:YC_Play.c **** for(wi=0; wi<WASHVAL; wi++)
101 .LM2:
102 0000 20E0 ldi r18,lo8(0)
103 0002 30E0 ldi r19,hi8(0)
104 0004 E091 0000 lds r30,WASHVAL
105 0008 F091 0000 lds r31,(WASHVAL)+1
106 .L14:
108 .LM3:
109 000c 2E17 cp r18,r30
110 000e 3F07 cpc r19,r31
111 0010 A8F4 brsh .L13
92:YC_Play.c **** {
93:YC_Play.c **** if(wi < wRedAsh)
113 .LM4:
114 0012 2817 cp r18,r24
115 0014 3907 cpc r19,r25
116 0016 10F4 brsh .L5
94:YC_Play.c **** ON_Red();
118 .LM5:
119 0018 9598 cbi 50-0x20,5
120 001a 01C0 rjmp .L6
121 .L5:
95:YC_Play.c **** else
96:YC_Play.c **** OFF_Red();
123 .LM6:
124 001c 959A sbi 50-0x20,5
125 .L6:
97:YC_Play.c ****
98:YC_Play.c **** if(wi < wGreenAsh)
127 .LM7:
128 001e 2617 cp r18,r22
129 0020 3707 cpc r19,r23
130 0022 10F4 brsh .L7
99:YC_Play.c **** ON_Gre();
132 .LM8:
133 0024 9698 cbi 50-0x20,6
134 0026 01C0 rjmp .L8
135 .L7:
100:YC_Play.c **** else
101:YC_Play.c **** OFF_Gre();
137 .LM9:
138 0028 969A sbi 50-0x20,6
139 .L8:
102:YC_Play.c ****
103:YC_Play.c **** if(wi < wBlueAsh)
141 .LM10:
142 002a 2417 cp r18,r20
143 002c 3507 cpc r19,r21
144 002e 10F4 brsh .L9
104:YC_Play.c **** ON_Blu();
146 .LM11:
147 0030 9798 cbi 50-0x20,7
148 0032 01C0 rjmp .L4
149 .L9:
105:YC_Play.c **** else
106:YC_Play.c **** OFF_Blu();
151 .LM12:
152 0034 979A sbi 50-0x20,7
153 .L4:
155 .LM13:
156 0036 2F5F subi r18,lo8(-(1))
157 0038 3F4F sbci r19,hi8(-(1))
158 003a E8CF rjmp .L14
159 .L13:
160 003c 0895 ret
161 /* epilogue: frame size=0 */
162 /* epilogue: noreturn */
163 /* epilogue end (size=0) */
164 /* function PlayStaticAsh size 31 (31) */
169 .Lscope0:
172 .global Play_Gradual
174 Play_Gradual:
176 .LM14:
177 /* prologue: frame size=0 */
178 003e FF92 push r15
179 0040 0F93 push r16
180 0042 1F93 push r17
181 0044 CF93 push r28
182 0046 DF93 push r29
183 /* prologue end (size=5) */
184 0048 F82E mov r15,r24
186 .LM15:
187 004a 81E0 ldi r24,lo8(1)
188 004c 8093 0000 sts WorkFlag+4,r24
190 .LM16:
191 0050 00E0 ldi r16,lo8(0)
192 0052 10E0 ldi r17,hi8(0)
193 .L54:
195 .LM17:
196 0054 8091 0000 lds r24,WASHVAL
197 0058 9091 0000 lds r25,(WASHVAL)+1
198 005c 0817 cp r16,r24
199 005e 1907 cpc r17,r25
200 0060 30F5 brsh .L44
202 .LM18:
203 0062 8091 0000 lds r24,WorkFlag+2
204 0066 8130 cpi r24,lo8(1)
205 0068 09F4 brne .+2
206 006a 5BC0 rjmp .L56
208 .LM19:
209 006c 8F2D mov r24,r15
210 006e 9927 clr r25
211 0070 0097 sbiw r24,0
212 0072 D1F0 breq .L46
213 0074 EC01 movw r28,r24
214 .L23:
216 .LM20:
217 0076 1093 0000 sts (wCurRedAsh)+1,r17
218 007a 0093 0000 sts wCurRedAsh,r16
220 .LM21:
221 007e 8091 0000 lds r24,WASHVAL
222 0082 9091 0000 lds r25,(WASHVAL)+1
223 0086 801B sub r24,r16
224 0088 910B sbc r25,r17
225 008a 9093 0000 sts (wCurGreAsh)+1,r25
226 008e 8093 0000 sts wCurGreAsh,r24
228 .LM22:
229 0092 1092 0000 sts (wCurBluAsh)+1,__zero_reg__
230 0096 1092 0000 sts wCurBluAsh,__zero_reg__
232 .LM23:
233 009a 40E0 ldi r20,lo8(0)
234 009c 50E0 ldi r21,hi8(0)
235 009e BC01 movw r22,r24
236 00a0 C801 movw r24,r16
237 00a2 AEDF rcall PlayStaticAsh
239 .LM24:
240 00a4 2197 sbiw r28,1
241 00a6 39F7 brne .L23
242 .L46:
244 .LM25:
245 00a8 0F5F subi r16,lo8(-(1))
246 00aa 1F4F sbci r17,hi8(-(1))
247 00ac D3CF rjmp .L54
248 .L44:
250 .LM26:
251 00ae 00E0 ldi r16,lo8(0)
252 00b0 10E0 ldi r17,hi8(0)
253 .L55:
254 00b2 8091 0000 lds r24,WASHVAL
255 00b6 9091 0000 lds r25,(WASHVAL)+1
256 00ba 0817 cp r16,r24
257 00bc 1907 cpc r17,r25
258 00be 20F5 brsh .L48
260 .LM27:
261 00c0 8091 0000 lds r24,WorkFlag+2
262 00c4 8130 cpi r24,lo8(1)
263 00c6 69F1 breq .L56
265 .LM28:
266 00c8 8F2D mov r24,r15
267 00ca 9927 clr r25
268 00cc 0097 sbiw r24,0
269 00ce C9F0 breq .L50
270 00d0 EC01 movw r28,r24
271 .L32:
273 .LM29:
274 00d2 8091 0000 lds r24,WASHVAL
275 00d6 9091 0000 lds r25,(WASHVAL)+1
276 00da 801B sub r24,r16
277 00dc 910B sbc r25,r17
278 00de 9093 0000 sts (wCurRedAsh)+1,r25
279 00e2 8093 0000 sts wCurRedAsh,r24
281 .LM30:
282 00e6 1092 0000 sts (wCurGreAsh)+1,__zero_reg__
283 00ea 1092 0000 sts wCurGreAsh,__zero_reg__
285 .LM31:
286 00ee 1093 0000 sts (wCurBluAsh)+1,r17
287 00f2 0093 0000 sts wCurBluAsh,r16
289 .LM32:
290 00f6 A801 movw r20,r16
291 00f8 60E0 ldi r22,lo8(0)
292 00fa 70E0 ldi r23,hi8(0)
293 00fc 81DF rcall PlayStaticAsh
295 .LM33:
296 00fe 2197 sbiw r28,1
297 0100 41F7 brne .L32
298 .L50:
300 .LM34:
301 0102 0F5F subi r16,lo8(-(1))
302 0104 1F4F sbci r17,hi8(-(1))
303 0106 D5CF rjmp .L55
304 .L48:
306 .LM35:
307 0108 00E0 ldi r16,lo8(0)
308 010a 10E0 ldi r17,hi8(0)
309 010c 8091 0000 lds r24,WASHVAL
310 0110 9091 0000 lds r25,(WASHVAL)+1
311 0114 0817 cp r16,r24
312 0116 1907 cpc r17,r25
313 0118 70F5 brsh .L15
314 .L42:
316 .LM36:
317 011a 8091 0000 lds r24,WorkFlag+2
318 011e 8130 cpi r24,lo8(1)
319 0120 19F4 brne .L37
320 .L56:
322 .LM37:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -