⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 这是一个我自己用430单片机时作的一个简易数字示波器
💻 C
字号:
#include "msp430x42x.h"    /*单片机寄存器头文件*/
#include "ADC16.h"
#include "BasicTimer.h"    /*BasicTimer程序库头文件*/
void  main( void )
{   unsigned int i,ADC_Result_1;
    void UART0_PutFrame(char*ptr,unsigned int Lenth);
    WDTCTL=WDTPW+WDTHOLD;  //停止看门狗
    FLL_CTL0|=XCAP18PF;	  //配置晶振负载电容
    P1DIR|=BIT0+BIT1+BIT2+BIT3+BIT4;
    P2DIR|=BIT0+BIT1+BIT2+BIT3;   //悬空的IO口要置为输出
    P2OUT|=(BIT0);
    P1OUT&=~(BIT2);
    //----------  以下是对串口的设置-----------------------   
    P2SEL|=BIT4+BIT5;             //P2.4,P2.5开启第二功能
    U0CTL =CHAR;             //异步通讯模式,8位数据,无校验,1位停止位
    ME1 |= UTXE0 + URXE0;  //开启串口0收发模块
    U0TCTL |=SSEL0;       //选择ACLK作为串口波特率时钟源
    U0BR1=0;
    U0BR0=0x06;           //分频系数整数部分为6
    U0MCTL=0x6f;         //分频系数小数部分调制(4800bps)
    UCTL0 &= ~SWRST;     // 初始化 USART声明设计
    //---------  以下是对ADC16及BasicTimer的设置-----------------
    ADC16_Init(1,0,'S',1);//ADC16初始化,设置ADC0采样外部输入,有符号,增益=1
    BT_Init(2048); //设置BasicTimer 每1/2048秒产生一次BT中断
    
   while(1)
   {
     Cpu_SleepWaitBT();//CPU休眠,等待被BasicTimer唤醒
     //-----------  以下程序每1/2048s运行一次----------------   
     ADC16_VrefOn();           //打开基准源
     for(i=0;i<30;i++);       //略等待,等基准稳定
     ADC_Result_1=ADC16_Sample(1,1);//进行采样ADC0,单次采样
     ADC16_VrefOff();          //关闭基准源    
     //******* 如何发送数据?*********
     char ADC;
     ADC=(char)(ADC_Result_1>>8);
     UART0_PutFrame(&ADC,1);
   } 
   
 }


void UART0_PutFrame(char*ptr,unsigned int Lenth)
{
  
  int i;
  U0TCTL |=TXWAKE;          //产生一个线路空闲时间
  TXBUF0=0;                 //向TXBUF内写入任意字节
  while((IFG1 & UTXIFG0)==0);//该字节发完(实际上是产生延时)
  for(i=0;i<Lenth;i++)
  {
    TXBUF0=ptr[i];   //一次发送各个字节数据
    while((IFG1 & UTXIFG0)==0); //等待该字节发完
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -