📄 2543.c
字号:
#include"reg52.h"
#include"string.h"
#include"stdio.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
/*********握手信号宏定义********/
#define suc 0x2a
#define err 0xf0
#define ready 0x0a
#define over 0xaf
#define addr 0x02
#define kaishi 0x7f
#define MAX 250
sbit cs=P2^7;
sbit dataout=P2^6;
sbit datain=P2^5;
sbit ioclock=P2^4;
sbit eoc=P2^0;
sbit WDI=P1^0;
//控制信号
sbit TS= P1^1 ;
sbit SS=P1^2;
//sbit OS=P3^2 ;
sbit flag=P1^3;
uint len;
uchar t1h,t1l,t2h=0,t2l=0,t1;
uint xdata dat[MAX] _at_ 0x01ff; //测试数据
uint bdata adsample=0;//12位采样数据
sbit adsample0=adsample^0;
sbit adsample1=adsample^1;
sbit adsample2=adsample^2;
sbit adsample3=adsample^3;
sbit adsample4=adsample^4;
sbit adsample5=adsample^5;
sbit adsample6=adsample^6;
sbit adsample7=adsample^7;
sbit adsample8=adsample^8;
sbit adsample9=adsample^9;
sbit adsample10=adsample^10;
sbit adsample11=adsample^11;
uchar com=0x40;
/*******************************/
void delayms(uchar t)
{
uchar i;
while(t--)
{
for(i=0;i<30;i++) ;
}
}
void delayus(uchar t)
{
while(t--);
}
void init_serial(void)
{
TMOD=0x20;
TH1=0xea;
TL1=0xea;
TR1=1;
SCON=0xd0; //1001 0000工作方式3, 波特率为固定
PCON=0X80; //SMOD=1;
SM2=1;//多机通信
EA=0;//关闭所有中断
}
/***********发送数据通信及校验信息*******************/
void senddata(uchar xdata *buf) //
{
uint i;
uchar lenh,lenl,ecc,temp;
// len=2*MAX;
t1=0;t1h=0;t1l=0;t2h=0;t2l=0;
//len=strlen(buf);
/*****发送字节数*******/
lenh=(uchar)(len/256);
lenl=(uchar)(len&0xff);
ecc=lenl;
//发送高位
TI=0;
TB8=0;
SBUF=lenh;
while(!TI);
TI=0;
//发送低位
TI=0;
TB8=0;
SBUF=lenl;
while(!TI);
TI=0;
//发送t1
TI=0;
TB8=0;
SBUF=t1;
while(!TI);
TI=0;
//发送t1h
TI=0;
TB8=0;
SBUF=t1h;
while(!TI);
TI=0;
//发送t1l
TI=0;
TB8=0;
SBUF=t1l;
while(!TI);
TI=0;
//发送t2h
TI=0;
TB8=0;
SBUF=t2h;
while(!TI);
TI=0;
//发送t2l
TI=0;
TB8=0;
SBUF=t2l;
while(!TI);
TI=0;
/*发送数据*/
// delayms(1000);
for(i=0;i<MAX;i++)
{
temp=(*buf)/256;
ecc=ecc^temp;
TB8=0;
SBUF=temp;
while(!TI);
TI=0;
temp=(uchar)(*buf);
ecc=ecc^temp;
TB8=0;
SBUF=temp;
while(!TI);
TI=0;
buf++;
}
/*发送校验字节*/
TB8=0;
SBUF=ecc;
while(!TI);
TI=0;
}
/******************数据采集与处理***********************/
uint read2543(void)
{
uchar i;
uint adsample=0;//12位采样数据
// com<<=4;
//delayms(1);
//eoc=1;
while(!eoc);
ioclock=1;
cs=0;
for(i=1;i<=12;i++)
{
ioclock=0;
adsample=adsample<<1;
if(dataout)
adsample|=0x01;
datain=(bit)(com);
//delayus(5);
ioclock=1;
_nop_();
//delayus(5);
com<<=1;
// adsample=adsample<<1;
}
ioclock=0;
cs=1;
return(adsample);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -