MSP430模数转换模块
MSP430单片机之ADC

一张图看懂MSP430单片机之ADC原创一,基础知识ADC即Analog to Digital Converter模数转换,把模拟信号进行量化,转换为数字量。
对于软件工程师来说,ADC内部的转换原理可以忽略,只需要了解其对外呈现的接口。
AD输入与输出之间的关系为:MSP430的ADC12内核模块是12位的,其最大输出为2^12 – 1 = 4095。
以VR-为参考点,当VIN小于或者等于VR-时得到的AD码值为0,当VIN大于或者等于VR+时,得到的AD码值为4095,当VIN处于VR-和VR+之间时,按线性比例转换。
这样,从MCU中读出AD码值,即可根据公式倒推回去计算出输入的模拟量电压。
二,ADC总体框图再补一张中文版的:三,分块解释1,ADC内核先来看看ADC最核心的部分。
当然少不了电压参考源VR+和VR-,以及模拟量输入部分。
模拟量输入部分是和“采样保持”电路连在一起的,这一部分后面再细说。
除此之外,与ADC内核相关的,还有以下几个信号:1,ADC12CLK。
在MCU中,任何模块都少不了时钟,ADC模块也不例外,必须有时钟信号它才能工作。
它有4个时钟源可以选择,并且可以1~8分频。
2,ADC12ON,这个是ADC内核的总开关,只有当ADC12ON这一位为1时,ADC内核模块才工作。
如果想要关闭ADC内核以降低功耗,可以将ADC12ON置为0.3,SAMPCON,采样控制信号。
该信号接至Convert,当SAMPCON为低电平时,ADC内核进行AD转换。
4,BUSY,用于指示内核模块是否正处于AD转换过程中。
2,采样保持。
msp430f149技术资料

MSP430是德州公司新开发的一类具有16位总线的带FLASH的单片机,由于其性价比和集成度高,受到广大技术开发人员的青睐.它采用16位的总线,外设和内存统一编址,寻址范围可达64K,还可以外扩展存储器。
具有统一的中断管理,具有丰富的片上外围模块,片内有精密硬件乘法器、两个16位定时器、一个14路的12位的模数转换器、一个看门狗、6路P口、两路USART通信端口、一个比较器、一个DCO内部振荡器和两个外部时钟,支持8M的时钟。
由于为FLASH型,则可以在线对单片机进行调试和下载,且JTAG口直接和FET(FLASH EMULATION TOOL)的相连,不须另外的仿真工具,方便实用,而且,可以在超低功耗模式下工作,对环境和人体的辐射小,测量结果为100mw左右的功耗(电流为14mA左右),可靠性能好,加强电干扰运行不受影响,适应工业级的运行环境,适合与做手柄之类的自动控制的设备.我们相信MSP430单片机将会在工程技术应用中得以广泛应用,而且,它是通向DSP系列的桥梁,随着自动控制的高速化和低功耗化,MSP430系列将会得到越来越多人的喜爱。
第三章MSP430F149 资源的应用介绍及开发第一节中断介绍及存储器段介绍中断在MSP430中得以广泛的应用,它可以快速进入中断程序,之后返回中断前的状态,其时序为:PC执行程序中断允许置位SR中的GIE置位 EINT(中断开)中断到,中断标志位(IFG)置位从中断向量表中读取中断程序的入口地址,进入中断程序执行中断程序中断允许位复位 RETI中断返回回到原来地址。
具体应用将会在应用程序中的到应用。
有关中断源和中断优先级及中断允许位、中断标志位在参考资料1上有详细介绍。
MSP430单片机的片上存储器共为64K,表示为图:第三节 P 口MSP430F149有6个8位的P口,其中P1、P2口占两个中断向量,共可以接16 个中断源,还可以直接利用 P口的输入输出寄存器,直接对外进行通信。
MSP430ADC12转换模块总结

MSP430ADC12转换模块总结MSP430ADC12转换模块是德州仪器(Texas Instruments)公司推出的一种12位模数转换器。
它主要应用于MSP430系列微控制器中,是一种用于模拟信号转换为数字信号的重要模块。
本文将对MSP430ADC12转换模块的原理、特点、应用和优缺点进行详细的总结。
一、原理1.设置输入通道和转换时钟。
2.开始转换,模块将自动切换到所选通道,并从该通道读取模拟输入信号。
3.模块以逐位的方式逼近比较,从最高有效位(MSB)开始,通过与DAC比较来确定该位是0还是14.继续逼近,直至得到完整的12位数字输出。
5.完成转换后,可以读取数字输出值,并根据需要进行后续处理。
二、特点1.高精度:MSP430ADC12转换模块具有12位分辨率,可以实现高精度的模拟信号转换。
2.快速转换:该模块支持多种转换速度选项,可根据应用需求选择合适的速度,实现快速转换。
3.多通道输入:MSP430ADC12模块支持多达16个输入通道,可以实现多种模拟信号的并行转换。
4.内部参考电压:模块内置了参考电压源,可以提供稳定的参考电压,减少外部硬件成本。
5.中断功能:该模块支持转换完成中断,当转换完成时,可以通过中断方式通知主控制器进行相应的处理。
6.低功耗:该模块工作时具有低功耗特性,可以在需要的时候进入低功耗模式,从而节省系统能量消耗。
三、应用1.传感器信号处理:可以将各种传感器(如温度、压力、湿度传感器)的模拟信号转换为数字信号,从而实现对传感器的精确测量和控制。
2.电力系统监测:可以对电力系统中的各种参数(如电压、电流、功率)进行模拟信号转换,实现对电力系统的实时监测和控制。
3.仪器仪表:可以将各种测量仪器(如多米表、示波器)的模拟信号转换为数字信号,提高仪器仪表的测量精度和稳定性。
4.通信系统:可以将通信系统中的模拟信号(如音频信号)转换为数字信号,实现通信数据的处理和传输。
四、优缺点1.高精度:具有12位分辨率,可以实现高精度的信号转换。
MSP430各系列介绍

MSP430:德州仪器1996年到2000年初,先后推出了31x、32x、33x等几个系列,这些系列具有LCD 驱动模块,对提高系统的集成度较有利。
每一系列有ROM 型(C)、OTP 型(P)、和EPROM 型(E)等芯片。
EPROM 型的价格昂贵,运行环境温度范围窄,主要用于样机开发。
这也表明了这几个系列的开发模式,即:用户可以用EPROM 型开发样机;用OTP型进行小批量生产;而ROM型适应大批量生产的产品。
430x1xx系列基于闪存或ROM 的超低功耗MCU,提供8MIPS,工作电压为1.8V - 3.6V,具有高达60KB 的闪存和各种高性能模拟及智能数字外设。
超低功耗低至:0.1μA RAM (保持模式)0.7μA (实时时钟模式)200μA/MIPS (工作模式)在6μs 之内快速从待机模式唤醒器件参数:闪存选项:1KB – 60KB ROM 选项:1KB – 16KB RAM 选项:512B – 10KB GPIO 选项:14、22、48 引脚ADC 选项:10 和12 位斜率SAR 其它集成外设:模拟比较器、DMA、硬件乘法器、SVS、12 位DAC430F2xx系列基于闪存的超低功耗MCU,在1.8V - 3.6V 的工作电压范围内性能高达16MIPS。
包含极低功耗振荡器(VLO)、内部上拉/下拉电阻和低引脚数选择。
超低功耗低至:0.1μA RAM(保持模式)0.3μA (待机模式)(VLO) 0.7μA (实时时钟模式)220μA/MIPS (工作模式)在1μs 之内超快速地从待机模式唤醒器件参数:闪存选项:1KB – 120KB RAM 选项:128B – 8KB GPIO 选项:10、16、24、32、48、64 引脚ADC 选项:10 和12 位斜率SAR、16 位Σ-Δ ADC 其它集成外设:模拟比较器、硬件乘法器、DMA、SVS、12 位DAC、运算放大器430C3xx系列旧款的ROM 或OTP 器件系列,工作电压为2.5V - 5.5V,高达32KB ROM、4MIPS 和FLL。
TI MSP430AFE2x3 2x2 2x1 微控制器说明书

MSP430AFE2x3MSP430AFE2x2MSP430AFE2x1 ZHCS136A–NOVEMBER2010–REVISED MARCH2011混合信号微控制器特性•低电源电压范围:1.8V至3.6V•多达3个具有差分可编程增益放大器(PGA)输入的24位三角积分模数(A/D)转换器•超低功耗•具有3个捕获/比较寄存器的16位Timer_A –激活模式:220μA(在1MHz频率和2.2V电压条件下)•串行通信接口(USART),可用软件来选择异步UART或同步SPI–待机模式:0.5μA•16位硬件乘法器–关闭模式(RAM保持):0.1μA•欠压检测器•5种节能模式•具有可编程电平检测功能的电源电压监控器/监视器•可在不到1μs的时间里超快速地从待机模式唤醒•串行板上编程,无需从外部进行电压编程,利用安•16位精简指令集(RISC)架构,高达12MHz系统时全熔丝实现可编程代码保护钟•片上仿真模块•基本时钟模块配置•系列成员汇总于表1。
–带有两个已校准频率的高达12MHz的内部频率•如需了解完整的模块说明,请参阅《MSP430x2xx –内部超低功耗低频(LF)振荡器系列用户指南》,文献编号SLAU144–高达16MHz的高频(HF)晶振–谐振器–外部数字时钟源说明德州仪器(TI)MSP430™系列超低功率微控制器包含几个器件,这些器件特有针对多种应用的不同的外设集。
这种架构与5种低功耗模式相组合,专为在便携式测量应用中延长电池使用寿命而优化。
该器件具有一个强大的16位RISC CPU,16位寄存器和有助于获得最大编码效率的常数发生器。
数字控制振荡器(DCO)可在不到1µs 的时间里完成从低功耗模式至运行模式的唤醒。
MSP430AFE2x3器件是超低功耗混合信号微控制器,集成了三个独立的24位三角积分A/D转换器、一个16位定时器、一个16位硬件乘法器、USART通信接口、安全装置定时器和11个I/O引脚。
与MSP430 USI端口配合使用ADS8361

与MSP430 USI端口配合使用ADS8361引言ADS8361 是一款采样速率为500kSPS 的16 位双路模数转换器(ADC),该转换器具有 4 个全差分输入通道,两两一对,以实现同步高速信号采集。
采样保持放大器的输入端是全差分的,此外,ADC 的输入端也保持为全差分。
这使该ADC 具有卓越的共模抑制能力:在50kHz 时为80dB,这在高噪声环境下非常重要。
新型MSP430F2013 等MSP430 器件具有通用串行接口(USI),因而可用于非常简单直接的接口,该接口不需要“粘接逻辑”且需要的软件开销也很少。
有的应用要求对同步数据采集的通道实现精确定时,这时我们就能用这种接口来获取所需的系统结果。
硬件ADS8361EVMADS8361 是德州仪器(TI) 推出的串行ADC 电机控制产品系列产品。
EVM 提供了相关平台,以演示配合不同TI DSP 与微控制器时ADS8361 ADC 的功能,并针对定制的最终用户应用提供了方便地存取所有模拟与数字信号的功能。
图1 硬件接口结构图eZ430-F2013 开发工具eZ430-F2013 是完整的MSP430 开发工具,包括评估MSP430F2013 所需的全部软硬件。
我们用可便利的USB 存储棒提供该硬件。
eZ430-F2013 采用IAR 嵌入式工作台集成开发环境(IDE),以提供完整的仿真功能,该器件提供独立系统设计与可拆卸目标板两种选项,以便于集成至现有设计中。
更多详情,敬请访问:ti/ez430。
硬件接口连接eZ430-F2013 与ADS8361EVM 的最低要求是采用简单的三线接口(见表1)。
硬件连接如图 1 所示。
ADS8361 的CLOCK、(RD + CONVST) 与Serial Data A 引脚分别连接至USI 端口的SCLK、MOSI 与MISO 引脚。
chip select (CS) 引脚接地,因为端口上只放置一个ADC。
MSP430简介(超详细·)

