msp430f5529捕获加串口源码

2020-07-29来源: 51hei关键字:msp430f5529  捕获  串口

msp430f5529捕获加串口,可以供大家学习


单片机源程序如下:


#include "msp430f5529.h"


#define uint unsigned int

#define uchar unsigned char


uint flag,TA_cent,PerVal;

unsigned long int val,cha;

int m[5];

void Delay10ms(unsigned int c)   //误差 0us

{

    unsigned char a, b;


        //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//

    for (;c>0;c--)

        {

                for (b=38;b>0;b--)

                {

                        for (a=130;a>0;a--);

                }         

        }      

}

void USCI_A0_Init()                   //USCI_A0的初始化

{

        P3SEL |= BIT3+BIT4;               // P3.3和P3.4选择UART通信功能

        UCA0CTL1 |= UCSWRST;              // 复位寄存器设置

        UCA0CTL0 = 0x00;

        UCA0CTL1 |= UCSSEL_1; // 波特率发生器参考时钟设置为ACLK,ACLK=32768Hz

        UCA0BR0 = 0x03;                   // 波特率设置为9600bps

        UCA0BR1 = 0x00;

        UCA0MCTL |= UCBRS_3 + UCBRF_0;    // 调制器设置

        UCA0CTL1 &= ~UCSWRST;             // 完成USCI_A0初始化设置

}

void fasongzifu (char Cha)        //单个字符发送函数

{


        UCA0TXBUF = Cha;

        while (!(UCA0IFG&UCTXIFG));       //等待上一个字节发送完毕

}


//void yunsuan()

//{

  //int m[5];

  //m[0]=val%10000/1000;

  //m[1]=val%1000/100;

// m[2]=val%100/10;

  //m[3]=val%10;

//m[4]='.';

// USCI_A0_Putchar(m[0]+48);

  //USCI_A0_Putchar(m[4]);

  //USCI_A0_Putchar(m[1]+48);

  //USCI_A0_Putchar(m[2]+48);

  //USCI_A0_Putchar(m[3]+48);

//}


void main( void )

{

  // Stop watchdog timer to prevent time out reset

  WDTCTL = WDTPW + WDTHOLD;


  P1DIR&=~BIT2;  //捕捉P1.2口

  P1SEL |= BIT2;

  TA0CCTL1 |= CAP + CM_1 + CCIS_0 + SCS + CCIE;//捕获模式,上升和下降都捕获,选择CCI2A,同步,捕获中断开

  TA0CTL |= TASSEL_2 + MC_2 + ID_0 + TAIE + TACLR; //SMCLK=1M,连续计数模式


  USCI_A0_Init();                   //USCI_A0初始化


  _EINT();//中断起始位

while(1);

}


#pragma vector=TIMER0_A1_VECTOR

__interrupt void TIMER0_A1_ISR(void)

{

  switch(TA0IV)

  {

    case 2:

      val = TA0CCR1 - PerVal;

      PerVal = TA0CCR1;

      flag++;

     if(flag >2)

     {

      flag =0;

      val = 1048576 / val; //1048576 :系统稳定后,DCOCLK默认为2.097152MHZ,FLL默认2分频,则MCLK和SMCLK的频率都为1.048576MHZ。(实验三会提到如何计算)

      m[0]=val%10000/1000;

      m[1]=val%1000/100;

      m[2]=val%100/10;

      m[3]=val%10;

      m[4]=' ';  

    fasongzifu(m[0]+48);

    fasongzifu(m[1]+48);

    fasongzifu(m[2]+48);  

    fasongzifu(m[3]+48);

    fasongzifu(m[4]);

    Delay10ms(10);

   

     }

     TA1CCTL0 &= ~CCIFG;

      break;

    case 4:

      break;

    case 10:

      TA1CCTL0 &= ~CCIFG;

      break;

  }

}


关键字:msp430f5529  捕获  串口 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic504685.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:msp430F149测电压显示在12864上外接一个led
下一篇:最后一页

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430f5529之PWM控制舵机程序
#include <msp430.h>                        //函数库int sum=0;                                  //全局变量int main(void){  volatile unsigned int i;     
发表于 2020-07-25
msp430f5529 MCP4725程序
_Voltage(float Vout)   //电压单位V{    unsigned char temp;    unsigned int Dn;    Dn = ( 4096 * Vout)/5;    temp = (0x0F00 & Dn) >> 8;  //12位数据高字节   //iic    I2C_Start();                
发表于 2020-07-25
msp430f5529 RC522射频卡程序
;   SDA p2.2    SCK P2.7    MOSI P3.3    MISO p3.4    IRQ 不接    RST p2.3连接好上述引线后,能实现以下功能:1.PC发送字符A,读出卡的型号和UID信息。2.PC发送字符F,单次寻卡模式,接触一次显示一次卡的型号信息。*/#include "msp430.h"#include "PIN_DEF.H"#include "RC522.H"#include "UART_Func.h"//串口已
发表于 2020-07-25
MSP430F5529单片机程序整理(串口、AD、定时器等)
#include <msp430.h>#include <stdint.h>#include "uart.h"#include "Flash.h"#include "ad.h"#include "stdio.h"#include "string.h"#define CPU_F                            ((double)1000000
发表于 2020-07-22
msp430f5529简单uart源程序(用串口助手 发什么 回复什么)
单片机源程序如下:/*****用串口助手 发什么  回复什么****/#include "msp430f5529.h"// ACLK = REFO = 32768Hz, MCLK = SMCLK = default DCO/2 = 1048576Hz// P3.4,5——USCI_A0 TXD/RXD;P9.4,5——USCI_A2 TXD/RXD;P10.4,5——USCI_A3 TXD/RXD;void main(void){  WDTCTL = WDTPW + WDTHOLD;               
发表于 2020-07-21
关于msp430g2553的捕获 详解
写一个脉冲频率测量的程序先确定测频的方法--脉冲填充法被测信号 ____|    |___________|     |_____填充的脉冲   ||||||||||||||||||定时计数器  CCR(第1次)     CCR(第2次)2次捕获后的捕获寄存器的值相减就是填充的脉冲数若SMCLK的频率为1MHZ则,输入脉冲周期就是【CCR(第2次)-CCR(第1次)】微秒所以脉冲填充法不是真要向被测信号内填充脉冲,二是等效的脉冲填充。这里没有考虑到定时器的溢出!所以理论上能够测得信号的周期为65535微秒。需要考虑的初始化
发表于 2020-07-12
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved