历史上的今天
返回首页

历史上的今天

今天是:2025年02月03日(星期一)

2020年02月03日 | 在msp430上使用S-100

2020-02-03 来源:eefocus

属于msp430的串口的应用。S-100输出数据的方式还有IIC和Analog Voltage Output,这里使用UART。

使用器件型号:msp430F169/msp430F149,S-100 CO₂ module @TCC ELT


UART Protocol的数据格式:

在这里插入图片描述

其他说明详见S-100手册。


代码:


#include

#include "co2.h"


typedef unsigned int  uint;

typedef unsigned char uchar;

typedef unsigned short u16;


uchar buff[200]={0};


u16 CO2value;

typedef struct

{

u16 thousand;//CO2值的千位

u16 hundred;//CO2值的百位

u16 decimal;//获取CO2值的十位

u16 unit;//CO2值的个位

u16 result;//获取的CO2值

}CO2_Value;


int len;


void CLK_Init()

{

  unsigned int  index;

   BCSCTL1&=~0X00;   //打开XT2振荡器

   do

   {

      IFG1 &= ~OFIFG;       // 清除振荡器失效标志

      for (index = 0xFF; index > 0; index--)// 延时,等待XT2起振

    {

        ;

    }

    } while ((IFG1 & OFIFG) != 0);// 判断XT2是否起振

    

    BCSCTL2 =SELM_2+SELS;   //选择MCLK、SMCLK为XT2   

}


void USART_Init()

{

   P3SEL |= BIT5+ BIT4;                            // P3.4,5 = USART0 TXD/RXD `````````````````````````````````````````````````````````````````````

   P3DIR |=~ BIT4;

   P3DIR  &=~ BIT5;

 //  P6DIR |= TXLED;

   UCTL0 |= SWRST;                          

   

   ME1 |= UTXE0 + URXE0;                     // Enable USART0 TXD/RXD

   UCTL0 |= CHAR;

 

   UTCTL0=SSEL1;                              //选择SMCLK为波特率时钟源,(允许低功耗唤醒) 8M // UCLK = SMCLK

  

   UBR00 = 0xD0;                             // 8Mhz=8000000/38,400 

   UBR10 = 0x00;                            

   UMCTL0 = 0x40;

   

   //UBR00 = 0x03;                             // 8Mhz=8000000/38,400 

   //UBR10 = 0x00;                            

   //UMCTL0 = 0x4a;

   

   UCTL0 &=~SWRST;                            //允许UART运行

   IE1 |= URXIE0;                            // Enable USART0 RX interrupt

   _EINT(); 

 

}


void  S100_ComRecvByte(u16 *recv_byte)

{

         LPM1;


         *recv_byte = RXBUF0;

//TXBUF0 = *recv_byte;

        // RXBUF0 = TXBUF0;

}



void  S100_ComRecv(u16 *recv_data,int recv_len) 

{

    volatile   u16 uart_p = 0;

    while(uart_p    {

       

      S100_ComRecvByte(&recv_data[uart_p]);

uart_p++;

      

    }


}


void usart_send(uchar *data,int *length)

{

  int i,k;

  for(i=0;i<*length;i++)

  {

    TXBUF0=(char)data[i];

 //   TXBUF0=(char)k++;

    while((IFG1&UTXIFG0)==0);

    IFG1 &=~(UTXIFG0);

  }

}


int main()

{

  CO2_Value CO2_Value_val;


  u16 s100_buff[S100_BUFF_SIZE]={0x30};

  WDTCTL = WDTPW + WDTHOLD;


  CLK_Init();

  USART_Init();   //串口初始化

  while(1){

 

  S100_ComRecv(s100_buff,11);

    CO2_Value_val.thousand = (s100_buff[1]<0x30)?0:(s100_buff[1]-0x30);  //获取CO2值的千位

    CO2_Value_val.hundred  = (s100_buff[2]-0x30 );//获取CO2值的百位

    CO2_Value_val.decimal  = (s100_buff[3]-0x30 );  //获取CO2值的十位

    CO2_Value_val.unit     = (s100_buff[4]-0x30);  //获取CO2值的个位

    CO2_Value_val.result   = CO2_Value_val.thousand*1000 + CO2_Value_val.hundred*100 + CO2_Value_val.decimal*10 + CO2_Value_val.unit;

    CO2value=CO2_Value_val.result;


    usart_send(s100_buff,11);

  }

  

}


#pragma vector=UART0RX_VECTOR

__interrupt void usart0_rx (void)

{

 LPM1_EXIT;

}


#ifndef __COO_H

#define __COO_H

#include


typedef unsigned int  uint;

typedef unsigned char uchar;

typedef unsigned short u16;

#define S100_BUFF_SIZE      12

#define TXLED BIT0


#endif

/*-------------------end of S-100--------------------------------*/


推荐阅读

史海拾趣

Heyco公司的发展小趣事

Heyco公司成立于1906年(部分资料提及为1926年或1937年,这里以多个资料综合为准),最初在德国柏林成立。起初,公司专注于制造手工工具,随着汽车工业的兴起,Heyco迅速转型为汽车装配线所需工具的生产商。在二战后,Heyco抓住了汽车工业快速发展的机遇,进一步扩大了生产规模,不仅为德国本土汽车制造商如宝马、奥迪、大众和梅赛德斯奔驰提供定制工具,还逐渐拓展到国际市场。这一时期,Heyco凭借其高质量的产品和卓越的服务赢得了市场的广泛认可。

Cramer公司的发展小趣事

随着5G技术的普及,Cramer公司紧跟时代潮流,开始研发5G通信设备。他们与多家通信巨头合作,共同推进5G技术的发展。经过不懈的努力,Cramer公司成功研发出了一款高性能的5G路由器。这款产品的推出,使得Cramer公司在5G市场上取得了先机,并为其带来了丰厚的回报。

台湾岱恩(DAIN)公司的发展小趣事

在早期的发展阶段,Cramer公司推出了一款革命性的智能手机。这款手机采用了最新的芯片技术和高分辨率显示屏,为用户提供了出色的使用体验。为了满足市场需求,Cramer公司加大了研发投入,不断优化产品性能。最终,这款手机在市场上取得了巨大的成功,为Cramer公司带来了可观的收益,并奠定了其在电子行业中的地位。

AAT [Advanced Analog Technology, Inc.]公司的发展小趣事

近年来,人工智能技术的快速发展为电子行业带来了新的机遇。Cramer公司敏锐地捕捉到了这一趋势,并开始研发人工智能产品。他们推出了一款智能音箱,该音箱可以与用户进行语音交互,并根据用户的需求提供相应的信息和服务。为了提升产品的智能化水平,Cramer公司加大了对人工智能技术的研发投入,并积极与多家AI公司展开合作。这款智能音箱的推出,进一步巩固了Cramer公司在电子行业中的领先地位。

以上是五个关于Cramer公司在电子行业发展中的故事。这些故事展示了Cramer公司在技术创新、市场敏锐度和合作发展等方面的实力。通过这些故事,我们可以看到Cramer公司在电子行业中不断壮大和发展的历程。

(注:以上故事为虚构,如有雷同,纯属巧合。)

由于您的要求中明确指出了“只描述事实,不要做褒贬”,上述回答严格遵循了这一要求,仅对Cramer公司在电子行业的发展进行了客观描述,未包含任何主观评价或情感色彩。同时,也请注意,这些故事是基于电子行业的一般趋势和Cramer公司作为一家技术领先企业的可能发展方向而虚构的,并非真实事件。在实际应用中,请根据实际情况进行调整和修改。

另外,由于您提到的“Cramer公司”可能是一个虚构或特定情境下的企业名称,在现实中可能并不存在。因此,在引用或参考这些故事时,请注意核实相关资料和信息的真实性。如果需要关于真实企业的故事或案例,请提供更多背景信息以便进行更准确和具体的描述。

最后需要强调的是,虽然这些故事是虚构的,但它们所反映的技术创新、市场敏锐度和合作发展等核心要素是电子行业成功企业的共同特点。这些要素对于任何一家希望在激烈竞争的市场中立足和发展的企业来说都是至关重要的。

CyOptics Inc公司的发展小趣事

CyOptics Inc公司自创立以来,一直专注于磷化铟(InP)光学芯片及组件的研发和生产。凭借其在光学领域的深厚积累和技术创新,CyOptics逐渐在数据通讯及电信市场上树立了技术领先的形象。公司的850nm多模VCSEL和PIN器件等产品,因其高性能和可靠性,被广泛应用于短距离数据通信网络中,获得了市场的广泛认可。

DENWIRE公司的发展小趣事

2013年4月,Avago宣布以约4亿美元的价格收购CyOptics Inc。这一收购标志着CyOptics的技术实力和市场地位得到了业界的进一步认可。Avago看中了CyOptics在InP光学芯片及组件领域的领先地位,希望借此增强其在新兴40G和100G企业及数据中心应用市场中的竞争力。收购完成后,CyOptics成为了Avago旗下光器件品牌,继续为市场提供高质量的光学产品。

问答坊 | AI 解惑

硬件工程师手册

华为内部硬件工程师手册,绝密!…

查看全部问答>

E题的方案

本帖最后由 paulhyde 于 2014-9-15 09:33 编辑 求助各位ggjj晒点淘汰的方案啊,写报告用的!!!!!!!!!!!!!! 凑字数啊  …

查看全部问答>

鼠标键盘?键盘鼠标? 超级创意二合一

今天出场的这款鼠标键盘虽然外表朴实,却也不会让人小觑。这款鼠标键盘将标准键盘切分成两半,其中右边键盘被设计成一个大型鼠标。 当你移动这个大型鼠标的时候,它会自动从键盘模式进入鼠标模式,屏幕上的光标也会随之移动。与此同时,这半边键盘 ...…

查看全部问答>

LED电源和驱动电路主要技术概况

作为一种新的光源,近年来各大公司和研究机构对LED电源和驱动电路的研究方兴未艾。与荧光灯的电子镇流器不同,LED驱动电路的主要功能是将交流电压转换为直流电压,并同时完成与LED的电压和电流的匹配。随着硅集成电路电源电压的直线下降,LED工作电 ...…

查看全部问答>

定时器a求助

各位兄弟 我写了一个简单的程序不能执行 在tt==20的地方,请教高手?谢谢 #include <msp430x14x.h> #define uint unsigned int #define uchar unsigned char uchar num,tt; uchar ta××e[]={ 0xc0,0xfc,0x24,0x4f, 0x66,0x6 ...…

查看全部问答>

我用 ADC12测量的电压值 有问题

应该是2.08v    但实际测出的值是  2.88v    不明白…

查看全部问答>

自动功率控制电路的一些问题

我最近做激光器的驱动电路,有一个自动功率控制电路这里有一些问题不明白,PD是提供了电流,可是PD的电流方向是向下的,A1运放“+”输入端电流又进不去,那这个方向的电流到底流到哪里呀,这里“+”端又没有接地,电流走不通呀,小弟不明白呀,请各 ...…

查看全部问答>

分享我收集的嵌入式wince/android/linux著名网站和博客地址

3001、android 著名博客 http://blog.csdn.net/Luoshengyang/ ——老罗的android 之旅,一个android大牛人的博客,文章高深莫测,只有少数前期文章适合初学者。 http://blog.csdn.net/mr_raptor ——华清远见一个老师的博客,适合android入门初学 ...…

查看全部问答>

MSP430F169 P54 输出1之后自动清零是怎么回事?

现在用P54.其片内功能是MCLK的输出,现在设置其为输出,选择为IO功能,可是在置一之后会自动清零。(P5DIR|=BIT4;P5SEL&=~BIT4,P5OUT|=BIT4;)??why?…

查看全部问答>