mega8ms5540驱动程序Word文件下载.docx
- 文档编号:20025022
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:8
- 大小:15.38KB
mega8ms5540驱动程序Word文件下载.docx
《mega8ms5540驱动程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《mega8ms5540驱动程序Word文件下载.docx(8页珍藏版)》请在冰豆网上搜索。
PORTC|=(N<
<
2);
};
//setSCLKtothespecifiedstate(~0/0)
#definegetSCLK()PORTC&
BIT
(2)//returnsthecurrentstateofSCLK
#definesetDIN(N){PORTC&
=~BIT(0);
0);
//setDINtothespecifiedstate(~0/0)
#definegetDIN()PORTC&
BIT(0)//returnsthecurrentstateofDIN
#definegetDOUT()(PINC&
BIT
(1))//returnsthecurrentstateofDOUT
#defineWaitOnePulse()delay
(1);
//Waitfora"
pulse"
duration#endif
#ifdef__iom16v_h
#definesensor_controlInit()DDRA&
DDRA|=3;
#definesensor_controlExit()DDRA&
#definesetSCLK(N){PORTA&
PORTA|=(N<
#definegetSCLK()PORTA&
BIT(0)//returnsthecurrentstateofSCLK
#definesetDIN(N){PORTA&
=~BIT
(1);
1);
#definegetDIN()PORTA&
BIT
(1)//returnsthecurrentstateofDIN
#definegetDOUT()(PINA&
BIT
(2))//returnsthecurrentstateofDOUT
//自己写的函数完成
voiddelay(unsignedinttt)//1ms
{
intx,y;
for(x=0;
x<
tt*100;
x++)
_NOP();
}
/*=====================================================================*/
/*waitOnDoutFall*/
longwaitOnDoutFall(void){
charworking;
longcnt;
//unsignedlongt0;
unsignedlongt1;
longerror;
working=~0;
error=0;
WaitOnePulse();
//t0=(unsignedlong)time(0);
cnt=0;
while(working)
working=getDOUT();
cnt++;
if(cnt>
=100)
/*t1=(unsignedlong)time(0);
if((t1-t0)>
1)
working=0;
error=1;
*/
working=0;
return(error);
/*SerialGet16*/
longSerialGet16(void){
chari;
longv;
v=0;
setSCLK(0);
for(i=0;
i<
16;
i++)
setSCLK
(1);
v=v<
1;
if(getDOUT())
v=v|1;
return(v);
/*SerialSendLsbFirst*//*=====================================================================*/
voidSerialSendLsbFirst(charpattern,charnbr_clock)
charc;
nbr_clock;
c=(char)(pattern&
1);
if(c==1)
setDIN
(1);
else
setDIN(0);
pattern=(char)(pattern>
>
/*=====================================================================*//*reset*/
/*=====================================================================*/voidreset(void)
SerialSendLsbFirst(0x55,8);
SerialSendLsbFirst(0x00,5);
/*=====================================================================*/voidgetD1(void)
err=0;
SerialSendLsbFirst(0x2F,8);
SerialSendLsbFirst(0x00,2);
err=0;
if(getDOUT()==0)
err=1;
//lineshouldbeat1now
if(!
err)
err=waitOnDoutFall();
D1=SerialGet16();
D1=0;
SerialSendLsbFirst(0x00,1);
//tobecompliantwiththedatasheet}
/*=====================================================================*//*getD2*/
/*=====================================================================*/voidgetD2(void)
SerialSendLsbFirst(0x4F,8);
SerialSendLsbFirst(0x00,3);
//NotethedifferencewithgetD1
D2=SerialGet16();
D2=0;
/*------------------------------------------------------------------------*/
/*---------------------------ConvertWtoC5534----------------------------*/
//从四个字中转换出C1-C6
voidConvertWtoC5534(void)
longc=0;
longx,y;
inti0;
fc[0]=(W[0]>
1)&
0x7FFF;
x=(W[2]<
6)&
0x0FC0;
y=W[3]&
0x003F;
fc[1]=x|y;
fc[2]=(W[3]>
0x03FF;
fc[3]=(W[2]>
x=(W[0]<
10)&
0x0400;
y=(W[1]>
6)&
fc[4]=x|y;
fc[5]=W[1]&
/*---------------------------calcPT5534---------------------------------*/
voidcalcPT5534(void)
doubledt,off,sens;
doublex;
dt=D2-((8.0*fc[4])+20224.0);
off=fc[1]*4.0+(((fc[3]-512.0)*dt)/4096.0);
sens=24576.0+fc[0]+((fc[2]*dt)/1024.0);
x=((sens*(D1-7168.0))/16384.0)-off;
Par=2500+x*10/32;
Wen=200+((dt*(fc[5]+50))/1024);
}
//只要使用这一个函数就可以用了
charLoad4Word(void)
charcmd[][2]={{0x57,0x01},{0xD7,0},{0X37,0X01},{0xB7,0x00}};
reset();
for(i0=0;
i0<
4;
i0++)
SerialSendLsbFirst(cmd[i0][0],8);
SerialSendLsbFirst(cmd[i0][1],5);
W[i0]=SerialGet16();
//tobecompliantwiththedatasheet
getD1();
getD2();
ConvertWtoC5534();
calcPT5534();
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- mega8ms5540 驱动程序