资源简介
双通道AD7705读取桥式电路信号,通过STC单片机处理后发到MODBUS485RTU接口备读取。
但是AD7705切换速度较慢。且市场上假货太多。
代码片段和文件信息
/*------------------------------------------------------------------*/
/* --- STC MCU International Limited -------------------------------*/
/* --- STC 1T Series MCU SPI Demo(Each other as the master-slave) --*/
/* --- Mobile: (86)13922805190 -------------------------------------*/
/* --- Fax: 86-755-82944243 ----------------------------------------*/
/* --- Tel: 86-755-82948412 ----------------------------------------*/
/* --- Web: www.STCMCU.com -----------------------------------------*/
/* If you want to use the program or the program referenced in the */
/* article please specify in which data and procedures from STC */
/*------------------------------------------------------------------*/
//#include “reg51.h“
#include
#include
#include
//---------------------------------------------------
//全局变量
extern BYTE SPI_DT;//保存收到的数据
extern BYTE SPI_RD;//设置SPI端口收到数据标志
extern BYTE AD7705nRDYhgh8low8;
extern BYTE i8DTOK;
extern WORD i16S1OVERRdOverTime;
extern WORD isoidxisomax;
extern BYTE ComBusytketks;
extern union AD7705_DATA_FOR_UP_SEND_TO_OPS xdata ud;
sbit INF_LED = P1^0;//LED 闪烁
sbit ERR_LED = P1^1;//LED 闪烁
sbit ADDRDY = P2^0;//DRDY
sbit SPIDI = P1^6;//DI
sbit SPIDO = P1^5;//DO
sbit SPICLK = P1^7;//CLK
void LedFlash();
void SPI_Wd_Init();
//void SPI_Rd_Init();
//void SPI_Close();
BYTE SPI_Read();
void SPI_Write(BYTE dat);
void AD7705_Work_init();
void AD7705_SPI_Read();
//void WD_SPI_Byte(BYTE dat);
//WORD RD_SPI_Word();
//BYTE RD_SPI_Byte();
BYTE rearrange(unsigned char dat);
///////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
void SPI_Wd_Init()
{
EA = 0;
SPDAT = 0; //初始化SPI数据
SPSTAT = 0; //清除SPI状态
SPCTL = SPEN | SSIG | MSTR; //从模式 | 主模式 SSIG| SPD016
IE2 = IE2ESPI; //开中断
EA =1;
}
void SPI_Rd_Init()
{
SPDAT = 0; //初始化SPI数据
SPSTAT = 0; //清除SPI状态
// SPCTL = SPEN | SSIG; //从模式 | 主模式 SSIG
}
BYTE SPI_Read()
{
// SPDAT = 0; //初始化SPI数据
// SPSTAT = 0; //清除SPI状态
i16 = 0;
while(1){
i16 ++;
if(!SPI_RD){
if (i16 > 200){
return(0);
}
continue;
}
else if(SPI_DT & DRDY){
return(1);
}
}
}
/*
void SPI_Close()
{
SPDAT = 0; //初始化SPI数据
SPSTAT = 0; //清除SPI状态
SPCTL = 0; //从模式 | 主模式 SSIG
}
*/
void Spi_DIn() interrupt 9 using 3
{
SPSTAT = SPIF | WCOL; //清除SPI状态
SPI_DT=SPDAT; //保存收到的数据
SPI_RD=1; //设置SPI端口收到数据标志
SPDAT = 0; //初始化SPI数据
}
//------------------------------------------------------------------------------------------
//函数:write_AD7705_dword
//功能:往AD7705写24位数据因为AD7705是24位的器件
//参数:IN - int32_t data要写入AD7705的数据
//返回:无
//变量:无
//备注:无
//------------------------------------------------------------------------------------------
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 24097 2013-09-01 20:50 复件 AD7705READ-DP20130829\AD7705READ.C
文件 5773 2012-02-26 00:09 复件 AD7705READ-DP20130829\AD7705SPIIO.c
文件 4299 2013-09-01 18:26 复件 AD7705READ-DP20130829\DATA.H
文件 857 2002-10-11 14:53 复件 AD7705READ-DP20130829\INTRINS.H
文件 0 2013-08-29 11:06 复件 AD7705READ-DP20130829\KeyInputSubr.c
文件 8282 2012-04-24 22:54 复件 AD7705READ-DP20130829\Modbus485.c
文件 0 2012-04-22 16:36 复件 AD7705READ-DP20130829\SEG_C.c
文件 2 2012-04-22 18:46 复件 AD7705READ-DP20130829\SEG_C.H
文件 9987 2013-08-25 15:00 复件 AD7705READ-DP20130829\Spi2Uart.c
....... 13434 2013-09-11 07:38 复件 AD7705READ-DP20130829\SPI2UART.uvproj
文件 5057 2012-02-25 23:07 复件 AD7705READ-DP20130829\Spi2Uart2.c
文件 5105 2012-05-18 10:06 复件 AD7705READ-DP20130829\STC_EEROMRW.c
文件 17733 2013-09-01 09:30 复件 AD7705READ-DP20130829\STC_NEW_8051.H
文件 9607 2013-08-14 13:03 复件 AD7705READ-DP20130829\UartModbus.c
目录 0 2013-09-11 07:38 复件 AD7705READ-DP20130829
----------- --------- ---------- ----- ----
104233 15
评论
共有 条评论