#include "user.h"
//define pin
sbit CS = P3^4;
sbit SK = P3^6;
sbit DO = P3^7;
void CollStart(void);
void CollStop(void);
uint shout();
/********************************************************************************
* 函数功能:6675 init *
* *
*******************************************************************************/
void CollInit(void)
{
CS = 1; //初始化端口
SK = 0;
DO = 1;
_nop_();_nop_();_nop_();
}
/********************************************************************************
* 函数功能:读取温度 *
* *
*******************************************************************************/
void Coll(void)
{
uint ReDat;
CollStart();
ReDat =shout();
CurTemper =ReDat *0.25;//(1023.75 *ReDat)/4095; // (0--1023.75) //assum below 1000
CurTemperBCD[3] =(unsigned int)CurTemper /100; //取出BCD码
CurTemperBCD[2] =((unsigned int)CurTemper -CurTemperBCD[3] *100)/10;
CurTemperBCD[1] =(unsigned int)CurTemper - CurTemperBCD[3]*100 - CurTemperBCD[2]*10;
CurTemperBCD[0] =(unsigned int)(CurTemper*10) -CurTemperBCD[3]*1000 - CurTemperBCD[2]*100 -CurTemperBCD[1]*10;
CollStop();
}
void CollStart(void)
{
CS = 0; //采集开始
SK = 0;
DO = 1;
_nop_();_nop_();_nop_();
}
void CollStop(void)
{
CS = 1; //采集结束
SK = 0;
DO = 1;
_nop_();_nop_();_nop_();
}
//*********************************************************
uint shout(void)
// 移出数据
{
uchar i =0;
uint out_data =0;
SK = 1; //read D15
_nop_();_nop_();_nop_();
SK = 0;
_nop_();_nop_();_nop_();
for(i = 0; i < 12; i++) //read D14--D3
{
out_data <<=1;
SK = 1;
_nop_();_nop_();_nop_();
if(DO ==1)
{
out_data |=0x001;
}else
{
out_data &=0xffe;
}
SK = 0;
_nop_();_nop_();_nop_();
}
// for(i = 0; i < 3; i++) //read D2--D0
{
SK = 1;
_nop_();_nop_();_nop_();
if(DO ==1) //cut
{
out_data =0xfff; //此时热电偶断开,数码管显示23.7
}
SK = 0;
_nop_();_nop_();_nop_();
SK = 1;
_nop_();_nop_();_nop_();
SK = 0;
_nop_();_nop_();_nop_();
SK = 1;
_nop_();_nop_();_nop_();
SK = 0;
_nop_();_nop_();_nop_();
}
return(out_data);
}
用户956387 2010-3-19 17:25
用户511488 2009-6-13 19:08
用户1359915 2009-2-4 18:14