📄 main4(能高效率进行报警信号和一般电流信号的传输).c
字号:
//P4.7---SDA
//P4.6---SCL
#include "msp430x44x.h"
#define LATCH 0X80; //16CLK引脚,P3.7
#define CLK 0X01; //TXD2引脚,P4.0
#define DATA 0x02; //RXD2引脚,P4.1
#define CVCON4 0x40; //CVCON4引脚,P3.6
#define uchar unsigned char
#define uint unsigned int
//long alarm_value=0x3800;
//long alarm_value=0x16000;
void Delay(int m)
{
while(m-- > 0);
}
void alarm_convert(long alarmdata){ //4到20mA电流输出程序
uchar i;
for(i=0;i<17;i++){ //传送高八位,从高位传起
P4DIR |= CLK;
Delay(10);
if(alarmdata&0x010000){
P4DIR &=~DATA;
}
else{
P4DIR |= DATA;
}
Delay(10);
P4DIR &=~CLK;
Delay(10);
alarmdata=alarmdata<<1;
}
P3DIR |= LATCH;
Delay(10);
P3DIR &=~LATCH;
}
void ideal_convert(int ad421data){ //报警信号电流输出程序
uchar i;
for(i=0;i<16;i++){ //传送高八位,从高位传起
P4DIR |= CLK;
Delay(30);
if(ad421data&0x8000){
P4DIR &=~DATA;
}
else{
P4DIR |= DATA;
}
Delay(30);
P4DIR &=~CLK;
Delay(30);
ad421data=ad421data<<1;
}
P3DIR |= LATCH;
Delay(30);
P3DIR &=~LATCH;
}
void current_config(void){
P3OUT &=~0xc0; //CVCON4低电平,芯片供电,latch输出0
P4OUT &=~0x03; //CLK和DATA引脚输出0
P3DIR |= CVCON4; //低电平开始输出,AD421开始工作
//P3DIR &=~CVCON4;
WDTCTL = WDTHOLD+WDTPW;
}
void main(void)
{
uint da_value=0xA000;
long alarm_value=0xA000;
current_config();
ideal_convert(da_value);
_NOP();
da_value=0x0000;
ideal_convert(da_value);
_NOP();
alarm_convert(alarm_value);
_NOP();
alarm_value=0x10000;
alarm_convert(alarm_value);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -