UCA0CTL1 &= ~UCSWRST;// **Initialize USCI state machine**初始化释放,可以操作
IE2 |= UCA0RXIE;// Enable USCI_A0 RX interrupt接收中断使能
__bis_SR_register(LPM0_bits + GIE);// Enter LPM0, interrupts enabled
}
// Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
while (!(IFG2&UCA0TXIFG));// USCI_A0 TX buffer ready? 等待TX buffer为空
UCA0TXBUF = UCA0RXBUF;// TX -> RXed character发送接收到是数据
rev=UCA0RXBUF;
if(rev&0x01)
{
P1OUT |= BIT0;
putstr(string1);
putstr(string2);
}
else
P1OUT &= ~BIT0;
}
注意:关于波特率的设置这一块还没有看懂,但上面的例子总的设置是对的
值得说明的是:可以用定时器来实现串口通信功能,例子还没有看。
3,对于SPI和I2C,有时有可能会用于g2553和其他的一些芯片、设备的通信用,还没没仔细看。
(六),比较器AComparator_A+
1,是一个模拟电压比较器,主要功能是指出两个输入电压CA0和CA1的大小关系,然后由输出信号CAOUT输出。
2,输出:如果正端输入电压大于负端输入电压,输入为1。如果负端输入电压大于正端输入电压,输出为0;
3,最终输出信号的上升沿或下降沿可以设置为具有中断能力,中断响应后,硬件会自动清除中断标志位CAIFG,也可以被软件清除。
4,Comparator_A+支持精密的斜坡AD转换,供电电压检测和监视外部模拟信号。
5,比较器的其中一路可以接参考电压,有0.25VCC, 0.5VCC, 三极管的阀值电压0.55V
也可以两路信号都接外部的模拟信号。
6,更详细的内容,参见用户只能,下面的例子是简单的用比较器A比较两个输入模拟电压的高低,有CAOUT输出:
//主要功能是比较两个输入信号的大小关系
#include
void delay(void);// Software delay
void main (void)
{
WDTCTL = WDTPW + WDTHOLD;// Stop WDT
CACTL2 = P2CA4;// CA1/P1.1 = +comp 正输入端信号选择CA1,负输入端信号不连接外部输入信号
//其他位的设置为默认:比较器输出不滤波 , CAOUT为比较器的输出结果
CCTL0 = CCIE;// CCR0 interrupt enabled
TACTL = TASSEL_2 + ID_3 + MC_2;// SMCLK/8, cont-mode
_EINT();// enable interrupts
while (1)// Loop
{
//比较器A控制寄存器1 CACTL1采用的是默认设置:参考电压源VCAREF加到比较器的正输入端,内部参考源关,比较器关,
//中断不使能
CACTL1 = 0x00;// No reference voltage
_BIS_SR(LPM0_bits);// Enter LPM0
CACTL1 = CAREF0 + CAON;// 参考源为0.25*Vcc, Comp. on
_BIS_SR(LPM0_bits);// Enter LPM0
CACTL1 = CAREF1 + CAON;// 参考源为0.5*Vcc, Comp. on
_BIS_SR(LPM0_bits);// Enter LPM0
CACTL1 = CAREF1 + CAREF0 + CAON;//参考源为三极管的阀值电压 0.55V, Comp. on
_BIS_SR(LPM0_bits);// Enter LPM0
}
}
// Timer A0 interrupt service routine
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
_BIC_SR_IRQ(LPM0_bits);// Clear LPM0 bits from 0(SR)
}
7,也可以用比较器A监视供电电压,用0.25VCC和三极管的阀值电压0.55V进行比较,从而监视供电电压的高低,如果电压低于某个值时,可以做某种动作比如报警电池电量过低等。
(七),低功耗模式
1,TI msp430单片机是一个特别强调超低功耗的单片机系列。对于低功耗的实现,丰富的中断和合理的时钟系统是必须的,另外相对独立的外设,可以不在CPU的干预下独立地工作,这样减小了CPU的工作时间,也大幅降低了系统功耗。
2,msp430能够用中断迅速把CPU从低功耗模式中唤醒,唤醒时间小于1us。这就保证了系统的低功耗。让CPU工作在脉冲状态,最大限度地让CPU处于休眠状态,只有在一些需要CPU干预的操作或计算时,才把CPU唤醒。另外,把一些无关的外围模块也都关闭,使一些需要的模块尽量单独工作,从而可以把CPU休眠。合理地利用中断,在需要的时间唤醒cpu。
3,msp430应用系统价格和电流消耗等因素会影响CPU与外围模块对时钟的需求,所以系统使用不同的时钟信号:ACLK, MCLK, SMCLK。用户通过程序可以选择低频或高频,这样可以根据实际需要来选择合适的系统时钟频率,这3种不同的频率的时钟输出给出不同的模块,从而更合理地利用系统的电源,实现整个系统的超低功耗。
4,单片机的工作模式有:活动模式是(AM),低功耗模式0(LPM0)~低功耗模式4(LPM4)。不同的低功耗模式禁止不同的模块,适应不同的需求。
5,各种低功耗模式的配置有控制位:SCG1,SCG2,OscOff, CPUOff由软件来配置。