程序问题求助

2019-07-15 18:57发布

有没有大神告诉我(bit)(temp&0x8000)是什么意思啊?主要是里面的bit不知道什么意思,因为这是从51改成msp的程序,然后bit没有定义,我不知道怎么回事。。。还有就是
PinDIN=(bit)(temp&0x8000);这是完整的那一句程序,PinDIN也没有定义啊
这是主函数
#include<msp430g2553.h>
#include<string.h>
#include "tlv5638.h"

void InitiO( )
{        RST_PinDIN;
        RST_CS;
        RST_PinSCLK;
}

void main()
{
        float i;
        InitIO();
        while(1)
        {        //SetDAC_A(FASTSP,IN_1024,0,1.0);
                //SetDAC_B(FASTSP,IN_1024,0,1.0);
                SetDAC_AB(SLOESP,IN_2048,0,1,2);
        }
}

这是tlv5638的头文件
/*
* tlv5638.c
*
*  Created on: 2014-7-31
*      Author: Administrator
*/
#include <msp430g2553.h>
#include "tlv5638.h"

//短延时函数:nNop( )
void nNop(uchar i)
{
        for(;i>0;i--);
}
//函数功能:长延时
//长延时函数:LongDelay( )
void LongDelay(uint i)
{        uint j;
for(;i>0;i--)
{        for(j=1000;j>0;j--);
}
}
//向SPI写16位数据函数:SPIWrite( )
void SPIWrite(int temp)
{        uint i;
        RST_CS;
for(i=0;i<16;i++)
{        PinDIN=(bit)(temp&0x8000);
        RST_CS ;
temp<<=1;
nNop(1);
SET_PinSCLK;
nNop(1);
}
SET_CS;
}


//函数功能:将电压值转换为对应的12位数字量
//说明:ref为参考源,ex_ref为当选择外部参考源的电压值,
//                out_volt为输出模拟电压值
//将电压值转换为对应的12位数字量函数:VoltToData( )
int VoltToData(uint ref,float ex_ref,float out_volt)
{        int temp;

        switch(ref)
    {
      case EXTERNAL:temp=(int)((out_volt*4096)/(2*ex_ref));
                    break;
    //case IN_1024:temp=(int)((out_volt*4096)/(2*1.024));
                    break;
      case IN_2048:temp=(int)((out_volt*4096)/(2*2.048));
    //case IN_2048:temp=out_volt;
                    break;
           default:break;
     }
     return(temp&0xfff);
}

//函数功能:设置DAC A(即A通道)输出
//说明:speed为速度模式,ref为参考源选择,temp为需要输出的电压
//                ex_ref为当选择外部参考源的电压值
//设置DAC A(即A通道)输出函数:SetDAC_A( )
void SetDAC_A(uint speed,uint ref,float ex_ref,float temp)
{        int ModCMD;
        int Data;
    ModCMD=0x9000|(speed<<14)|(ref);
      Data=VoltToData(ref,ex_ref,temp);
    Data=Data|0x8000|(speed<<14);
   SPIWrite(ModCMD);
    nNop(10);
    SPIWrite(Data);
}

//函数功能:设置DAC B(即B通道)输出
//说明:speed为速度模式,ref为参考源选择,temp为需要输出的电压
//                ex_ref为当选择外部参考源的电压值
//设置DAC B(即B通道)输出函数:SetDAC_B( )
void SetDAC_B(uint speed,uint ref,float ex_ref,float temp)
{        int ModCMD;
        int Data;
        ModCMD=0x9000|(speed<<14)|(ref);
        Data=VoltToData(ref,ex_ref,temp);
        Data=Data|0x0000|(speed<<14);
        SPIWrite(ModCMD);
         nNop(10);
      SPIWrite(Data);
}

//函数功能:设置DAC A与DAC B同时输出
//说明:speed为速度模式,ref为参考源选择,
//                temp1为A通道需要输出的电压,temp2为B通道需要输出的电压
//                ex_ref为当选择外部参考源的电压值
//设置DAC A与DAC B同时输出函数SetDAC_AB( )
void SetDAC_AB(uint speed,uint ref,float ex_ref,float temp1,float temp2)
{        int ModCMD;
int DataA,DataB;
ModCMD=0x9000|(speed<<14)|(ref);
DataA=VoltToData(ref,ex_ref,temp1);
DataA=DataA|0x8000|(speed<<14);
DataB=VoltToData(ref,ex_ref,temp2);
DataB=DataB|0x1000|(speed<<14);
SPIWrite(ModCMD);
SPIWrite(DataB);
SPIWrite(DataA);
}

这是tlv5638的c语言源程序
/*
* tlv5638.c
*
*  Created on: 2014-7-31
*      Author: Administrator
*/
#include <msp430g2553.h>
#include "tlv5638.h"

//短延时函数:nNop( )
void nNop(uchar i)
{
        for(;i>0;i--);
}
//函数功能:长延时
//长延时函数:LongDelay( )
void LongDelay(uint i)
{        uint j;
for(;i>0;i--)
{        for(j=1000;j>0;j--);
}
}
//向SPI写16位数据函数:SPIWrite( )
void SPIWrite(int temp)
{        uint i;
        RST_CS;
for(i=0;i<16;i++)
{        PinDIN=(bit)(temp&0x8000);
        RST_CS ;
temp<<=1;
nNop(1);
SET_PinSCLK;
nNop(1);
}
SET_CS;
}


//函数功能:将电压值转换为对应的12位数字量
//说明:ref为参考源,ex_ref为当选择外部参考源的电压值,
//                out_volt为输出模拟电压值
//将电压值转换为对应的12位数字量函数:VoltToData( )
int VoltToData(uint ref,float ex_ref,float out_volt)
{        int temp;

        switch(ref)
    {
      case EXTERNAL:temp=(int)((out_volt*4096)/(2*ex_ref));
                    break;
    //case IN_1024:temp=(int)((out_volt*4096)/(2*1.024));
                    break;
      case IN_2048:temp=(int)((out_volt*4096)/(2*2.048));
    //case IN_2048:temp=out_volt;
                    break;
           default:break;
     }
     return(temp&0xfff);
}

//函数功能:设置DAC A(即A通道)输出
//说明:speed为速度模式,ref为参考源选择,temp为需要输出的电压
//                ex_ref为当选择外部参考源的电压值
//设置DAC A(即A通道)输出函数:SetDAC_A( )
void SetDAC_A(uint speed,uint ref,float ex_ref,float temp)
{        int ModCMD;
        int Data;
    ModCMD=0x9000|(speed<<14)|(ref);
      Data=VoltToData(ref,ex_ref,temp);
    Data=Data|0x8000|(speed<<14);
   SPIWrite(ModCMD);
    nNop(10);
    SPIWrite(Data);
}

//函数功能:设置DAC B(即B通道)输出
//说明:speed为速度模式,ref为参考源选择,temp为需要输出的电压
//                ex_ref为当选择外部参考源的电压值
//设置DAC B(即B通道)输出函数:SetDAC_B( )
void SetDAC_B(uint speed,uint ref,float ex_ref,float temp)
{        int ModCMD;
        int Data;
        ModCMD=0x9000|(speed<<14)|(ref);
        Data=VoltToData(ref,ex_ref,temp);
        Data=Data|0x0000|(speed<<14);
        SPIWrite(ModCMD);
         nNop(10);
      SPIWrite(Data);
}

//函数功能:设置DAC A与DAC B同时输出
//说明:speed为速度模式,ref为参考源选择,
//                temp1为A通道需要输出的电压,temp2为B通道需要输出的电压
//                ex_ref为当选择外部参考源的电压值
//设置DAC A与DAC B同时输出函数SetDAC_AB( )
void SetDAC_AB(uint speed,uint ref,float ex_ref,float temp1,float temp2)
{        int ModCMD;
int DataA,DataB;
ModCMD=0x9000|(speed<<14)|(ref);
DataA=VoltToData(ref,ex_ref,temp1);
DataA=DataA|0x8000|(speed<<14);
DataB=VoltToData(ref,ex_ref,temp2);
DataB=DataB|0x1000|(speed<<14);
SPIWrite(ModCMD);
SPIWrite(DataB);
SPIWrite(DataA);
}




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。