📄 master.lst
字号:
1 .file "master.c"
2 .arch atmega8
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:
53 .global DelayMs
55 DelayMs:
1:master.c **** /*
2:master.c **** master :
3:master.c **** main.c
4:master.c ****
5:master.c **** 芯艺 2004-09-02 ---------- 2004
6:master.c **** */
7:master.c ****
8:master.c ****
9:master.c **** #include <avr/io.h>
10:master.c **** #include <avr/delay.h>
11:master.c ****
12:master.c **** #include <avr/twi.h>
13:master.c ****
14:master.c **** #define uint unsigned int
15:master.c **** #define uchar unsigned char
16:master.c **** #define WAITPRINTDEBUG DelayMs(100)
17:master.c ****
18:master.c ****
19:master.c **** #define KEY 0X04
20:master.c ****
21:master.c **** #define FREQ 4
22:master.c **** #define TWI_ADDRESS 0X32
23:master.c ****
24:master.c **** void DelayMs(uint ms)
25:master.c **** {
57 .LM1:
58 /* prologue: frame size=0 */
59 /* prologue end (size=0) */
26:master.c **** uint i;
27:master.c **** for(i=0;i<ms;i++)
61 .LM2:
62 0000 0097 sbiw r24,0
63 0002 41F0 breq .L8
64 0004 9C01 movw r18,r24
65 .L6:
66 .LBB2:
68 .Ltext1:
1:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
2:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** All rights reserved.
3:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
4:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** Redistribution and use in source and binary forms, with or without
5:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** modification, are permitted provided that the following conditions are met:
6:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
7:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** * Redistributions of source code must retain the above copyright
8:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** notice, this list of conditions and the following disclaimer.
9:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** * Redistributions in binary form must reproduce the above copyright
10:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** notice, this list of conditions and the following disclaimer in
11:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** the documentation and/or other materials provided with the
12:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** distribution.
13:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
14:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
18:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** POSSIBILITY OF SUCH DAMAGE. */
25:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
26:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* $Id: delay.h,v 1.2.2.2 2004/02/13 21:43:37 joerg_wunsch Exp $ */
27:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
28:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /*
29:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** avr/delay.h - loops for small accurate delays
30:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** */
31:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
32:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** #ifndef _AVR_DELAY_H_
33:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** #define _AVR_DELAY_H_ 1
34:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
35:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** #include <inttypes.h>
36:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
37:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* 8-bit count, 3 cycles/loop */
38:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** static __inline__ void
39:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** _delay_loop_1(uint8_t __count)
40:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** {
41:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** asm volatile (
42:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** "1: dec %0" "\n\t"
43:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** "brne 1b"
44:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** : "=r" (__count)
45:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** : "0" (__count)
46:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** );
47:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** }
48:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h ****
49:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** /* 16-bit count, 4 cycles/loop */
50:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** static __inline__ void
51:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** _delay_loop_2(uint16_t __count)
52:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** {
70 .LM3:
71 0006 88EE ldi r24,lo8(1000)
72 0008 93E0 ldi r25,hi8(1000)
73 .LBB3:
53:J:/WinAVR/bin/../lib/gcc/avr/3.4.1/../../../../avr/include/avr/delay.h **** asm volatile (
75 .LM4:
76 /* #APP */
77 000a 0197 1: sbiw r24,1
78 000c F1F7 brne 1b
79 /* #NOAPP */
80 .LBE3:
81 .LBE2:
83 .Ltext2:
85 .LM5:
86 000e 2150 subi r18,lo8(-(-1))
87 0010 3040 sbci r19,hi8(-(-1))
88 0012 C9F7 brne .L6
89 .L8:
90 0014 0895 ret
91 /* epilogue: frame size=0 */
92 /* epilogue: noreturn */
93 /* epilogue end (size=0) */
94 /* function DelayMs size 15 (15) */
101 .global twi_stop
103 twi_stop:
28:master.c **** _delay_loop_2(FREQ *250);
29:master.c **** }
30:master.c ****
31:master.c **** /*************主模式TWI操作部分*************开始**************/
32:master.c ****
33:master.c **** //总线上起动停止条件
34:master.c **** void twi_stop(void)
35:master.c **** {
105 .LM6:
106 /* prologue: frame size=0 */
107 /* prologue end (size=0) */
36:master.c **** TWCR = _BV(TWINT) | _BV(TWSTO) | _BV(TWEN);
109 .LM7:
110 0016 84E9 ldi r24,lo8(-108)
111 0018 86BF out 86-0x20,r24
112 /* epilogue: frame size=0 */
113 001a 0895 ret
114 /* epilogue end (size=1) */
115 /* function twi_stop size 3 (2) */
118 .global twi_start
120 twi_start:
37:master.c **** }
38:master.c **** //总线上起动开始条件
39:master.c **** void twi_start(void)
40:master.c **** {
122 .LM8:
123 /* prologue: frame size=0 */
124 /* prologue end (size=0) */
41:master.c **** uchar trycount=0;
42:master.c ****
43:master.c **** TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN);
126 .LM9:
127 001c 84EA ldi r24,lo8(-92)
128 001e 86BF out 86-0x20,r24
129 .L11:
44:master.c **** while ((TWCR & _BV(TWINT)) == 0) ;
131 .LM10:
132 0020 06B6 in __tmp_reg__,86-0x20
133 0022 07FE sbrs __tmp_reg__,7
134 0024 FDCF rjmp .L11
45:master.c ****
46:master.c **** return TW_STATUS;
136 .LM11:
137 0026 81B1 in r24,33-0x20
138 /* epilogue: frame size=0 */
139 0028 0895 ret
140 /* epilogue end (size=1) */
141 /* function twi_start size 7 (6) */
145 .global twi_writebyte
147 twi_writebyte:
47:master.c **** }
48:master.c ****
49:master.c **** //写一字节
50:master.c **** void twi_writebyte(uchar c)
51:master.c **** {
149 .LM12:
150 /* prologue: frame size=0 */
151 /* prologue end (size=0) */
52:master.c **** TWDR = c;
153 .LM13:
154 002a 83B9 out 35-0x20,r24
53:master.c **** TWCR = _BV(TWINT) | _BV(TWEN);
156 .LM14:
157 002c 84E8 ldi r24,lo8(-124)
158 002e 86BF out 86-0x20,r24
159 .L15:
54:master.c **** while ((TWCR & _BV(TWINT)) == 0);
161 .LM15:
162 0030 06B6 in __tmp_reg__,86-0x20
163 0032 07FE sbrs __tmp_reg__,7
164 0034 FDCF rjmp .L15
55:master.c **** return TW_STATUS;
166 .LM16:
167 0036 81B1 in r24,33-0x20
168 /* epilogue: frame size=0 */
169 0038 0895 ret
170 /* epilogue end (size=1) */
171 /* function twi_writebyte size 8 (7) */
176 .global twi_readbyte
178 twi_readbyte:
56:master.c **** }
57:master.c ****
58:master.c **** //读一字节 ack: true时发ACK,false时发NACK
59:master.c **** uchar twi_readbyte(uchar *c ,uchar ack)
60:master.c **** {
180 .LM17:
181 /* prologue: frame size=0 */
182 /* prologue end (size=0) */
183 003a FC01 movw r30,r24
61:master.c **** uchar tmp=_BV(TWINT)|_BV(TWEN);
185 .LM18:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -