基于MSP430的三相电能表SA9904B采集系统
cs_1+sck_1+si_1;//选择SCK,CS置高,SI为向外输出。
my_flag1=tempadd0<<7;//左移7位
my_flag2=my_flag2&0x8000;//取最高位向SA9904B输入数据。
if(my_flag2==0x8000)
{
P6OUT=cs_1+sck_1+si_1;
my_flag1=my_flag1<<1;
P6OUT=cs_1+0+si_1;}//输入1,SCK置0
else
{P6OUT=cs+sck+si_1;
my_flag1=my_flag1<<1;
P6OUT=cs+0+si;}//
输入0,SCK置0
my_flag2=my_flag1;
}
其中一些参量为定义量。
这样的输出过程循环9次,即把9位数据从高位到低位输进SA9904B地址寄存器。
第三、DO
口数据传输
与DI口数据传输相似,主要考虑的是在P6.6端口上显示有功和无功数据寄存器中的数据,24位数据按从高位到低位传输次序读出。
for(i=4;i>1;i--)
{for(j=7;j>=0;j--)
{
P6SEL=cs+sck+so_1;//选择SCK,CS为I/O功能,SO为模块功能。
P6DIR=cs_1+sck_1+so;//选择SCK,CS
向外,SO为向内输出。
P6OUT=cs_1+sck_1+0;//选择SCK,CS置高。
my_flag=(unsignedchar)(P6IN);//读取P6IN寄存器中数值。
P6OUT=cs_1+sck+0;
aa=(aa|(my_flag<<j));//存储数据。
my_flag=0x00;
}
if(
i>2){aa=aa<<8;}}//左移8位。
returnaa;
}
其中cs,sck,so等参量的定义如cs:P6SEL|=0x20方式所示。
第四、F50寄存器数据处理
该端口的处理方式与上述的DO和SI
《基于MSP430的三相电能表SA9904B采集系统(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/169892.html
my_flag1=tempadd0<<7;//左移7位
my_flag2=my_flag2&0x8000;//取最高位向SA9904B输入数据。
if(my_flag2==0x8000)
{
P6OUT=cs_1+sck_1+si_1;
my_flag1=my_flag1<<1;
P6OUT=cs_1+0+si_1;}//输入1,SCK置0
else
{P6OUT=cs+sck+si_1;
my_flag1=my_flag1<<1;
P6OUT=cs+0+si;}//
输入0,SCK置0
my_flag2=my_flag1;
}
其中一些参量为定义量。
这样的输出过程循环9次,即把9位数据从高位到低位输进SA9904B地址寄存器。
第三、DO
口数据传输
与DI口数据传输相似,主要考虑的是在P6.6端口上显示有功和无功数据寄存器中的数据,24位数据按从高位到低位传输次序读出。
for(i=4;i>1;i--)
{for(j=7;j>=0;j--)
{
P6SEL=cs+sck+so_1;//选择SCK,CS为I/O功能,SO为模块功能。
P6DIR=cs_1+sck_1+so;//选择SCK,CS
向外,SO为向内输出。
P6OUT=cs_1+sck_1+0;//选择SCK,CS置高。
my_flag=(unsignedchar)(P6IN);//读取P6IN寄存器中数值。
P6OUT=cs_1+sck+0;
aa=(aa|(my_flag<<j));//存储数据。
my_flag=0x00;
}
if(
i>2){aa=aa<<8;}}//左移8位。
returnaa;
}
其中cs,sck,so等参量的定义如cs:P6SEL|=0x20方式所示。
第四、F50寄存器数据处理
该端口的处理方式与上述的DO和SI
《基于MSP430的三相电能表SA9904B采集系统(第3页)》