📄 key.lst
字号:
844 0382 E6CF rjmp .L263
846 .LM142:
847 0384 8499 sbic 48-0x20,4
848 0386 60CF rjmp .L464
850 .LM143:
851 0388 00D0 rcall ds1302_write_time
852 .L169:
854 .LM144:
855 038a 8199 sbic 48-0x20,1
856 038c 36C3 rjmp .L134
857 .L271:
859 .LM145:
860 038e 80E8 ldi r24,lo8(-128)
861 0390 8093 0000 sts flash_control,r24
863 .LM146:
864 0394 4091 0000 lds r20,timer0_minute
865 0398 6091 0000 lds r22,timer0_hour
866 039c 81E0 ldi r24,lo8(1)
867 039e 00D0 rcall display_timer
869 .LM147:
870 03a0 839B sbis 48-0x20,3
871 03a2 2EDE rcall key_delay
872 .L274:
874 .LM148:
875 03a4 8399 sbic 48-0x20,3
876 03a6 0EC0 rjmp .L275
878 .LM149:
879 03a8 2091 0000 lds r18,timer0_minute
880 03ac 2F5F subi r18,lo8(-(1))
881 03ae 2093 0000 sts timer0_minute,r18
883 .LM150:
884 03b2 822F mov r24,r18
885 03b4 9927 clr r25
886 03b6 8F70 andi r24,lo8(15)
887 03b8 9070 andi r25,hi8(15)
888 03ba 0A97 sbiw r24,10
889 03bc 1CF0 brlt .L275
890 03be 207F andi r18,lo8(-16)
891 03c0 2093 0000 sts timer0_minute,r18
892 .L275:
894 .LM151:
895 03c4 829B sbis 48-0x20,2
896 03c6 1CDE rcall key_delay
897 .L273:
899 .LM152:
900 03c8 8299 sbic 48-0x20,2
901 03ca E1CF rjmp .L271
902 .L278:
904 .LM153:
905 03cc 80E4 ldi r24,lo8(64)
906 03ce 8093 0000 sts flash_control,r24
908 .LM154:
909 03d2 4091 0000 lds r20,timer0_minute
910 03d6 6091 0000 lds r22,timer0_hour
911 03da 81E0 ldi r24,lo8(1)
912 03dc 00D0 rcall display_timer
914 .LM155:
915 03de 839B sbis 48-0x20,3
916 03e0 0FDE rcall key_delay
917 .L281:
919 .LM156:
920 03e2 8399 sbic 48-0x20,3
921 03e4 0FC0 rjmp .L282
923 .LM157:
924 03e6 2091 0000 lds r18,timer0_minute
925 03ea 205F subi r18,lo8(-(16))
926 03ec 2093 0000 sts timer0_minute,r18
928 .LM158:
929 03f0 822F mov r24,r18
930 03f2 9927 clr r25
931 03f4 807F andi r24,lo8(240)
932 03f6 9070 andi r25,hi8(240)
933 03f8 8036 cpi r24,96
934 03fa 9105 cpc r25,__zero_reg__
935 03fc 1CF0 brlt .L282
936 03fe 2F70 andi r18,lo8(15)
937 0400 2093 0000 sts timer0_minute,r18
938 .L282:
940 .LM159:
941 0404 829B sbis 48-0x20,2
942 0406 FCDD rcall key_delay
943 .L280:
945 .LM160:
946 0408 8299 sbic 48-0x20,2
947 040a E0CF rjmp .L278
948 .L285:
950 .LM161:
951 040c 80E1 ldi r24,lo8(16)
952 040e 8093 0000 sts flash_control,r24
954 .LM162:
955 0412 4091 0000 lds r20,timer0_minute
956 0416 6091 0000 lds r22,timer0_hour
957 041a 81E0 ldi r24,lo8(1)
958 041c 00D0 rcall display_timer
960 .LM163:
961 041e 839B sbis 48-0x20,3
962 0420 EFDD rcall key_delay
963 .L288:
965 .LM164:
966 0422 8399 sbic 48-0x20,3
967 0424 0EC0 rjmp .L289
969 .LM165:
970 0426 2091 0000 lds r18,timer0_hour
971 042a 2F5F subi r18,lo8(-(1))
972 042c 2093 0000 sts timer0_hour,r18
974 .LM166:
975 0430 822F mov r24,r18
976 0432 9927 clr r25
977 0434 8F70 andi r24,lo8(15)
978 0436 9070 andi r25,hi8(15)
979 0438 0A97 sbiw r24,10
980 043a 1CF0 brlt .L289
981 043c 207F andi r18,lo8(-16)
982 043e 2093 0000 sts timer0_hour,r18
983 .L289:
985 .LM167:
986 0442 829B sbis 48-0x20,2
987 0444 DDDD rcall key_delay
988 .L287:
990 .LM168:
991 0446 8299 sbic 48-0x20,2
992 0448 E1CF rjmp .L285
993 .L292:
995 .LM169:
996 044a 88E0 ldi r24,lo8(8)
997 044c 8093 0000 sts flash_control,r24
999 .LM170:
1000 0450 4091 0000 lds r20,timer0_minute
1001 0454 6091 0000 lds r22,timer0_hour
1002 0458 81E0 ldi r24,lo8(1)
1003 045a 00D0 rcall display_timer
1005 .LM171:
1006 045c 839B sbis 48-0x20,3
1007 045e D0DD rcall key_delay
1008 .L295:
1010 .LM172:
1011 0460 8399 sbic 48-0x20,3
1012 0462 0EC0 rjmp .L296
1014 .LM173:
1015 0464 2091 0000 lds r18,timer0_hour
1016 0468 205F subi r18,lo8(-(16))
1017 046a 2093 0000 sts timer0_hour,r18
1019 .LM174:
1020 046e 822F mov r24,r18
1021 0470 9927 clr r25
1022 0472 807F andi r24,lo8(240)
1023 0474 9070 andi r25,hi8(240)
1024 0476 C097 sbiw r24,48
1025 0478 1CF0 brlt .L296
1026 047a 2F70 andi r18,lo8(15)
1027 047c 2093 0000 sts timer0_hour,r18
1028 .L296:
1030 .LM175:
1031 0480 829B sbis 48-0x20,2
1032 0482 BEDD rcall key_delay
1033 .L294:
1035 .LM176:
1036 0484 8299 sbic 48-0x20,2
1037 0486 E1CF rjmp .L292
1038 .LBB2:
1040 .Ltext1:
1:C:/WinAVR/avr/include/avr/eeprom.h **** /* Copyright (c) 2002, 2003, 2004 Marek Michalkiewicz
2:C:/WinAVR/avr/include/avr/eeprom.h **** Copyright (c) 2005, 2006 Bjoern Haase
3:C:/WinAVR/avr/include/avr/eeprom.h **** All rights reserved.
4:C:/WinAVR/avr/include/avr/eeprom.h ****
5:C:/WinAVR/avr/include/avr/eeprom.h **** Redistribution and use in source and binary forms, with or without
6:C:/WinAVR/avr/include/avr/eeprom.h **** modification, are permitted provided that the following conditions are met:
7:C:/WinAVR/avr/include/avr/eeprom.h ****
8:C:/WinAVR/avr/include/avr/eeprom.h **** * Redistributions of source code must retain the above copyright
9:C:/WinAVR/avr/include/avr/eeprom.h **** notice, this list of conditions and the following disclaimer.
10:C:/WinAVR/avr/include/avr/eeprom.h ****
11:C:/WinAVR/avr/include/avr/eeprom.h **** * Redistributions in binary form must reproduce the above copyright
12:C:/WinAVR/avr/include/avr/eeprom.h **** notice, this list of conditions and the following disclaimer in
13:C:/WinAVR/avr/include/avr/eeprom.h **** the documentation and/or other materials provided with the
14:C:/WinAVR/avr/include/avr/eeprom.h **** distribution.
15:C:/WinAVR/avr/include/avr/eeprom.h ****
16:C:/WinAVR/avr/include/avr/eeprom.h **** * Neither the name of the copyright holders nor the names of
17:C:/WinAVR/avr/include/avr/eeprom.h **** contributors may be used to endorse or promote products derived
18:C:/WinAVR/avr/include/avr/eeprom.h **** from this software without specific prior written permission.
19:C:/WinAVR/avr/include/avr/eeprom.h ****
20:C:/WinAVR/avr/include/avr/eeprom.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21:C:/WinAVR/avr/include/avr/eeprom.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22:C:/WinAVR/avr/include/avr/eeprom.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23:C:/WinAVR/avr/include/avr/eeprom.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24:C:/WinAVR/avr/include/avr/eeprom.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25:C:/WinAVR/avr/include/avr/eeprom.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26:C:/WinAVR/avr/include/avr/eeprom.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27:C:/WinAVR/avr/include/avr/eeprom.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28:C:/WinAVR/avr/include/avr/eeprom.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29:C:/WinAVR/avr/include/avr/eeprom.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30:C:/WinAVR/avr/include/avr/eeprom.h **** POSSIBILITY OF SUCH DAMAGE. */
31:C:/WinAVR/avr/include/avr/eeprom.h ****
32:C:/WinAVR/avr/include/avr/eeprom.h **** /* $Id: eeprom.h,v 1.17.2.1 2006/02/26 21:51:04 aesok Exp $ */
33:C:/WinAVR/avr/include/avr/eeprom.h ****
34:C:/WinAVR/avr/include/avr/eeprom.h **** /*
35:C:/WinAVR/avr/include/avr/eeprom.h **** eeprom.h
36:C:/WinAVR/avr/include/avr/eeprom.h ****
37:C:/WinAVR/avr/include/avr/eeprom.h **** Contributors:
38:C:/WinAVR/avr/include/avr/eeprom.h **** Created by Marek Michalkiewicz <marekm@linux.org.pl>
39:C:/WinAVR/avr/include/avr/eeprom.h **** eeprom_write_word and eeprom_write_block added by Artur Lipowski
40:C:/WinAVR/avr/include/avr/eeprom.h **** <LAL@pro.onet.pl>
41:C:/WinAVR/avr/include/avr/eeprom.h **** Complete rewrite using the original interface by Bjoern Haase
42:C:/WinAVR/avr/include/avr/eeprom.h **** <bjoern.haase@de.bosch.com>.
43:C:/WinAVR/avr/include/avr/eeprom.h **** */
44:C:/WinAVR/avr/include/avr/eeprom.h ****
45:C:/WinAVR/avr/include/avr/eeprom.h **** #ifndef _EEPROM_H_
46:C:/WinAVR/avr/include/avr/eeprom.h **** #define _EEPROM_H_ 1
47:C:/WinAVR/avr/include/avr/eeprom.h ****
48:C:/WinAVR/avr/include/avr/eeprom.h **** #define __need_size_t
49:C:/WinAVR/avr/include/avr/eeprom.h **** #include <stddef.h>
50:C:/WinAVR/avr/include/avr/eeprom.h **** #include <inttypes.h>
51:C:/WinAVR/avr/include/avr/eeprom.h ****
52:C:/WinAVR/avr/include/avr/eeprom.h ****
53:C:/WinAVR/avr/include/avr/eeprom.h **** #ifdef __AVR_MEGA__
54:C:/WinAVR/avr/include/avr/eeprom.h **** #define XCALL "call"
55:C:/WinAVR/avr/include/avr/eeprom.h **** #else
56:C:/WinAVR/avr/include/avr/eeprom.h **** #define XCALL "rcall"
57:C:/WinAVR/avr/include/avr/eeprom.h **** #endif
58:C:/WinAVR/avr/include/avr/eeprom.h ****
59:C:/WinAVR/avr/include/avr/eeprom.h **** #include <avr/io.h>
60:C:/WinAVR/avr/include/avr/eeprom.h **** #ifndef __EEPROM_REG_LOCATIONS__
61:C:/WinAVR/avr/include/avr/eeprom.h **** /** \def __EEPROM_REG_LOCATIONS__
62:C:/WinAVR/avr/include/avr/eeprom.h **** \ingroup avr_eeprom
63:C:/WinAVR/avr/include/avr/eeprom.h **** In order to be able to work without a requiring a multilib
64:C:/WinAVR/avr/include/avr/eeprom.h **** approach for dealing with controllers having the EEPROM registers
65:C:/WinAVR/avr/include/avr/eeprom.h **** at different positions in memory space, the eeprom functions evaluate
66:C:/WinAVR/avr/include/avr/eeprom.h **** __EEPROM_REG_LOCATIONS__: It is assumed to be defined by
67:C:/WinAVR/avr/include/avr/eeprom.h **** the device io header and contains 6 uppercase hex digits encoding the
68:C:/WinAVR/avr/include/avr/eeprom.h **** addresses of EECR,EEDR and EEAR.
69:C:/WinAVR/avr/include/avr/eeprom.h **** First two letters: EECR address.
70:C:/WinAVR/avr/include/avr/eeprom.h **** Second two letters: EEDR address.
71:C:/WinAVR/avr/include/avr/eeprom.h **** Last two letters: EEAR address.
72:C:/WinAVR/avr/include/avr/eeprom.h **** The default 1C1D1E corresponds to the
73:C:/WinAVR/avr/include/avr/eeprom.h **** register location that is valid for most controllers. The value
74:C:/WinAVR/avr/include/avr/eeprom.h **** of this define symbol is used for appending it to the base name of the
75:C:/WinAVR/avr/include/avr/eeprom.h **** assembler functions. */
76:C:/WinAVR/avr/include/avr/eeprom.h **** #define __EEPROM_REG_LOCATIONS__ 1C1D1E
77:C:/WinAVR/avr/include/avr/eeprom.h **** #endif
78:C:/WinAVR/avr/include/avr/eeprom.h **** #define _STR2(EXP) _STR1(EXP)
79:C:/WinAVR/avr/include/avr/eeprom.h **** #define _STR1(EXP) #EXP
80:C:/WinAVR/avr/include/avr/eeprom.h **** #define _REG_LOCATION_SUFFIX _STR2(__EEPROM_REG_LOCATIONS__)
81:C:/WinAVR/avr/include/avr/eeprom.h ****
82:C:/WinAVR/avr/include/avr/eeprom.h **** #ifndef CR_TAB
83:C:/WinAVR/avr/include/avr/eeprom.h **** #define CR_TAB "\n\t"
84:C:/WinAVR/avr/include/avr/eeprom.h **** #endif
85:C:/WinAVR/avr/include/avr/eeprom.h ****
86:C:/WinAVR/avr/include/avr/eeprom.h ****
87:C:/WinAVR/avr/include/avr/eeprom.h **** /** \defgroup avr_eeprom <avr/eeprom.h>: EEPROM handling
88:C:/WinAVR/avr/include/avr/eeprom.h **** \code #include <avr/eeprom.h> \endcode
89:C:/WinAVR/avr/include/avr/eeprom.h ****
90:C:/WinAVR/avr/include/avr/eeprom.h **** This header file declares the interface to some simple library
91:C:/WinAVR/avr/include/avr/eeprom.h **** routines suitable for handling the data EEPROM contained in the
92:C:/WinAVR/avr/include/avr/eeprom.h **** AVR microcontrollers. The implementation uses a simple polled
93:C:/WinAVR/avr/include/avr/eeprom.h **** mode interface. Applications that require interrupt-controlled
94:C:/WinAVR/avr/include/avr/eeprom.h **** EEPROM access to ensure that no time will be wasted in spinloops
95:C:/WinAVR/avr/include/avr/eeprom.h **** will have to deploy their own implementation.
96:C:/WinAVR/avr/include/avr/eeprom.h ****
97:C:/WinAVR/avr/include/avr/eeprom.h **** \note All of the read/write functions first make sure the EEPROM
98:C:/WinAVR/avr/include/avr/eeprom.h **** is ready to be accessed. Since this may cause long delays if a
99:C:/WinAVR/avr/include/avr/eeprom.h **** write operation is still pending, time-critical applications
100:C:/WinAVR/avr/include/avr/eeprom.h **** should first poll the EEPROM e. g. using eeprom_is_ready() before
101:C:/WinAVR/avr/include/avr/eeprom.h **** attempting any actual I/O.
102:C:/WinAVR/avr/include/avr/eeprom.h ****
103:C:/WinAVR/avr/include/avr/eeprom.h **** \note This header file declares inline functions that call the
104:C:/WinAVR/avr/include/avr/eeprom.h **** assembler subroutines directly. This prevents that the compiler
105:C:/WinAVR/avr/include/avr/eeprom.h **** generates push/pops for the call-clobbered registers. This way
106:C:/WinAVR/avr/include/avr/eeprom.h **** also a specific calling convention could be used for the eeprom
107:C:/WinAVR/avr/include/avr/eeprom.h **** routines e.g. by passing values in __tmp_reg__, eeprom addresses in
108:C:/WinAVR/avr/include/avr/eeprom.h **** X and memory addresses in Z registers. Method is optimized for code
109:C:/WinAVR/avr/include/avr/eeprom.h **** size.
110:C:/WinAVR/avr/include/avr/eeprom.h ****
111:C:/WinAVR/avr/include/avr/eeprom.h **** \note Presently supported are two locations of the EEPROM register
112:C:/WinAVR/avr/include/avr/eeprom.h **** set: 0x1F,0x20,0x21 and 0x1C,0x1D,0x1E
113:C:/WinAVR/avr/include/avr/eeprom.h **** (see ::__EEPROM_REG_LOCATIONS__).
114:C:/WinAVR/avr/include/avr/eeprom.h ****
115:C:/WinAVR/avr/include/avr/eeprom.h **** \note As these functions modify IO registers, they are known to be
116:C:/WinAVR/avr/include/avr/eeprom.h **** non-reentrant. If any of these functions are used from both,
117:C:/WinAVR/avr/include/avr/eeprom.h **** standard and interrupt context, the applications must ensure
118:C:/WinAVR/avr/include/avr/eeprom.h **** proper protection (e.g. by disabling interrupts before accessing
119:C:/WinAVR/avr/include/avr/eeprom.h **** them).
120:C:/WinAVR/avr/include/avr/eeprom.h ****
121:C:/WinAVR/avr/include/avr/eeprom.h **** */
122:C:/WinAVR/avr/include/avr/eeprom.h ****
123:C:/WinAVR/avr/include/avr/eeprom.h ****
124:C:/WinAVR/avr/include/avr/eeprom.h **** /* forward declarations of the inline functions so that doxygen does
125:C:/WinAVR/avr/include/avr/eeprom.h **** not get confused by the attribute expression. */
126:C:/WinAVR/avr/include/avr/eeprom.h ****
127:C:/WinAVR/avr/include/avr/eeprom.h **** static inline uint8_t __attribute__ ((always_inline))
128:C:/WinAVR/avr/include/avr/eeprom.h **** eeprom_read_byte (const uint8_t *addr);
129:C:/WinAVR/avr/include/avr/eeprom.h ****
130:C:/WinAVR/avr/include/avr/eeprom.h **** static inline uint16_t __attribute__ ((always_inline))
131:C:/WinAVR/avr/include/avr/eeprom.h **** eeprom_read_word (const uint16_t *addr);
132:C:/WinAVR/avr/include/avr/eeprom.h ****
133:C:/WinAVR/avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
134:C:/WinAVR/avr/include/avr/eeprom.h **** eeprom_read_block (void *pointer_ram,
135:C:/Win
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -