?? main4(能高效率進(jìn)行報(bào)警信號(hào)和一般電流信號(hào)的傳輸).c
字號(hào):
//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){ //報(bào)警信號(hào)電流輸出程序
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);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -