找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5593|回复: 6
收起左侧

msp430f5529捕获加串口源码

[复制链接]
ID:306008 发表于 2018-4-11 20:55 | 显示全部楼层 |阅读模式
msp430f5529捕获加串口,可以供大家学习

单片机源程序如下:

  1. #include "msp430f5529.h"

  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. uint flag,TA_cent,PerVal;
  5. unsigned long int val,cha;
  6. int m[5];
  7. void Delay10ms(unsigned int c)   //误差 0us
  8. {
  9.     unsigned char a, b;

  10.         //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
  11.     for (;c>0;c--)
  12.         {
  13.                 for (b=38;b>0;b--)
  14.                 {
  15.                         for (a=130;a>0;a--);
  16.                 }         
  17.         }      
  18. }
  19. void USCI_A0_Init()                   //USCI_A0的初始化
  20. {
  21.         P3SEL |= BIT3+BIT4;               // P3.3和P3.4选择UART通信功能
  22.         UCA0CTL1 |= UCSWRST;              // 复位寄存器设置
  23.         UCA0CTL0 = 0x00;
  24.         UCA0CTL1 |= UCSSEL_1; // 波特率发生器参考时钟设置为ACLK,ACLK=32768Hz
  25.         UCA0BR0 = 0x03;                   // 波特率设置为9600bps
  26.         UCA0BR1 = 0x00;
  27.         UCA0MCTL |= UCBRS_3 + UCBRF_0;    // 调制器设置
  28.         UCA0CTL1 &= ~UCSWRST;             // 完成USCI_A0初始化设置
  29. }
  30. void fasongzifu (char Cha)        //单个字符发送函数
  31. {

  32.         UCA0TXBUF = Cha;
  33.         while (!(UCA0IFG&UCTXIFG));       //等待上一个字节发送完毕
  34. }

  35. //void yunsuan()
  36. //{
  37.   //int m[5];
  38.   //m[0]=val%10000/1000;
  39.   //m[1]=val%1000/100;
  40. // m[2]=val%100/10;
  41.   //m[3]=val%10;
  42. //m[4]='.';
  43. // USCI_A0_Putchar(m[0]+48);
  44.   //USCI_A0_Putchar(m[4]);
  45.   //USCI_A0_Putchar(m[1]+48);
  46.   //USCI_A0_Putchar(m[2]+48);
  47.   //USCI_A0_Putchar(m[3]+48);
  48. //}

  49. void main( void )
  50. {
  51.   // Stop watchdog timer to prevent time out reset
  52.   WDTCTL = WDTPW + WDTHOLD;

  53.   P1DIR&=~BIT2;  //捕捉P1.2口
  54.   P1SEL |= BIT2;
  55.   TA0CCTL1 |= CAP + CM_1 + CCIS_0 + SCS + CCIE;//捕获模式,上升和下降都捕获,选择CCI2A,同步,捕获中断开
  56.   TA0CTL |= TASSEL_2 + MC_2 + ID_0 + TAIE + TACLR; //SMCLK=1M,连续计数模式

  57.   USCI_A0_Init();                   //USCI_A0初始化

  58.   _EINT();//中断起始位
  59. while(1);
  60. }

  61. #pragma vector=TIMER0_A1_VECTOR
  62. __interrupt void TIMER0_A1_ISR(void)
  63. {
  64.   switch(TA0IV)
  65.   {
  66.     case 2:
  67.       val = TA0CCR1 - PerVal;
  68.       PerVal = TA0CCR1;
  69.       flag++;
  70.      if(flag >2)
  71.      {
  72.       flag =0;
  73.       val = 1048576 / val; //1048576 :系统稳定后,DCOCLK默认为2.097152MHZ,FLL默认2分频,则MCLK和SMCLK的频率都为1.048576MHZ。(实验三会提到如何计算)
  74.       m[0]=val%10000/1000;
  75.       m[1]=val%1000/100;
  76.       m[2]=val%100/10;
  77.       m[3]=val%10;
  78.       m[4]=' ';  
  79.     fasongzifu(m[0]+48);
  80.     fasongzifu(m[1]+48);
  81.     fasongzifu(m[2]+48);  
  82.     fasongzifu(m[3]+48);
  83.     fasongzifu(m[4]);
  84.     Delay10ms(10);
  85.    
  86.      }
  87.      TA1CCTL0 &= ~CCIFG;
  88.       break;
  89.     case 4:
  90.       break;
  91.     case 10:
  92.       TA1CCTL0 &= ~CCIFG;
  93.       break;
  94.   }
  95. }

复制代码

所有资料51hei提供下载:
F5229 捕获 串口.rar (254.07 KB, 下载次数: 67)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:256712 发表于 2018-7-14 15:19 | 显示全部楼层
正好在做相关的程序,版主的程序很好用,不过请问怎样才能测出pwm波的占空比呢
回复

使用道具 举报

ID:374899 发表于 2018-7-19 16:20 | 显示全部楼层
六六六jp 发表于 2018-7-14 15:19
正好在做相关的程序,版主的程序很好用,不过请问怎样才能测出pwm波的占空比呢

可以用示波器看pwm波的占空比
回复

使用道具 举报

ID:374899 发表于 2018-7-19 16:22 | 显示全部楼层
您好,请问您知道怎么样用串口显示ADC的采样值吗?
回复

使用道具 举报

ID:432941 发表于 2019-4-25 21:13 | 显示全部楼层
楼主,请问下载的文件用什么打开?
回复

使用道具 举报

ID:542201 发表于 2019-5-19 17:25 | 显示全部楼层
很不错,感谢分享
回复

使用道具 举报

ID:558624 发表于 2019-7-29 16:05 | 显示全部楼层
蛮好的,谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表