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

📄 ad7714.lst

📁 包含了AD7714的中文使用资料和源码资料
💻 LST
📖 第 1 页 / 共 3 页
字号:
   1               		.file	"ad7714.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:
  74               	.global	init
  76               	init:
   1:ad7714.c      **** /*
   2:ad7714.c      **** 	AD7714(24Bit ADC) ATmega8L 1MHz
   3:ad7714.c      **** 	zhb2000
   4:ad7714.c      **** 	20060611
   5:ad7714.c      **** 	USART 串口输出显示
   6:ad7714.c      **** */
   7:ad7714.c      **** #include <avr/io.h>
   8:ad7714.c      **** #include <avr/delay.h>
   9:ad7714.c      **** #include "ad7714.h"
  10:ad7714.c      **** 
  11:ad7714.c      **** volatile char buff[4];							//接收数据缓冲
  12:ad7714.c      **** 
  13:ad7714.c      **** void init(void);
  14:ad7714.c      **** void spiSend(uchar data);
  15:ad7714.c      **** void spiRead(void);
  16:ad7714.c      **** void waitReady(void);
  17:ad7714.c      **** void usartInit(void);								//USART串口初使化
  18:ad7714.c      **** void usartPutchar(uchar data);			//发送8位数据
  19:ad7714.c      **** uchar usartGetchar(void);						//接收8位数据
  20:ad7714.c      **** void usartReceive(void);						//接收字符串
  21:ad7714.c      **** void usartSend(char *str);					//发送字符串
  22:ad7714.c      **** int main(void)
  23:ad7714.c      **** {
  24:ad7714.c      **** 	init();
  25:ad7714.c      **** 	_delay_ms(200);
  26:ad7714.c      **** 	setb(PORTB,CS);	//CS 为高
  27:ad7714.c      **** 	_delay_ms(200);
  28:ad7714.c      **** 	spiSend(0x20);	//下一次操作滤波high regist,设置通道AIN1-AIN6
  29:ad7714.c      **** 	spiSend(0x47);	//set 24bit FS11~FS9=(0111)2 (双极性方式 单极性方式)
  30:ad7714.c      **** 	spiSend(0x30);	//下一次操作滤波low regist,设置通道AIN1-AIN6
  31:ad7714.c      **** 	spiSend(0xa0);	//set F8~F1=(10100000)2  code=2000
  32:ad7714.c      **** 	spiSend(0x10);	//下一次操作模式寄存器,设置通道AIN1-AIN6
  33:ad7714.c      **** 	spiSend(0x20);	//增益为1,自校准
  34:ad7714.c      **** 	while(PINB&(1<<DRDY));	//等待转换好
  35:ad7714.c      **** 	while(1)
  36:ad7714.c      **** 	{
  37:ad7714.c      **** 		//读命令寄存器,判断DRAD位是否为0
  38:ad7714.c      **** 		waitReady();
  39:ad7714.c      **** 		spiSend(0x58);					//注 0101 1 100 (0101 选数据寄存器,1 R/W=1读 , 100 AIN1-AIN2)
  40:ad7714.c      **** 		//取数 连读3字节
  41:ad7714.c      **** 		spiRead();
  42:ad7714.c      **** 		usartPutchar(buff[0]);
  43:ad7714.c      **** 		usartPutchar(buff[1]);
  44:ad7714.c      **** 		usartPutchar(buff[2]);
  45:ad7714.c      **** 		usartPutchar(0x00);
  46:ad7714.c      **** 	}
  47:ad7714.c      **** 	return 0;
  48:ad7714.c      **** }
  49:ad7714.c      **** 
  50:ad7714.c      **** void init()
  51:ad7714.c      **** {
  78               	.LM1:
  79               	/* prologue: frame size=0 */
  80               	/* prologue end (size=0) */
  52:ad7714.c      **** 	uint baud=25;					//baud 2400
  53:ad7714.c      **** 	PORTB=0x85;	//(PORTB 10000101)
  82               	.LM2:
  83 0000 85E8      		ldi r24,lo8(-123)
  84 0002 88BB      		out 56-0x20,r24
  54:ad7714.c      **** 	DDRB=0x2d;	//(DDRB  00101101)
  86               	.LM3:
  87 0004 8DE2      		ldi r24,lo8(45)
  88 0006 87BB      		out 55-0x20,r24
  55:ad7714.c      **** 	PORTC=0xff;
  90               	.LM4:
  91 0008 8FEF      		ldi r24,lo8(-1)
  92 000a 85BB      		out 53-0x20,r24
  56:ad7714.c      **** 	DDRC=0xff;
  94               	.LM5:
  95 000c 84BB      		out 52-0x20,r24
  57:ad7714.c      **** 	PORTD=0xff;
  97               	.LM6:
  98 000e 82BB      		out 50-0x20,r24
  58:ad7714.c      **** 	DDRD=0xff;
 100               	.LM7:
 101 0010 81BB      		out 49-0x20,r24
  59:ad7714.c      **** 	
  60:ad7714.c      **** 	//SPI 初使化为主机 fosc/128
  61:ad7714.c      **** 	SPCR=(1<<MSTR)|(1<<SPR1)|(1<<SPR0);	//(1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0);
 103               	.LM8:
 104 0012 83E1      		ldi r24,lo8(19)
 105 0014 8DB9      		out 45-0x20,r24
  62:ad7714.c      **** 	
  63:ad7714.c      **** 	UBRRH=(baud>>8);
 107               	.LM9:
 108 0016 10BC      		out 64-0x20,__zero_reg__
  64:ad7714.c      **** 	UBRRL=baud;
 110               	.LM10:
 111 0018 89E1      		ldi r24,lo8(25)
 112 001a 90E0      		ldi r25,hi8(25)
 113 001c 89B9      		out 41-0x20,r24
  65:ad7714.c      **** 	UCSRA=0x0;
 115               	.LM11:
 116 001e 1BB8      		out 43-0x20,__zero_reg__
  66:ad7714.c      **** 	UCSRB=(1<<RXEN)|(1<<TXEN);								//允许接收和发送
 118               	.LM12:
 119 0020 88E1      		ldi r24,lo8(24)
 120 0022 8AB9      		out 42-0x20,r24
  67:ad7714.c      **** 	UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);		//8位数据,1位停止位
 122               	.LM13:
 123 0024 86E8      		ldi r24,lo8(-122)
 124 0026 80BD      		out 64-0x20,r24
 125               	/* epilogue: frame size=0 */
 126 0028 0895      		ret
 127               	/* epilogue end (size=1) */
 128               	/* function init size 21 (20) */
 133               	.Lscope0:
 136               	.global	spiSend
 138               	spiSend:
  68:ad7714.c      **** }
  69:ad7714.c      **** 
  70:ad7714.c      **** void spiSend(uchar data)
  71:ad7714.c      **** {
 140               	.LM14:
 141               	/* prologue: frame size=0 */
 142               	/* prologue end (size=0) */
  72:ad7714.c      **** 	spiStart();
 144               	.LM15:
 145 002a 6E9A      		sbi 45-0x20,6
  73:ad7714.c      **** 	clrb(PORTB,CS);
 147               	.LM16:
 148 002c C098      		cbi 56-0x20,0
  74:ad7714.c      **** 	SPDR=data;
 150               	.LM17:
 151 002e 8FB9      		out 47-0x20,r24
 152               	.L3:
  75:ad7714.c      **** 	while(!(SPSR&(1<<SPIF)));
 154               	.LM18:
 155 0030 779B      		sbis 46-0x20,7
 156 0032 FECF      		rjmp .L3
  76:ad7714.c      **** 	setb(PORTB,CS);
 158               	.LM19:
 159 0034 C09A      		sbi 56-0x20,0
  77:ad7714.c      **** 	spiStop();
 161               	.LM20:
 162 0036 6E98      		cbi 45-0x20,6
  78:ad7714.c      **** 	wink();
 164               	.LM21:
 165 0038 85B3      		in r24,53-0x20
 166 003a 90E2      		ldi r25,lo8(32)
 167 003c 8927      		eor r24,r25
 168 003e 85BB      		out 53-0x20,r24
 169               	.LBB2:
 170               	.LBB3:
 172               	.Ltext1:
   1:d:/WinAVR/avr/include/util/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz
   2:d:/WinAVR/avr/include/util/delay.h ****    Copyright (c) 2004,2005 Joerg Wunsch
   3:d:/WinAVR/avr/include/util/delay.h ****    All rights reserved.
   4:d:/WinAVR/avr/include/util/delay.h **** 
   5:d:/WinAVR/avr/include/util/delay.h ****    Redistribution and use in source and binary forms, with or without
   6:d:/WinAVR/avr/include/util/delay.h ****    modification, are permitted provided that the following conditions are met:
   7:d:/WinAVR/avr/include/util/delay.h **** 
   8:d:/WinAVR/avr/include/util/delay.h ****    * Redistributions of source code must retain the above copyright
   9:d:/WinAVR/avr/include/util/delay.h ****      notice, this list of conditions and the following disclaimer.
  10:d:/WinAVR/avr/include/util/delay.h **** 
  11:d:/WinAVR/avr/include/util/delay.h ****    * Redistributions in binary form must reproduce the above copyright
  12:d:/WinAVR/avr/include/util/delay.h ****      notice, this list of conditions and the following disclaimer in
  13:d:/WinAVR/avr/include/util/delay.h ****      the documentation and/or other materials provided with the
  14:d:/WinAVR/avr/include/util/delay.h ****      distribution.
  15:d:/WinAVR/avr/include/util/delay.h **** 
  16:d:/WinAVR/avr/include/util/delay.h ****    * Neither the name of the copyright holders nor the names of
  17:d:/WinAVR/avr/include/util/delay.h ****      contributors may be used to endorse or promote products derived
  18:d:/WinAVR/avr/include/util/delay.h ****      from this software without specific prior written permission.
  19:d:/WinAVR/avr/include/util/delay.h **** 
  20:d:/WinAVR/avr/include/util/delay.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  21:d:/WinAVR/avr/include/util/delay.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22:d:/WinAVR/avr/include/util/delay.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23:d:/WinAVR/avr/include/util/delay.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  24:d:/WinAVR/avr/include/util/delay.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  25:d:/WinAVR/avr/include/util/delay.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  26:d:/WinAVR/avr/include/util/delay.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  27:d:/WinAVR/avr/include/util/delay.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  28:d:/WinAVR/avr/include/util/delay.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  29:d:/WinAVR/avr/include/util/delay.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  30:d:/WinAVR/avr/include/util/delay.h ****   POSSIBILITY OF SUCH DAMAGE. */
  31:d:/WinAVR/avr/include/util/delay.h **** 
  32:d:/WinAVR/avr/include/util/delay.h **** /* $Id: delay.h,v 1.1.2.1 2005/12/12 23:19:49 joerg_wunsch Exp $ */
  33:d:/WinAVR/avr/include/util/delay.h **** 
  34:d:/WinAVR/avr/include/util/delay.h **** #ifndef _UTIL_DELAY_H_
  35:d:/WinAVR/avr/include/util/delay.h **** #define _UTIL_DELAY_H_ 1
  36:d:/WinAVR/avr/include/util/delay.h **** 
  37:d:/WinAVR/avr/include/util/delay.h **** #include <inttypes.h>
  38:d:/WinAVR/avr/include/util/delay.h **** 
  39:d:/WinAVR/avr/include/util/delay.h **** /** \defgroup util_delay <util/delay.h>: Busy-wait delay loops
  40:d:/WinAVR/avr/include/util/delay.h ****     \code
  41:d:/WinAVR/avr/include/util/delay.h ****     #define F_CPU 1000000UL  // 1 MHz
  42:d:/WinAVR/avr/include/util/delay.h ****     //#define F_CPU 14.7456E6
  43:d:/WinAVR/avr/include/util/delay.h ****     #include <util/delay.h>
  44:d:/WinAVR/avr/include/util/delay.h ****     \endcode
  45:d:/WinAVR/avr/include/util/delay.h **** 
  46:d:/WinAVR/avr/include/util/delay.h ****     \note As an alternative method, it is possible to pass the
  47:d:/WinAVR/avr/include/util/delay.h ****     F_CPU macro down to the compiler from the Makefile.
  48:d:/WinAVR/avr/include/util/delay.h ****     Obviously, in that case, no \c \#define statement should be
  49:d:/WinAVR/avr/include/util/delay.h ****     used.
  50:d:/WinAVR/avr/include/util/delay.h **** 
  51:d:/WinAVR/avr/include/util/delay.h ****     The functions in this header file implement simple delay loops
  52:d:/WinAVR/avr/include/util/delay.h ****     that perform a busy-waiting.  They are typically used to
  53:d:/WinAVR/avr/include/util/delay.h ****     facilitate short delays in the program execution.  They are
  54:d:/WinAVR/avr/include/util/delay.h ****     implemented as count-down loops with a well-known CPU cycle
  55:d:/WinAVR/avr/include/util/delay.h ****     count per loop iteration.  As such, no other processing can
  56:d:/WinAVR/avr/include/util/delay.h ****     occur simultaneously.  It should be kept in mind that the
  57:d:/WinAVR/avr/include/util/delay.h ****     functions described here do not disable interrupts.
  58:d:/WinAVR/avr/include/util/delay.h **** 
  59:d:/WinAVR/avr/include/util/delay.h ****     In general, for long delays, the use of hardware timers is
  60:d:/WinAVR/avr/include/util/delay.h ****     much preferrable, as they free the CPU, and allow for
  61:d:/WinAVR/avr/include/util/delay.h ****     concurrent processing of other events while the timer is
  62:d:/WinAVR/avr/include/util/delay.h ****     running.  However, in particular for very short delays, the
  63:d:/WinAVR/avr/include/util/delay.h ****     overhead of setting up a hardware timer is too much compared
  64:d:/WinAVR/avr/include/util/delay.h ****     to the overall delay time.
  65:d:/WinAVR/avr/include/util/delay.h **** 
  66:d:/WinAVR/avr/include/util/delay.h ****     Two inline functions are provided for the actual delay algorithms.
  67:d:/WinAVR/avr/include/util/delay.h **** 
  68:d:/WinAVR/avr/include/util/delay.h ****     Two wrapper functions allow the specification of microsecond, and
  69:d:/WinAVR/avr/include/util/delay.h ****     millisecond delays directly, using the application-supplied macro
  70:d:/WinAVR/avr/include/util/delay.h ****     F_CPU as the CPU clock frequency (in Hertz).  These functions
  71:d:/WinAVR/avr/include/util/delay.h ****     operate on double typed arguments, however when optimization is
  72:d:/WinAVR/avr/include/util/delay.h ****     turned on, the entire floating-point calculation will be done at
  73:d:/WinAVR/avr/include/util/delay.h ****     compile-time.
  74:d:/WinAVR/avr/include/util/delay.h **** 
  75:d:/WinAVR/avr/include/util/delay.h ****     \note When using _delay_us() and _delay_ms(), the expressions
  76:d:/WinAVR/avr/include/util/delay.h ****     passed as arguments to these functions shall be compile-time
  77:d:/WinAVR/avr/include/util/delay.h ****     constants, otherwise the floating-point calculations to setup the
  78:d:/WinAVR/avr/include/util/delay.h ****     loops will be done at run-time, thereby drastically increasing
  79:d:/WinAVR/avr/include/util/delay.h ****     both the resulting code size, as well as the time required to
  80:d:/WinAVR/avr/include/util/delay.h ****     setup the loops.
  81:d:/WinAVR/avr/include/util/delay.h **** */
  82:d:/WinAVR/avr/include/util/delay.h **** 
  83:d:/WinAVR/avr/include/util/delay.h **** #if !defined(__DOXYGEN__)
  84:d:/WinAVR/avr/include/util/delay.h **** static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
  85:d:/WinAVR/avr/include/util/delay.h **** static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
  86:d:/WinAVR/avr/include/util/delay.h **** static inline void _delay_us(double __us) __attribute__((always_inline));
  87:d:/WinAVR/avr/include/util/delay.h **** static inline void _delay_ms(double __ms) __attribute__((always_inline));
  88:d:/WinAVR/avr/include/util/delay.h **** #endif
  89:d:/WinAVR/avr/include/util/delay.h **** 
  90:d:/WinAVR/avr/include/util/delay.h **** /** \ingroup util_delay
  91:d:/WinAVR/avr/include/util/delay.h **** 
  92:d:/WinAVR/avr/include/util/delay.h ****     Delay loop using an 8-bit counter \c __count, so up to 256
  93:d:/WinAVR/avr/include/util/delay.h ****     iterations are possible.  (The value 256 would have to be passed

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -