📄 keyscan.lst
字号:
1 .file "KeyScan.c"
2 .arch atmega64
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:
92 .global Key_DOWN
94 Key_DOWN:
1:KeyScan.c **** #include "includes.h"
2:KeyScan.c **** unsigned char Key_DOWN(void)
3:KeyScan.c **** {
95 16,16;pid:(6,6),32,16;priority:(0,11),48,8;;",128,0,0,0
4:KeyScan.c **** unsigned char i;
5:KeyScan.c **** DDRC=0x0F;
99 (6,29)=s7r_stack:(6,4),0,16;start:(6,30)=*(6,31)=f(0,15),16,16;pid:(6,6),32,16;priority:(0,11),48,8
6:KeyScan.c **** PORTC=0xFE;
103 (6,29)=s7r_stack:(6,4),0,16;start:(6,30)=*(6,31)=f(0,15),16,16;pid:(6,6),32,16;priority:(0,11),48,8
107 0008 20E0 .global Key_DOWN
109 000c 42E1 Key_DOWN:
111 .LM0:
112 /* prologue: frame size=0 */
113 000e 922F /* prologue end (size=0) */
115 .LM1:
116 ldi r24,lo8(15)
117 out 52-0x20,r24
119 .LM2:
1:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** /* Copyright (c) 2002, Marek Michalkiewicz
2:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** Copyright (c) 2007 Joerg Wunsch
3:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** All rights reserved.
4:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
5:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** Redistribution and use in source and binary forms, with or without
6:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** modification, are permitted provided that the following conditions are met:
7:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
8:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** * Redistributions of source code must retain the above copyright
9:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** notice, this list of conditions and the following disclaimer.
10:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
11:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** * Redistributions in binary form must reproduce the above copyright
12:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** notice, this list of conditions and the following disclaimer in
13:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** the documentation and/or other materials provided with the
14:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** distribution.
15:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
16:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** * Neither the name of the copyright holders nor the names of
17:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** contributors may be used to endorse or promote products derived
18:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** from this software without specific prior written permission.
19:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
20:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29:c:/winavr-20070525/bin/../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-20070525/bin/../avr/include/util/delay_basic.h **** POSSIBILITY OF SUCH DAMAGE. */
31:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
32:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** /* $Id: delay_basic.h,v 1.1.2.2 2007/05/13 21:26:06 joerg_wunsch Exp $ */
33:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
34:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** #ifndef _UTIL_DELAY_BASIC_H_
35:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** #define _UTIL_DELAY_BASIC_H_ 1
36:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
37:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** #include <inttypes.h>
38:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
39:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** /** \file */
40:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** /** \defgroup util_delay_basic <util/delay_basic.h>: Basic busy-wait delay loops
41:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** \code
42:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** #include <util/delay_basic.h>
43:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** \endcode
44:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
45:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** The functions in this header file implement simple delay loops
46:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** that perform a busy-waiting. They are typically used to
47:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** facilitate short delays in the program execution. They are
48:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** implemented as count-down loops with a well-known CPU cycle
49:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** count per loop iteration. As such, no other processing can
50:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** occur simultaneously. It should be kept in mind that the
51:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** functions described here do not disable interrupts.
52:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
53:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** In general, for long delays, the use of hardware timers is
54:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** much preferrable, as they free the CPU, and allow for
55:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** concurrent processing of other events while the timer is
56:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** running. However, in particular for very short delays, the
57:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** overhead of setting up a hardware timer is too much compared
58:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** to the overall delay time.
59:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
60:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** Two inline functions are provided for the actual delay algorithms.
61:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
62:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** */
63:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
64:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** #if !defined(__DOXYGEN__)
65:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
66:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
67:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** #endif
68:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
69:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** /** \ingroup util_delay_basic
70:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
71:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** Delay loop using an 8-bit counter \c __count, so up to 256
72:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** iterations are possible. (The value 256 would have to be passed
73:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** as 0.) The loop executes three CPU cycles per iteration, not
74:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** including the overhead the compiler needs to setup the counter
75:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** register.
76:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h ****
77:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
78:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** can be achieved.
79:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** */
80:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** void
81:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** _delay_loop_1(uint8_t __count)
82:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** {
83:c:/winavr-20070525/bin/../avr/include/util/delay_basic.h **** __asm__ volatile (
120 M0-Key_DOWN
121 .LM0:
122 0010 842F /* prologue: frame size=0 */
123 /* prologue end (size=0) */
125 0014 01F4 .LM1:
126 ldi r24,lo8(15)
127 out 52-0x20,r24
129 .LM2:
130 ldi r24,lo8(-2)
131 out 53-0x20,r24
132 ldi r18,lo8(0)
7:KeyScan.c **** for(i=0;i<=3;i++)
8:KeyScan.c **** {
9:KeyScan.c **** _delay_us(5);
10:KeyScan.c **** if(!(PINC & 0x10))
133 logue end (size=0) */
135 0016 9C99 .LM1:
136 0018 00C0 ldi r24,lo8(15)
11:KeyScan.c **** {
12:KeyScan.c **** return (i<<2)+1;
137
139 001a 990F Key_DOWN:
141 001e 9F5F .LM0:
142 0020 00C0 /* prologue: frame size=0 */
143 /* prologue end (size=0) */
13:KeyScan.c **** }
14:KeyScan.c **** else if(!(PINC & 0x20))
144 abs "Key_DOWN:F(0,11)",36,0,0,Key_DOWN
145 .global Key_DOWN
147 0024 00C0 Key_DOWN:
15:KeyScan.c **** {
16:KeyScan.c **** return (i<<2)+2;
148 16,16;pid:(6,6),32,16;priority:(0,11),48,8;;",128,0,0,0
152 002a 9E5F .global Key_DOWN
154 Key_DOWN:
17:KeyScan.c **** }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -