📄 main.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 + -