📄 main.lst
字号:
1 .file "main.c"
2 .arch atmega16
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:
62 .global Y
63 .global Y
64 .section .bss
67 Y:
68 0000 00 .skip 1,0
69 .global X
70 .global X
73 X:
74 0001 00 .skip 1,0
75 .text
77 .global LCD_en_write
79 LCD_en_write:
81 .Ltext1:
1:./LCD1602.h **** //1602B驱动库函数
2:./LCD1602.h **** //在主程序中加入: #include<stdio.h>
3:./LCD1602.h **** //语句:fdevopen(LCD_putc,0,0);
4:./LCD1602.h **** //即可使用printf()实现标准格式输出
5:./LCD1602.h **** //Redstone编写-2005.11.8
6:./LCD1602.h **** #define LCD_EN_PORT PORTC
7:./LCD1602.h **** #define LCD_RW_PORT PORTC
8:./LCD1602.h **** #define LCD_RS_PORT PORTC
9:./LCD1602.h **** #define LCD_CROL_DDR DDRC
10:./LCD1602.h ****
11:./LCD1602.h **** #define LCD_DATA_PORT PORTD
12:./LCD1602.h **** #define LCD_DATA_DDR DDRD
13:./LCD1602.h **** #define LCD_DATA_PIN PIND
14:./LCD1602.h ****
15:./LCD1602.h **** #define LCD_POWER_PORT PORTC
16:./LCD1602.h **** #define LCD_POWER_DDR DDRC
17:./LCD1602.h ****
18:./LCD1602.h **** #define LCD_EN 0B00001000 //portd3 out
19:./LCD1602.h **** #define LCD_RW 0B00000100 //portd2 out
20:./LCD1602.h **** #define LCD_RS 0B00000010 //portc1 out
21:./LCD1602.h **** #define LCD_DATA 0x0f //porta4/5/6/7 out
22:./LCD1602.h **** #define LCD_VCC 0B00000001 //portd0 out
23:./LCD1602.h **** #define LCD_GND 0B00000100 //portd2 out
24:./LCD1602.h ****
25:./LCD1602.h **** unsigned char X=0,Y=0;
26:./LCD1602.h ****
27:./LCD1602.h **** void LCD_init (void);
28:./LCD1602.h **** void LCD_en_write (void);
29:./LCD1602.h **** void LCD_write_char (unsigned command,unsigned data);
30:./LCD1602.h **** void LCD_wait_busy (void);
31:./LCD1602.h **** void LCD_set_xy (unsigned char x, unsigned char y);
32:./LCD1602.h **** void LCD_init(void)
33:./LCD1602.h **** {
34:./LCD1602.h **** unsigned int i=0;
35:./LCD1602.h **** for (i=0;i<10;i++)
36:./LCD1602.h **** _delay_ms(100);
37:./LCD1602.h **** for (i=0;i<20;i++)
38:./LCD1602.h **** {
39:./LCD1602.h **** LCD_write_char(0x28,0); //4位显示
40:./LCD1602.h **** _delay_ms(15);
41:./LCD1602.h **** }
42:./LCD1602.h **** LCD_write_char(0x0c,0); //显示开
43:./LCD1602.h **** _delay_ms(5);
44:./LCD1602.h **** LCD_write_char(0x01,0);
45:./LCD1602.h **** }
46:./LCD1602.h ****
47:./LCD1602.h **** void LCD_set_xy( unsigned char x, unsigned char y )
48:./LCD1602.h **** {
49:./LCD1602.h **** unsigned char address;
50:./LCD1602.h **** if (y == 0) address = 0x80 + x;
51:./LCD1602.h **** else
52:./LCD1602.h **** address = 0xc0 + x;
53:./LCD1602.h **** LCD_write_char( address, 0 );
54:./LCD1602.h **** }
55:./LCD1602.h **** void LCD_en_write(void)
56:./LCD1602.h **** {
83 .LM1:
84 /* prologue: frame size=0 */
85 /* prologue end (size=0) */
57:./LCD1602.h **** //LCD_wait_busy();
58:./LCD1602.h **** LCD_EN_PORT|=LCD_EN;
87 .LM2:
88 0000 AB9A sbi 53-0x20,3
89 .LBB2:
90 .LBB3:
92 .Ltext2:
1:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
2:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Copyright (c) 2004, Joerg Wunsch
3:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** All rights reserved.
4:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
5:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Redistribution and use in source and binary forms, with or without
6:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** modification, are permitted provided that the following conditions are met:
7:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
8:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** * Redistributions of source code must retain the above copyright
9:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** notice, this list of conditions and the following disclaimer.
10:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
11:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** * Redistributions in binary form must reproduce the above copyright
12:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** notice, this list of conditions and the following disclaimer in
13:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** the documentation and/or other materials provided with the
14:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** distribution.
15:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
16:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** * Neither the name of the copyright holders nor the names of
17:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** contributors may be used to endorse or promote products derived
18:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** from this software without specific prior written permission.
19:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
20:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** POSSIBILITY OF SUCH DAMAGE. */
31:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
32:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /* $Id: delay.h,v 1.9 2004/12/22 10:16:54 joerg_wunsch Exp $ */
33:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
34:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /*
35:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** avr/delay.h - loops for small accurate delays
36:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** */
37:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
38:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #ifndef _AVR_DELAY_H_
39:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #define _AVR_DELAY_H_ 1
40:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
41:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #include <inttypes.h>
42:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
43:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /** \defgroup avr_delay Busy-wait delay loops
44:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** \code
45:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #define F_CPU 1000000UL // 1 MHz
46:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** //#define F_CPU 14.7456E6
47:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #include <avr/delay.h>
48:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** \endcode
49:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
50:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** The functions in this header file implement simple delay loops
51:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** that perform a busy-waiting. They are typically used to
52:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** facilitate short delays in the program execution. They are
53:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** implemented as count-down loops with a well-known CPU cycle
54:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** count per loop iteration. As such, no other processing can
55:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** occur simultaneously. It should be kept in mind that the
56:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** functions described here do not disable interrupts.
57:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
58:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** In general, for long delays, the use of hardware timers is
59:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** much preferrable, as they free the CPU, and allow for
60:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** concurrent processing of other events while the timer is
61:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** running. However, in particular for very short delays, the
62:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** overhead of setting up a hardware timer is too much compared
63:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** to the overall delay time.
64:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
65:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Two inline functions are provided for the actual delay algorithms.
66:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
67:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Two wrapper functions allow the specification of microsecond, and
68:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** millisecond delays directly, using the application-supplied macro
69:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** F_CPU as the CPU clock frequency (in Hertz). These functions
70:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** operate on double typed arguments, however when optimization is
71:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** turned on, the entire floating-point calculation will be done at
72:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** compile-time.
73:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** */
74:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
75:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /** \ingroup avr_delay
76:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
77:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Delay loop using an 8-bit counter \c __count, so up to 256
78:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** iterations are possible. (The value 256 would have to be passed
79:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** as 0.) The loop executes three CPU cycles per iteration, not
80:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** including the overhead the compiler needs to setup the counter
81:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** register.
82:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
83:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
84:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** can be achieved.
85:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** */
86:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** static __inline__ void
87:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** _delay_loop_1(uint8_t __count)
88:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** {
89:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** __asm__ volatile (
90:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** "1: dec %0" "\n\t"
91:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** "brne 1b"
92:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** : "=r" (__count)
93:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** : "0" (__count)
94:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** );
95:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** }
96:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
97:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /** \ingroup avr_delay
98:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
99:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Delay loop using a 16-bit counter \c __count, so up to 65536
100:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** iterations are possible. (The value 65536 would have to be
101:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** passed as 0.) The loop executes four CPU cycles per iteration,
102:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** not including the overhead the compiler requires to setup the
103:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** counter register pair.
104:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
105:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Thus, at a CPU speed of 1 MHz, delays of up to about 262.1
106:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** milliseconds can be achieved.
107:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** */
108:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** static __inline__ void
109:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** _delay_loop_2(uint16_t __count)
110:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** {
111:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** __asm__ volatile (
112:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** "1: sbiw %0,1" "\n\t"
113:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** "brne 1b"
114:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** : "=w" (__count)
115:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** : "0" (__count)
116:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** );
117:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** }
118:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
119:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #ifndef F_CPU
120:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /* prevent compiler error by supplying a default */
121:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** # warning "F_CPU not defined for <avr/delay.h>"
122:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** # define F_CPU 1000000UL
123:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #endif
124:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
125:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /**
126:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** \ingroup avr_delay
127:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
128:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Perform a delay of \c __us microseconds, using _delay_loop_1().
129:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
130:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** The macro F_CPU is supposed to be defined to a
131:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** constant defining the CPU clock frequency (in Hertz).
132:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
133:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** The maximal possible delay is 768 us / F_CPU in MHz.
134:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** */
135:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** static __inline__ void
136:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** _delay_us(double __us)
137:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** {
138:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** uint8_t __ticks;
139:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** double __tmp = ((F_CPU) / 3e6) * __us;
140:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** if (__tmp < 1.0)
141:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** __ticks = 1;
142:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** else if (__tmp > 255)
143:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** __ticks = 0; /* i.e. 256 */
144:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** else
145:C:/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** __ticks = (uint8_t)__tmp;
94 .LM3:
95 0002 85E3 ldi r24,lo8(53)
96 .LBB4:
97 .LBB5:
99 .LM4:
100 /* #APP */
101 0004 8A95 1: dec r24
102 0006 F1F7 brne 1b
103 /* #NOAPP */
104 .LBE5:
105 .LBE4:
106 .LBE3:
107 .LBE2:
109 .Ltext3:
59:./LCD1602.h **** _delay_us(20);
60:./LCD1602.h **** LCD_EN_PORT&=~LCD_EN;
111 .LM5:
112 0008 AB98 cbi 53-0x20,3
113 /* epilogue: frame size=0 */
114 000a 0895 ret
115 /* epilogue end (size=1) */
116 /* function LCD_en_write size 8 (7) */
121 .Lscope0:
125 .global LCD_write_char
127 LCD_write_char:
61:./LCD1602.h **** }
62:./LCD1602.h **** void LCD_write_char(unsigned command,unsigned data)
63:./LCD1602.h **** {
129 .LM6:
130 /* prologue: frame size=0 */
131 000c 0F93 push r16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -