⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 master.lst

📁 avr单片机的一些实际应用源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
   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 + -