msp430简介MSP430是德州公司新开发的一类具有16位总线的带FLASH 的单片机,由于其性价比和集成度高,受到广大技术开发人员的青睐.它采用16位的总线,外设和内存统一编址,寻址范围可达64K,还可以外扩展存储器.具有统一的中断管理,具有丰富的片上外围模块,片内有精密硬件乘法器、两个16位定时器、一个14路的12位的模数转换器、一个看门狗、6路P口、两路USART通信端口、一个比较器、一个DCO内部振荡器和两个外部时钟,支持8M 的时钟.由于为FLASH型,则可以在线对单片机进行调试和下载,且JTAG口直接和FET(FLASH EMULATION TOOL)的相连,不须另外的仿真工具,方便实用,而且,可以在超低功耗模式下工作对环境和人体的辐射小,测量结果为100mw左右的功耗(电流为14mA左右),可靠性能好,加强电干扰运行不受影响,适应工业级的运行环境,适合与做手柄之类的自动控制的设备.我们相信MSP430单片机将会在工程技术应用中得以广泛应用,而且,它是通向DSP系列的桥梁,随着自动控制的高速化和低功耗化, MSP430系列将会得到越来越多人的喜爱.一、IO口(一)、P口端口寄存器:1、PxDIR 输入/输出方向寄存器(0:输入模式 1:输出模式)2、PxIN 输入寄存器输入寄存器是只读寄存器,用户不能对其写入,只能通过读取该寄存器的内容知道I/O口的输入信号。
3、PxOUT 输出寄存器寄存器内的内容不会受引脚方向改变的影响。
4、PxIFG 中断标志寄存器(0:没有中断请求 1:有中断请求)该寄存器有8个标志位,对应相应的引脚是否有待处理的中断请求;这8个中断标志共用一个中断向量,中断标志不会自动复位,必须软件复位;外部中断事件的时间必须>=1.5倍的MCLK的时间,以保证中断请求被接受;5、PxIES 中断触发沿选择寄存器(0:上升沿中断 1:下降沿中断)6、PxSEL 功能选择寄存器(0:选择引脚为I/O端口 1:选择引脚为外围模块功能)7、PxREN 上拉/下拉电阻使能寄存器(0:禁止 1:使能)(二)、常用特殊P口:1、P1和P2口可作为外部中断口。
MPS430F149单片机之_模拟电压AD转换数码管显示数值

MPS430F149单片机之_模拟电压AD转换数码管显示数值/************************************************************** ***将P6口输入的模拟电压AD转换后,从P4,P5口连接的数码管输出*************************************************************** **/#include //声明库/************************************************************** ******数据类型定义*************************************************************** ******/#define uchar unsigned char#define uint unsigned int/************************************************************** ******数码管段码定义0123456789*************************************************************** ******/ucharTable[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //所需的段的位码uchar wei[4]={0XEF,0XDF,0XBF,0X7F};//控制位uint z,x,c,v, date=0; //定义数据类型/************************************************************** ********延时函数程序,参数i 延时时间*************************************************************** *******/void DelayMS(uint i){uint j;for(;i!=0;i--){for(j=200;j!=0;j--);}}/************************************************************** ********按键函数*************************************************************** *******/void KEY()//按键函数名{if(!(P1IN&BIT0))//判断按键按下{DelayMS(100);//消抖延时while(!(P1IN&BIT0));//判断按键松开date++;//按键数值加1}}/************************************************************** ********数码管动态扫描*************************************************************** ******/void Pre_Display(){/***********************数据转换*****************************/ z=date/1000; //求千位x=date%1000/100;//求百位c=date%100/10; //求十位v=date%10; //求个位P5OUT=wei[0]; //位控制P4OUT=Table[z]; //显示千位DelayMS(5); //延时P5OUT=wei[1]; //位控制P4OUT=Table[x]; //显示百位DelayMS(5); //延时P5OUT=wei[2]; //位控制P4OUT=Table[c]; //显示十位DelayMS(5); //延时P5OUT=wei[3]; //位控制P4OUT=Table[v]; //显示个位DelayMS(5); //延时}/************************************************************** ******I/O口初始化*************************************************************** ******/void Init_IO(void)//初始化I/O{P1DIR&=~BIT0;//设置P4口为输出P4DIR=0XFF;//设置P5口为输出P5DIR=0XFF;}/************************************************************** ******主函数*************************************************************** ******/void main(void)//主函数{Init_IO();//初始化I/OWDTCTL=WDTPW+WDTHOLD;//关闭看门狗while(1)//无限循环{KEY();//数码管显示数值Pre_Display();//数码管扫描显示函数}}/************************************************************** ******结束*************************************************************** ******/。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MSP430模数转换模块--ADC12MSP430单片机的ADC12模块是一个12位精度的A/D转换模块,他具有高速度,通用性等特点。
大部分都内置了ADC模块.而有些不带ADC模块的片子,也可通过利用内置的模拟比较器来实现AD的转换。
在系列产品中,我们可以通过以下列表来简单地认识他们的ADC功能实现。
系列型号ADC功能实现转换精度MSP430X1XX2 比较器实现10位MSP430F13X ADC模块12位MSP430F14X ADC模块12位MSP430F43X ADC模块12位MSP430F44X ADC模块12位MSP430X32X ADC模块14位从以下ADC12结构图中可以看出,ADC12模块中是由以下部分组成:输入的16路模拟开关,ADC内部电压参考源,ADC12内核,ADC时钟源部分,采集与保持/触发源部分,ADC数据输出部分,ADC控制寄存器等组成。
输入的16路模拟开关16路模拟开关分别是由IC外部的8路模拟信号输入和内部4路参考电源输入及1路内部温度传感器源及AVCC-AVSS/2电压源输入。
外部8路从A0-A7输入,主要是外部测量时的模拟变量信号。
内部4路分别是Veref+ ADC内部参考电源的输出正端,Vref-/Veref- ADC内部参考电源负端(内部/外部)。
1路AVCC-A VSS/2电压源和1路内部温度传感器源。
片内温度传感器可以用于测量芯片上的温度,可以在设计时做一些有用的控制;在实际应用时用得较多。
而其他电源参考源输入可以用作ADC12的校验之用,在设计时可作自身校准。
ADC内部电压参考源ADC电压参考源是用于给ADC12内核作为一个基准信号之用的,这是ADC必不可少的一部分。
在ADC12模块中基准电压源可以通过软件来设置6种不同的组合。
AVCC(Vr+),Vref+,Veref+,AVSS(Vr-),Vref-/Vere f-。
ADC12内核ADC12的模块内核是共用的,通过前端的模拟开关来分别来完成采集输入。
ADC12是一个精度为12位的AD C内核,1位非线性微分误差,1位非线性积分误差。
内核在转换时会参用到两个参考基准电压,一个是参考相对的最大输入最大值,当模拟开关输出的模拟变量大于或等于最大值时ADC内核的输出数字量为满量程,也就是0xfff;另一个则是最小值,当模拟开关输出的模拟变量大小或等于最大值时ADC内核的输出数字量为最低量程,也就是0x00。
而这两个参考电压是可以通过软件来编程设置的。
ADC时钟源部分ADC12的时钟源分有ADC12OSC,ACLK,MCLK,SMCLK。
通过编程可以选择其中之一时钟源,同时还可以适当的分频。
采集与保持,触发源部分ADC12模块中有着较好的采集与保持电路,采用不的设置有着灵活的应用。
关于这方面的详情请参考手册上的寄存器说明,此部分我们日后再作补上。
ADC数据输出部分ADC内核在每次完成转换时都会将相应通道上的输出结果存贮到相应用通道缓冲区单元中,共有16个通道缓冲单元。
同时16个通道的缓冲单元有着相对应的控制寄存器,以实现更灵活的控制。
ADC控制寄存器ADC12CTL0 转换控制寄存器0ADC12CTL1 转换控制寄存器1ADC12IE 中断使能寄存器ADC12IFG 中断标志寄存器ADC12IV 中断向量寄存器ADC12MEM0-15 存储控制寄存器0-15ADC12MCTL0-15 存储控制寄存器0-15MSP430 ADC12模块结构图ADC12应有例程//******************************************************************************#include <msp430x14x.h>//********************************************//表区unsigned char number_table[]={'0','1','2','3','4','5','6','7','8','9'};unsigned char display_buffer[]={0x00,0x00,0x00,0x00,0xff};//*******************波特率***********300 600 1200 2400 4800 9600 19200 38400 76800 115200const//************************************[0]**[1]**[2]*[3]**[4]**[5]***[6]***[7]****[8]***[9]* unsigned char BaudrateUBR0[] ={0x6D,0x36,0x1B,0x0D,0x06,0x03, 0xA0, 0xD0, 0x68, 0x45}; unsigned const char BaudrateUBR1[] ={0x00,0x00,0x00,0x00,0x00,0x00, 0x01, 0x00, 0x00, 0x00}; unsigned const char BaudrateUMCTL[]={0x22,0xD5,0x03,0x6B,0x6F,0x4A, 0xC0, 0x40, 0x40, 0x4A};unsigned char timp;//变量区unsigned int ADC0 ;//子程序声明void init (void); //初始化void ADC12setup(void); //ADC12初始化void BaudrateSetup(unsigned char U0); //UART0初始化void data_converter(unsigned char *p,unsigned int vaule); //数据变换void send_data(unsigned char *p); //串行口发送数组//********************************************void main(void){init();//主循环for (;;){LPM0;ADC12CTL0 |= ADC12SC; //sampling open,AD转换完成后(ADC12BUSY=0),ADC12SC自动复位;while((ADC12IFG & BIT0) == 0); //等转换结束ADC0 = ADC12MEM0; //读转换数据值,同时清A DC12IFG0标志data_converter(display_buffer,ADC0); //数据变换send_data(display_buffer); //发送数据}}//******************************************************************************** void init(void){WDTCTL = WDTPW + WDTHOLD; // 停止WDTP1DIR=0x01;P1OUT=0x0f; //LED设置BaudrateSetup(6);ADC12setup();_EINT(); // 全局中断使能}//********************************************************************************** //串口接收中断,退出LPM0模式.#pragma vector=USART0RX_VECTOR__interrupt void usart0_rx (void){LPM0_EXIT;}//********************************************************************************** //ADC12初始化void ADC12setup(void){//ADC12设置**************************P6SEL |= 0x01; //使用A/D通道 A0ADC12CTL0 = ADC12ON ; //开ADC12内核,设SHT0=2 (N=4)ADC12CTL1 = SHP ; //SAMPCON信号选为采样定时器输出//ADC12内部参考电压设置ADC12CTL0 |= REF2_5V; //选用内部参考电压为2.5VADC12CTL0 |= REFON; //内部参考电压打开ADC12MCTL0 |= SREF_1; //R+=2.5V R-=VSS//转换允许ADC12CTL0 |= ENC ; //转换允许(上升沿)ADC0=0x00;}//********************************************************************************** //UART0初始化void BaudrateSetup(unsigned char U0){unsigned int i;if(U0>5) //当U0>5时,启用XT2{BCSCTL1 &= ~XT2OFF; //启动XT2,do{ IFG1 &= ~OFIFG; //清OSCFault标志for(i=0xFF;i>0;i--); //延时等待}while((IFG1 & OFIFG) != 0); //查OSCFault,为0时转换完成BCSCTL2 |= SELS; //SMCLK为XT2}//UART0P1OUT=0x00;if(U0>5){UTCTL0=SSEL1;} // 时钟源:SMCLKelse{UTCTL0=SSEL0;} // 时钟源:ACLKUCTL0 &= ~SWRST; // SWRST复位, USART允许UCTL0=CHAR; // 8bitME1|=UTXE0 + URXE0; // Enable Tx0,Rx0IE1|=URXIE0; // RX使能UBR00=BaudrateUBR0[U0]; // 低位分频器因子UBR10=BaudrateUBR1[U0]; // 高位分频器因子UMCTL0=BaudrateUMCTL[U0]; // 波特率调整因子P3SEL |= 0x30; // 将P3.4,5使用外围模块 = USART0 TXD/RXD P3DIR |= 0x10; // 将P3.4设为输出(发),P3.5默认为输入(收) }//**********************************************************************************//数据变换void data_converter(unsigned char *p,unsigned int value){unsigned int m,n,j=0;p[0]=number_table[value/1000];m=value%1000;p[1]=number_table[m/100];n=m%100;p[2]=number_table[n/10];j=n%10;p[3]=number_table[j/1];}//**********************************************************************************//串行口发送数组void send_data(unsigned char *p){unsigned int n;timp=RXBUF0;for(n=0;p[n]!=0xff;n++){while ((IFG1 & UTXIFG0) == 0); // USART0发送UTXIFG0=1,表示UTXBUF准备好发送一下字符TXBUF0 = p[n];}}//**********************************************************************************//ADC12模块例程结束。