📄 communicate.lst
字号:
39:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #define _AVR_DELAY_H_ 1
40:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
41:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #include <inttypes.h>
42:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
43:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /** \defgroup avr_delay Busy-wait delay loops
44:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** \code
45:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #define F_CPU 1000000UL // 1 MHz
46:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** //#define F_CPU 14.7456E6
47:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** #include <avr/delay.h>
48:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** \endcode
49:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
50:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** The functions in this header file implement simple delay loops
51:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** that perform a busy-waiting. They are typically used to
52:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** facilitate short delays in the program execution. They are
53:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** implemented as count-down loops with a well-known CPU cycle
54:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** count per loop iteration. As such, no other processing can
55:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** occur simultaneously. It should be kept in mind that the
56:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** functions described here do not disable interrupts.
57:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
58:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** In general, for long delays, the use of hardware timers is
59:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** much preferrable, as they free the CPU, and allow for
60:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** concurrent processing of other events while the timer is
61:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** running. However, in particular for very short delays, the
62:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** overhead of setting up a hardware timer is too much compared
63:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** to the overall delay time.
64:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
65:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Two inline functions are provided for the actual delay algorithms.
66:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
67:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** Two wrapper functions allow the specification of microsecond, and
68:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** millisecond delays directly, using the application-supplied macro
69:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** F_CPU as the CPU clock frequency (in Hertz). These functions
70:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** operate on double typed arguments, however when optimization is
71:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** turned on, the entire floating-point calculation will be done at
72:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** compile-time.
73:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** */
74:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
75:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /** \ingroup avr_delay
76:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
77:G:/WinAVR2005/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:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** iterations are possible. (The value 256 would have to be passed
79:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** as 0.) The loop executes three CPU cycles per iteration, not
80:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** including the overhead the compiler needs to setup the counter
81:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** register.
82:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
83:G:/WinAVR2005/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:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** can be achieved.
85:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** */
86:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** static __inline__ void
87:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** _delay_loop_1(uint8_t __count)
88:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** {
89:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** __asm__ volatile (
90:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** "1: dec %0" "\n\t"
91:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** "brne 1b"
92:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** : "=r" (__count)
93:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** : "0" (__count)
94:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** );
95:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** }
96:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
97:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** /** \ingroup avr_delay
98:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
99:G:/WinAVR2005/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:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** iterations are possible. (The value 65536 would have to be
101:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** passed as 0.) The loop executes four CPU cycles per iteration,
102:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** not including the overhead the compiler requires to setup the
103:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** counter register pair.
104:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h ****
105:G:/WinAVR2005/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:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** milliseconds can be achieved.
107:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** */
108:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** static __inline__ void
109:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** _delay_loop_2(uint16_t __count)
110:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** {
111:G:/WinAVR2005/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/delay.h **** __asm__ volatile (
152 .LM18:
153 0048 CD01 movw r24,r26
154 /* #APP */
155 004a 0197 1: sbiw r24,1
156 004c F1F7 brne 1b
157 /* #NOAPP */
158 .LBE6:
159 .LBE5:
160 .LBE4:
161 .LBE3:
163 .Ltext2:
49:communicate.c ****
50:communicate.c **** for(int k=0;k<20;k++)
165 .LM19:
166 004e 2150 subi r18,lo8(-(-1))
167 0050 3040 sbci r19,hi8(-(-1))
168 0052 37FF sbrs r19,7
169 0054 F9CF rjmp .L17
170 .LBE2:
51:communicate.c **** _delay_ms(10);
52:communicate.c ****
53:communicate.c **** if(PORTA==0xFF)
172 .LM20:
173 0056 8BB3 in r24,59-0x20
174 0058 8F3F cpi r24,lo8(-1)
175 005a 11F4 brne .L18
54:communicate.c **** PORTA=0xF8;
177 .LM21:
178 005c 5BBB out 59-0x20,r21
179 005e 01C0 rjmp .L19
180 .L18:
55:communicate.c **** else
56:communicate.c **** PORTA=0xFF;
182 .LM22:
183 0060 4BBB out 59-0x20,r20
184 .L19:
185 0062 A0E0 ldi r26,lo8(18432)
186 0064 B8E4 ldi r27,hi8(18432)
187 0066 C0E0 ldi r28,hlo8(18432)
188 0068 D0E0 ldi r29,hhi8(18432)
189 006a 23E1 ldi r18,lo8(19)
190 006c 30E0 ldi r19,hi8(19)
191 .L31:
192 .LBB7:
193 .LBB8:
194 .LBB9:
195 .LBB10:
196 .LBB11:
198 .Ltext3:
200 .LM23:
201 006e CD01 movw r24,r26
202 /* #APP */
203 0070 0197 1: sbiw r24,1
204 0072 F1F7 brne 1b
205 /* #NOAPP */
206 .LBE11:
207 .LBE10:
208 .LBE9:
209 .LBE8:
211 .Ltext4:
57:communicate.c ****
58:communicate.c **** for(int k=0;k<20;k++)
213 .LM24:
214 0074 2150 subi r18,lo8(-(-1))
215 0076 3040 sbci r19,hi8(-(-1))
216 0078 37FF sbrs r19,7
217 007a F9CF rjmp .L31
218 .LBE7:
219 007c D9CF rjmp .L2
220 /* epilogue: frame size=0 */
221 /* epilogue: noreturn */
222 /* epilogue end (size=0) */
223 /* function main size 69 (65) */
237 .Lscope0:
238 .text
240 Letext:
241 /* File "communicate.c": code 69 = 0x0045 ( 65), prologues 4, epilogues 0 */
DEFINED SYMBOLS
*ABS*:00000000 communicate.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\DOCUME~1\地瓜\LOCALS~1\Temp/ccQpbaaa.s:65 .text:00000000 main
C:\DOCUME~1\地瓜\LOCALS~1\Temp/ccQpbaaa.s:240 .text:0000007e Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__stack
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -