📄 lcdtest.lst
字号:
1 .file "lcdtest.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __CCP__ = 0x34
6 __tmp_reg__ = 0
7 __zero_reg__ = 1
8 .global __do_copy_data
9 .global __do_clear_bss
11 .text
12 .Ltext0:
72 .global DelayMs
74 DelayMs:
1:lcdtest.c **** #include <avr/io.h>
2:lcdtest.c **** #include <util/delay.h>
3:lcdtest.c **** #include <avr/signal.h>
4:lcdtest.c **** #include <avr/interrupt.h>
5:lcdtest.c **** #include "lcd.h"
6:lcdtest.c ****
7:lcdtest.c **** #define uchar unsigned char
8:lcdtest.c **** #define uint unsigned int
9:lcdtest.c ****
10:lcdtest.c **** void DelayMs(uint t);
11:lcdtest.c **** void display_number(uchar num,uchar hex);
12:lcdtest.c **** /*
13:lcdtest.c **** uchar g_aDisplayBuf[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,\
14:lcdtest.c **** 0x7c,0x39,0x5e,0x79,0x71};
15:lcdtest.c **** uchar g_bCounter=0;
16:lcdtest.c **** */
17:lcdtest.c **** //外部中断 0
18:lcdtest.c **** #ifndef CP_F
19:lcdtest.c **** #define CP_F 8
20:lcdtest.c **** #endif
21:lcdtest.c **** void DelayMs(uint t)
22:lcdtest.c **** {
75 e size = 0 */
77 .LM1:
78 ldi r18,lo8(0)
79 ldi r19,hi8(0)
80 .LBB36:
81 .LBB37:
83 0002 30E0 .Ltext1:
85 .LM2:
86 ldi r20,lo8(2000)
87 ldi r21,hi8(2000)
1:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** /* Copyright (c) 2002, Marek Michalkiewicz
2:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** Copyright (c) 2007 Joerg Wunsch
3:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** All rights reserved.
4:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
5:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** Redistribution and use in source and binary forms, with or without
6:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** modification, are permitted provided that the following conditions are met:
7:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
8:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** * Redistributions of source code must retain the above copyright
9:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** notice, this list of conditions and the following disclaimer.
10:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
11:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** * Redistributions in binary form must reproduce the above copyright
12:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** notice, this list of conditions and the following disclaimer in
13:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** the documentation and/or other materials provided with the
14:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** distribution.
15:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
16:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** * Neither the name of the copyright holders nor the names of
17:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** contributors may be used to endorse or promote products derived
18:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** from this software without specific prior written permission.
19:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
20:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** POSSIBILITY OF SUCH DAMAGE. */
31:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
32:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** /* $Id: delay_basic.h,v 1.1 2007/05/13 21:23:20 joerg_wunsch Exp $ */
33:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
34:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** #ifndef _UTIL_DELAY_BASIC_H_
35:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** #define _UTIL_DELAY_BASIC_H_ 1
36:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
37:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** #include <inttypes.h>
38:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
39:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** /** \file */
40:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** /** \defgroup util_delay_basic <util/delay_basic.h>: Basic busy-wait delay loops
41:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** \code
42:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** #include <util/delay_basic.h>
43:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** \endcode
44:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
45:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** The functions in this header file implement simple delay loops
46:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** that perform a busy-waiting. They are typically used to
47:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** facilitate short delays in the program execution. They are
48:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** implemented as count-down loops with a well-known CPU cycle
49:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** count per loop iteration. As such, no other processing can
50:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** occur simultaneously. It should be kept in mind that the
51:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** functions described here do not disable interrupts.
52:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
53:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** In general, for long delays, the use of hardware timers is
54:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** much preferrable, as they free the CPU, and allow for
55:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** concurrent processing of other events while the timer is
56:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** running. However, in particular for very short delays, the
57:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** overhead of setting up a hardware timer is too much compared
58:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** to the overall delay time.
59:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
60:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** Two inline functions are provided for the actual delay algorithms.
61:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
62:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** */
63:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
64:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** #if !defined(__DOXYGEN__)
65:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
66:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
67:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** #endif
68:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
69:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
70:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
71:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** Delay loop using an 8-bit counter \c __count, so up to 256
72:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** iterations are possible. (The value 256 would have to be passed
73:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** as 0.) The loop executes three CPU cycles per iteration, not
74:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** including the overhead the compiler needs to setup the counter
75:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** register.
76:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
77:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
78:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** can be achieved.
79:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** */
80:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** void
81:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** _delay_loop_1(uint8_t __count)
82:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** {
83:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** __asm__ volatile (
84:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** "1: dec %0" "\n\t"
85:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** "brne 1b"
86:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** : "=r" (__count)
87:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** : "0" (__count)
88:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** );
89:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** }
90:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
91:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
92:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
93:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** Delay loop using a 16-bit counter \c __count, so up to 65536
94:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** iterations are possible. (The value 65536 would have to be
95:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** passed as 0.) The loop executes four CPU cycles per iteration,
96:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** not including the overhead the compiler requires to setup the
97:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** counter register pair.
98:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h ****
99:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** Thus, at a CPU speed of 1 MHz, delays of up to about 262.1
100:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** milliseconds can be achieved.
101:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** */
102:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** void
103:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** _delay_loop_2(uint16_t __count)
104:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** {
105:c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h **** __asm__ volatile (
88 :
89 movw r30,r20
90 0004 40ED /* #APP */
91 0006 57E0 ; 105 "c:/winavr-20080610/lib/gcc/../../avr/include/util/delay_basic.h" 1
92 0008 00C0 1: sbiw r30,1
93 brne 1b
94 000a FA01 ; 0 "" 2
95 /* #NOAPP */
96 .LBE37:
97 000c 3197 .LBE36:
99 .Ltext2:
101 .LM3:
102 subi r18,lo8(-(1))
103 sbci r19,hi8(-(1))
104 .L2:
23:lcdtest.c **** uint i;
24:lcdtest.c **** for(i=0;i<t;i++)
105 r19,r25
106 brlo .L3
107 0010 2F5F /* epilogue start */
109 .LM4:
110 0014 2817 ret
25:lcdtest.c **** _delay_loop_2(CP_F * 250);
26:lcdtest.c ****
27:lcdtest.c **** }
114 __count:r(4,4)",64,0,0,30
118 .Lscope1:
119 .data
120 .LC0:
121 .string "now you input:"
122 .LC1:
123 .string "continus?"
124 .text
128 .global display_number
130 display_number:
132 .LM5:
133 .LFBB2:
134 push r16
135 push r17
136 /* prologue: function */
28:lcdtest.c **** void display_number(uchar num,uchar hex)
29:lcdtest.c **** {
137 ov r16,r24
138 mov r17,r22
140 001c 0F93 .LM6:
141 001e 1F93 ldi r22,lo8(0)
142 ldi r24,lo8(1)
143 call LCDByte
145 0022 162F .LM7:
30:lcdtest.c **** LCDClear();
146 brne .L7
148 0024 60E0 .LM8:
149 0026 81E0 ldi r24,lo8(.LC0)
150 0028 0E94 0000 ldi r25,hi8(.LC0)
31:lcdtest.c **** if(hex==0)
151 LCDWriteString
153 002c 1123 .LM9:
154 002e 01F4 ldi r22,lo8(1)
32:lcdtest.c **** {
33:lcdtest.c **** LCDWriteString("now you input:");
155 r24,lo8(2)
156 call LCDGotoXY
157 0030 80E0 ldi r22,lo8(3)
158 0032 90E0 ldi r23,hi8(3)
159 0034 0E94 0000 mov r24,r16
34:lcdtest.c **** LCDWriteIntXY(2,1,num,3);
160 r25,lo8(0)
161 call LCDWriteInt
163 003a 82E0 .LM10:
164 003c 0E94 0000 ldi r22,lo8(1)
165 0040 63E0 ldi r24,lo8(5)
166 0042 70E0 call LCDGotoXY
167 0044 802F ldi r24,lo8(.LC1)
168 0046 90E0 ldi r25,hi8(.LC1)
169 0048 0E94 0000 call LCDWriteString
35:lcdtest.c **** LCDWriteStringXY(5,1,"continus?");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -