1、MSP430单片机基础实验手册1、MSP430单片机基础实验1.1、IO口实验实验目的:学会MSP430单片机IO口的常规操作。实验原理开发板上的3个LED灯和IO口的对应关系如下:POWERP1.7 ISO14443AP1.6 ISO15693P1.4根据原理图分析,只需要将对应IO输出为低电平即可使其对应三极管导通,达到点亮对应LED的目的。关键代码分析#include volatile unsigned int i; / volatile to prevent optimizationint main(void) WDTCTL = WDTPW + WDTHOLD; / Stop watc
2、hdog timer P1DIR |= 0x80; / Set P1.7 to output direction for (;) P1OUT = 0x80; / Toggle P1.7 using exclusive-OR i = 50000; / Delay do (i-); while (i != 0); 对应工程详见:感知RF2实验光盘2013RFID技术实验1-MSP430单片机基础实验io实验结果POWER对应的LED灯闪烁。作业1、对其他连个灯进行对应操作;2、流水灯显示编程控制。1.2、定时器实验实验目的:学会MSP430单片机定时器常规配置及中断操作。实验原理采用定时器TA溢出
3、中断对LED灯进行取反操作。关键代码分析#include int main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT P1DIR |= 0x80; / P1.0 output TACCTL0 = CCIE; / TACCR0 interrupt enabled TACCR0 = 50000; TACTL = TASSEL_2 + MC_2; / SMCLK, contmode _bis_SR_register(LPM0_bits + GIE); / Enter LPM0 w/ interrupt/ Timer A0 interrupt service
4、 routine#pragma vector=TIMERA0_VECTOR_interrupt void Timer_A (void) P1OUT = 0x80; / Toggle P1.7 TACCR0 += 50000; / Add Offset to TACCR0对应工程详见感知RF2实验光盘2013RFID技术实验1-MSP430单片机基础实验timer实验结果LED灯快速闪烁,改变TACCR0值,闪烁时间间隔改变。作业1、用定时器实现流水灯显示;2、精确定时1秒钟LED闪烁一次。1.3、串口实验实验目的:学会MSP430单片机串口基本配置和收发数据基本编程控制。实验原理将串口0波特率
5、设置为9600,通过串口接收数据中断,将接收的数据通过串口发出,并在串口调试助手上观察。串口原理图设计如下所示。 注意:这里采用了CP2102串口转USB芯片。所以进行该实验时,必须确保CP2102驱动已经正确安装。安装过程详见0.2.2节。关键代码分析#include int main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT if (CALBC1_1MHZ=0xFF) / If calibration constant erased while(1); / do not load, trap CPU! DCOCTL = 0; / Select l
6、owest DCOx and MODx settings BCSCTL1 = CALBC1_1MHZ; / Set DCO DCOCTL = CALDCO_1MHZ; P3SEL = 0x30; / P3.4,5 = USCI_A0 TXD/RXD UCA0CTL1 |= UCSSEL_2; / SMCLK UCA0BR0 = 104; / 1MHz 9600 UCA0BR1 = 0; / 1MHz 9600 UCA0MCTL = UCBRS0; / Modulation UCBRSx = 1 UCA0CTL1 &= UCSWRST; / *Initialize USCI state mach
7、ine* 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? UCA
8、0TXBUF = UCA0RXBUF; / TX - RXed character实验结果作业1、 设置串口波特别为115200进行数据传输;2、 编写串口发送多字节数据函数。1.4、BEEP实验实验目的:学会通过IO口驱动蜂鸣器。实验原理蜂鸣器原理图如下所示。 通过原理图可以看出。只需要BUZZER-IN端输入为低电平即可驱动蜂鸣器进行蜂鸣。BUZZER-IN对应MSP430单片机的P3.6引脚,详见0.1.1节的MSP430F2370控制单元原理图所示。 关键代码分析#include int main(void) WDTCTL = WDTPW + WDTHOLD; / Stop WDT P
9、3DIR |= 0x40; / Set P1.0 to output direction TBCTL = TBSSEL_2 + MC_2 + TBIE; / SMCLK, contmode, interrupt _bis_SR_register(LPM0_bits + GIE); / Enter LPM0 w/ interrupt/ Timer_B3 Interrupt Vector (TBIV) handler#pragma vector=TIMERB1_VECTOR_interrupt void Timer_B(void) switch (_even_in_range(TBIV, 14)
10、/ Efficient switch-implementation case 2: break; / TBCCR1 not used case 4: break; / TBCCR2 not used case 14: P3OUT = 0x40; / overflow break; 这里采用定时器定时让P3.6输出PWM信号。实验结果 烧入程序运行后,蜂鸣器进行间断蜂鸣。作业1、可以尝试输出一段音乐。1.5、WDT实验实验目的:学会看门狗定时器的使用。实验原理看门狗定时器(WDT)是MSP430系列单片机中常用的一种部件。在工业现场,往往会由于供电电源、空间电磁干扰或其他原因引起强烈的干扰噪声。
11、这些干扰作用于数字器件,极易使其产生误动作,从而失去应有的控制功能,引起MSP430发生“程序跑飞”事故。若不进行有效的处理,程序就不能回到正常的状态,从而失去应有的控制功能。看门狗定时器正是为了解放这类问题而产生的,尤其是在具有循环结构的程序任务中更为有效。在正常操作器件,一次WDT 定时时间到,将产生一次器件复位。如果通过编制程序使WDT 定时时间稍大于程序执行一遍所用的时间时,并且程序执行过程中都有对看门狗定时器清零的指令,使计数器重新计数,则程序正常执行时,就会在WDT定时时间到达之前对WDT清零,不会产生WDT溢出,如果由于干扰使程序跑飞,则不会在WDT定时时间到达之前执行WDT清零
12、指令,WDT就会产生溢出,从而产生系统复位CPU 需用重新运行用户程序,这样程序就可以又恢复正常运行状态。MSP430看门狗除了具有上述系统监测的特定用途之外,还可以作为内部定时器来使用,当选择的时间到达之后,和其他定时器一样产生一个定时中断。此外WDT 还可以被完全停止活动以支持超低功耗应用。1 看门狗模式由于在上电复位或系统复位时,WDTCNT和WDTCL两寄存器内容被全部清除(晶振为32768Hz,SMCLK=1MHz):复位后,工作在看门狗模式,以ACLK为时钟,WDT定时时间为32ms。上述情况将导致WDT的运行自动进入看门狗模式。所以,用户软件一般都需要进行如下操作: 进行WDT的
13、初始化:设置合适的时间(通过SSEL、IS0、IS1位来选定)。 周期性的对WDTCNT清零:防止WDT溢出,保证WDT的正确使用。 在看门狗模式下,如果计数器超过了定时时间,就会产生复位和激活系统上电清除信号,系统从上电复位的地址重启动。 如果系统不用看门狗功能,应该在程序开始处禁止看门狗功能。2 定时器模式WDTCTL 的WDTTMSEL 位置位选择定时器模式。这一模式产生选定时间的周期性中断。定时时间可以通过WDTCTL的WDTCNCTL位置位来开始。 改变定时时间而不同时清楚WDTCNT 将导致不可预料的系统立即复位或中断。定时时间可以通过WDTCTL的CNCTL位置位来开始。 如果先
14、后分别进行清除和定时时间选择,则可能立即引起不可预料的系统复位或中断。 另外,在终场工作时。改变时钟源可能导致WDTCNT额外的计数时钟。3 低功耗模式当系统不需要WDT做看门狗和定时器时,可关闭WDT以减小功耗。控制位WDTHOLD=1时关闭WDT,这时看门狗停止工作。关键代码分析使用看门狗定时器功能产生一个方波(周期的取反P1.7)。#include int main(void) WDTCTL = WDT_MDLY_32; / Set Watchdog interval to 27ms IE1 |= WDTIE; / Enable WDT interrupt P1DIR |= 0x80;
15、/ Set P1.7 to output direction _bis_SR_register(LPM0_bits + GIE); / Enter LPM0 w/ interrupt/ Watchdog Timer interrupt service routine#pragma vector=WDT_VECTOR_interrupt void watchdog_timer(void) P1OUT = 0x80; / Toggle P1.7 using exclusive-OR实验结果POWER对应LED灯进行快速闪烁。作业1、将看门狗设置为看门狗模式进行编程实验。更多源文件详见:感知RF2实验光盘2013RFID技术实验1-MSP430单片机基础实验C目录下。可以自行建立工程进行对应实验。