📄 lcddrive.lst
字号:
229 .LBE4:
230 .LBE3:
231 .LBE2:
232 0042 2150 subi r18,lo8(-(-1))
233 0044 3040 sbci r19,hi8(-(-1))
234 0046 8FEF ldi r24,hi8(-1)
235 0048 2F3F cpi r18,lo8(-1)
236 004a 3807 cpc r19,r24
237 004c B9F7 brne .L19
238 .L21:
239 /* epilogue: frame size=0 */
240 004e DF91 pop r29
241 0050 CF91 pop r28
242 0052 0895 ret
243 /* epilogue end (size=3) */
244 /* function DelayXms size 27 (22) */
249 .Lscope1:
251 .global LcdPortInit
253 LcdPortInit:
255 .Ltext2:
76:lcddrive.c **** #if AVR_GCC==1
77:lcddrive.c **** while(xs--)
78:lcddrive.c **** {
79:lcddrive.c **** _delay_ms(1);
80:lcddrive.c **** }
81:lcddrive.c **** #else
82:lcddrive.c **** uint16 D_t
83:lcddrive.c **** while(xs--)
84:lcddrive.c **** {
85:lcddrive.c **** for(D_t=Fosc/1000;D_t>=0;D_t--);
86:lcddrive.c **** }
87:lcddrive.c **** #endif
88:lcddrive.c ****
89:lcddrive.c **** }
90:lcddrive.c ****
91:lcddrive.c ****
92:lcddrive.c ****
93:lcddrive.c ****
94:lcddrive.c ****
95:lcddrive.c **** /***********************************************************************
96:lcddrive.c **** * 名称:LCDportInit()
97:lcddrive.c **** * 功能:读取数据子程序。
98:lcddrive.c **** * 入口参数:无
99:lcddrive.c **** * 出口参数:返回值即为读出的数据
100:lcddrive.c **** * 说明:函数会设置LCM数据总线为输入方式
101:lcddrive.c **** ***********************************************************************/
102:lcddrive.c **** void LcdPortInit(void)
103:lcddrive.c **** {
257 .LM14:
258 /* prologue: frame size=0 */
259 /* prologue end (size=0) */
104:lcddrive.c **** DDRA |= 0x80;
261 .LM15:
262 0054 D79A sbi 58-0x20,7
105:lcddrive.c **** DDRB |= 0x80;
264 .LM16:
265 0056 BF9A sbi 55-0x20,7
106:lcddrive.c **** DDRD |= 0x06;
267 .LM17:
268 0058 81B3 in r24,49-0x20
269 005a 8660 ori r24,lo8(6)
270 005c 81BB out 49-0x20,r24
107:lcddrive.c **** //LCD_PORTS |= (1<<LCD_RST)|(1<<LCD_CS)|(1<<LCD_SDATA)|(1<<LCD_SCLK);
108:lcddrive.c **** //LCD_DDR |= (1<<LCD_RST)|(1<<LCD_CS)|(1<<LCD_SDATA)|(1<<LCD_SCLK);
109:lcddrive.c **** SetLcdRst();
272 .LM18:
273 /* #APP */
274 005e 919A SBI 0x12,1
275
110:lcddrive.c **** SetLcdCs();
277 .LM19:
278 0060 929A SBI 0x12,2
279
111:lcddrive.c **** SetLcdSclk();
281 .LM20:
282 0062 DF9A SBI 0x1b,7
283
284 /* #NOAPP */
285 /* epilogue: frame size=0 */
286 0064 0895 ret
287 /* epilogue end (size=1) */
288 /* function LcdPortInit size 18 (17) */
290 .Lscope2:
292 .global LcdReset
294 LcdReset:
112:lcddrive.c **** }
113:lcddrive.c ****
114:lcddrive.c **** /***********************************************************************
115:lcddrive.c **** * 名称:LCDreset()
116:lcddrive.c **** * 功能:LCD重启
117:lcddrive.c **** * 入口参数:无
118:lcddrive.c **** * 出口参数:五
119:lcddrive.c **** ***********************************************************************/
120:lcddrive.c **** void LcdReset(void)
121:lcddrive.c **** {
296 .LM21:
297 /* prologue: frame size=0 */
298 /* prologue end (size=0) */
122:lcddrive.c **** ClrLcdRst();
300 .LM22:
301 /* #APP */
302 0066 9198 CBI 0x12,1
303
123:lcddrive.c **** DelayXms(5);
305 .LM23:
306 /* #NOAPP */
307 0068 85E0 ldi r24,lo8(5)
308 006a 90E0 ldi r25,hi8(5)
309 006c 0E94 0000 call DelayXms
124:lcddrive.c **** SetLcdRst();
311 .LM24:
312 /* #APP */
313 0070 919A SBI 0x12,1
314
125:lcddrive.c **** DelayXms(5);
316 .LM25:
317 /* #NOAPP */
318 0072 85E0 ldi r24,lo8(5)
319 0074 90E0 ldi r25,hi8(5)
320 0076 0E94 0000 call DelayXms
321 /* epilogue: frame size=0 */
322 007a 0895 ret
323 /* epilogue end (size=1) */
324 /* function LcdReset size 17 (16) */
326 .Lscope3:
329 .global LcdSendCommand
331 LcdSendCommand:
126:lcddrive.c **** }
127:lcddrive.c ****
128:lcddrive.c ****
129:lcddrive.c **** /***********************************************************************
130:lcddrive.c **** * 名称:LcdSendCommand()
131:lcddrive.c **** * 功能:数据自动写状态是否允许。
132:lcddrive.c **** * 入口参数:无
133:lcddrive.c **** * 出口参数:返回0表示禁止,否则表示允许
134:lcddrive.c **** ***********************************************************************/
135:lcddrive.c **** void LcdSendCommand(uint8 cmd)
136:lcddrive.c **** {
333 .LM26:
334 /* prologue: frame size=0 */
335 /* prologue end (size=0) */
336 007c 982F mov r25,r24
137:lcddrive.c **** uint8 i;
138:lcddrive.c **** SetSdataOut();
139:lcddrive.c **** ClrLcdCs();
338 .LM27:
339 /* #APP */
340 007e 9298 CBI 0x12,2
341
140:lcddrive.c **** ClrLcdSclk();
343 .LM28:
344 0080 DF98 CBI 0x1b,7
345
141:lcddrive.c **** ClrLcdSdata();
347 .LM29:
348 0082 C798 CBI 0x18,7
349
142:lcddrive.c **** SetLcdSclk();
351 .LM30:
352 0084 DF9A SBI 0x1b,7
353
354 /* #NOAPP */
355 0086 30E8 ldi r19,lo8(-128)
356 0088 27E0 ldi r18,lo8(7)
357 .L28:
143:lcddrive.c ****
144:lcddrive.c **** for(i=0;i<8;i++)
145:lcddrive.c **** {
146:lcddrive.c **** PORTA=0x00;
359 .LM31:
360 008a 1BBA out 59-0x20,__zero_reg__
147:lcddrive.c **** PORTB=cmd&0x80;
362 .LM32:
363 008c 892F mov r24,r25
364 008e 8078 andi r24,lo8(-128)
365 0090 88BB out 56-0x20,r24
148:lcddrive.c **** PORTA=0x80;
367 .LM33:
368 0092 3BBB out 59-0x20,r19
149:lcddrive.c **** cmd<<=1;
370 .LM34:
371 0094 990F lsl r25
373 .LM35:
374 0096 2150 subi r18,lo8(-(-1))
375 0098 27FF sbrs r18,7
376 009a F7CF rjmp .L28
377 /* epilogue: frame size=0 */
378 009c 0895 ret
379 /* epilogue end (size=1) */
380 /* function LcdSendCommand size 29 (28) */
385 .Lscope4:
387 .global LcdInit
389 LcdInit:
150:lcddrive.c **** /*
151:lcddrive.c **** ClrLcdSclk();
152:lcddrive.c **** if(cmd &DCB2HEX_TAB[i] )
153:lcddrive.c **** {
154:lcddrive.c **** SetLcdSdata();
155:lcddrive.c **** }
156:lcddrive.c **** else
157:lcddrive.c **** {
158:lcddrive.c **** ClrLcdSdata();
159:lcddrive.c **** }
160:lcddrive.c **** SetLcdSclk();
161:lcddrive.c **** */
162:lcddrive.c **** }
163:lcddrive.c **** }
164:lcddrive.c ****
165:lcddrive.c **** /***********************************************************************
166:lcddrive.c **** * 名称:LcdInit()
167:lcddrive.c **** * 功能:初始化LCD
168:lcddrive.c **** * 入口参数:
169:lcddrive.c **** * 出口参数:
170:lcddrive.c **** ***********************************************************************/
171:lcddrive.c **** void LcdInit(void)
172:lcddrive.c **** {
391 .LM36:
392 /* prologue: frame size=0 */
393 009e CF93 push r28
394 /* prologue end (size=1) */
173:lcddrive.c **** uint8 i;
174:lcddrive.c **** LcdPortInit();
396 .LM37:
397 00a0 0E94 0000 call LcdPortInit
175:lcddrive.c ****
176:lcddrive.c **** LcdReset();
399 .LM38:
400 00a4 0E94 0000 call LcdReset
177:lcddrive.c **** LcdSendCommand(0x01); //soft reset
402 .LM39:
403 00a8 81E0 ldi r24,lo8(1)
404 00aa 0E94 0000 call LcdSendCommand
178:lcddrive.c **** SetLcdCs();
406 .LM40:
407 /* #APP */
408 00ae 929A SBI 0x12,2
409
179:lcddrive.c ****
180:lcddrive.c **** DelayXms(5);
411 .LM41:
412 /* #NOAPP */
413 00b0 85E0 ldi r24,lo8(5)
414 00b2 90E0 ldi r25,hi8(5)
415 00b4 0E94 0000 call DelayXms
181:lcddrive.c **** LcdSendCommand(0xc6); //initial escape
417 .LM42:
418 00b8 86EC ldi r24,lo8(-58)
419 00ba 0E94 0000 call LcdSendCommand
182:lcddrive.c **** SetLcdCs();
421 .LM43:
422 /* #APP */
423 00be 929A SBI 0x12,2
424
183:lcddrive.c ****
184:lcddrive.c **** LcdSendCommand(0xb9); //refresh set
426 .LM44:
427 /* #NOAPP */
428 00c0 89EB ldi r24,lo8(-71)
429 00c2 0E94 0000 call LcdSendCommand
185:lcddrive.c **** LcdSendData(0x00);
431 .LM45:
432 00c6 80E0 ldi r24,lo8(0)
433 00c8 0E94 0000 call LcdSendData
186:lcddrive.c **** SetLcdCs();
435 .LM46:
436 /* #APP */
437 00cc 929A SBI 0x12,2
438
187:lcddrive.c ****
188:lcddrive.c **** LcdSendCommand(0xb6); //display control
440 .LM47:
441 /* #NOAPP */
442 00ce 86EB ldi r24,lo8(-74)
443 00d0 0E94 0000 call LcdSendCommand
189:lcddrive.c **** LcdSendData(0x80);
445 .LM48:
446 00d4 80E8 ldi r24,lo8(-128)
447 00d6 0E94 0000 call LcdSendData
190:lcddrive.c **** LcdSendData(0x80);
449 .LM49:
450 00da 80E8 ldi r24,lo8(-128)
451 00dc 0E94 0000 call LcdSendData
191:lcddrive.c **** LcdSendData(0x81);
453 .LM50:
454 00e0 81E8 ldi r24,lo8(-127)
455 00e2 0E94 0000 call LcdSendData
192:lcddrive.c **** LcdSendData(84);
457 .LM51:
458 00e6 84E5 ldi r24,lo8(84)
459 00e8 0E94 0000 call LcdSendData
193:lcddrive.c **** LcdSendData(69);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -