ImageVerifierCode 换一换
格式:DOCX , 页数:53 ,大小:3.22MB ,
资源ID:13343852      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-13343852.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(中国石油大学胜利学院MSP430期末考试题库.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

中国石油大学胜利学院MSP430期末考试题库.docx

1、中国石油大学胜利学院MSP430期末考试题库MSP430实验一1. 熟悉开发环境,掌握USB下载软件的方法。2. 用汇编语言实现:P2.0-P2.7依次点亮(参考开发板原理图)要求先软件仿真调试程序,无误后再下载到开发板运行3. 用C语言实现上述功能,其它要求同上。汇编语言参考程序清单:#include ;包含msp430.h文件 ; NAME main ;模块名称定义 ;PUBLIC main ; ORG 0FFFEh ;中断向量表复位向量地址 DC16 init ;存放用户程序入口地址,复位后开始执行 RSEG DATA16_C ;在ROM中存放LED显示值LEDdata DB 01h,0

2、2h,04h,08h,10h,20h,40h,80h RSEG CSTACK ;定义堆栈段 RSEG CODE定义代码段init: MOV #SFE(CSTACK), SP ;初始化堆栈指针main: NOP ; main program MOV.W #WDTPW+WDTHOLD,&WDTCTL ;关闭看门狗定时器 MOV.b #0, &P2SEL ;设置P1为基本I/O MOV.b #0FFh, &P2DIR ;设置P1为输出端口 MOV.b #0, &P2OUT ;使8个LED全灭again: MOV #LEDdata,R4 ;取输出表格首地址 MOV #8, R5 ;循环控制次数next

3、: MOV.b R4+, &P2OUT ;取表中的某一种状态输出 CALL #delay ;延时 DEC R5 ;判断8种状态是否输出完 JNZ next ;否,继续 JMP again ;重新从表头开始delay: PUSH SR ;延时 mov #20,R7WAIT1: MOV #0FFFFh,R6 ;A123: DEC R6 JNZ A123 dec R7 JNZ WAIT1 POP SR RET END ; C 语言参考程序:#include msp430f149.h void delay(); int main( void ) unsigned char LEDdata =1, 2,

4、 4,8,0x10,0x20,0x40,0x80; unsigned int i; WDTCTL = WDTPW + WDTHOLD; /关闭看门狗 P2SEL=0; /设置P1为基本I/O P2DIR=0xFF; /设置P1为输出端口 P2OUT=0; /使8个LED全灭 while(1) /无限循环 for ( i=0; i8; i+) /8个LED依次点亮 P2OUT=LEDdatai; / delay(); /调用延时子程 ; void delay() unsigned int i; /定义函数变量for (i=0;i0xffff;i+); /延时MSP430实验2P1.0作为中断输入

5、端,下降沿触发,当有中断请求时取反P2.0状态。P1.0的硬件接线参考原理图。1、用汇编语言实现(参考程序如下)#include msp430.hNAME mainPUBLIC mainORG 0FFFEhDC16 init ;set reset vector to init labelORG 0FFE0h+PORT1_VECTOR ;中断向量表首地址+端口1中断偏址DC16 intP1 ;set port1 vector to intP1 labelRSEG CSTACK ;定义堆栈段RSEG CODE ;代码段init: MOV #SFE(CSTACK), SP ;初始化SPmain: N

6、OPMOV.w #WDTPW+WDTHOLD, &WDTCTL ; 关闭看门狗BIC.b #BIT0, &P1IE ;关闭P1.0中断允许BIC.b #BIT0, &P2SEL ;设置P2.0为基本I/O功能BIS.b #BIT0, &P2DIR ;设置P2.0为输出BIC.b #BIT0, &P2OUT ;置P2.0输出初值为0BIC b #BIT0, &P1SEL ;置P1.0作为基本I/O端口BIC.b #BIT0, &P1DIR ;置P1.0为输入BIS.b #BIT0, &P1IES ;置P1.0下降沿作中断源BIC.b #BIT0, &P1IFG ;清P1.0中断标志BIS.b #

7、BIT0, &P1IE ;打开P1.0中断允许EINT ;允许可屏蔽中断GIE=1JMP $ ;主程循环intP1: BIT.b #BIT0, &P1IFG ;判断是否是P1IFG.0中断标志JZ exit ;不是则跳转XOR.b #BIT0, &P2OUT ;对P2.0取反BIC.b #BIT0, &P1IFG ;清P1.0中断标志exit: RETIEND2.用C语言实现(参考程序如下)#include msp430x14x.hint main( void ) WDTCTL = WDTPW + WDTHOLD; /关闭看门狗_DINT(); /禁止可屏蔽中断GIE=0P1IE |=BIT0

8、; / 关闭P1.0中断允许P2SEL|=BIT0; /设置P2.0为基本I/O功能P2DIR|=BIT0; /设置P2.0为输出 P2OUT &=BIT0; /置P2.0输出初值为0 P1SEL&=BIT0; /置P1.0作为基本I/O端口 P1DIR=0XFE; /置P1.0为输入 P1IES&=BIT0; /置P1.0下降沿作中断源 P1IFG=0X00; /清P1.0中断标志 P1IE|=BIT0; /打开P1.0中断允许_EINT(); /允许可屏蔽中断GIE=1while(1) ; /主程循环#pragma vector=PORT1_VECTOR /置P1中断向量_interrup

9、t void port_int(void) /中断子程 if (P1IFG=BIT0) /判断是否是P1IFG.0中断标志P2OUT =BIT0; /对P2.0取反P1IFG &=BIT0; /清P1.0中断标志 修改程序,使P1.0为上升沿触发中断,观察程序运行的差异。串行口实验#include void main(void) /关电平转换 WDTCTL = WDTPW + WDTHOLD; / Stop WDT P3SEL |= 0x30; / P3.4,5 = USART0 TXD/RXD ME1 |= UTXE0 + URXE0; / Enable USART0 TXD/RXD UCT

10、L0 |= CHAR; / 8-bit character UTCTL0 |= SSEL0; / UCLK = ACLK UBR00 = 0x0D; / 32k/2400 - 13.65 UBR10 = 0x00; / UMCTL0 = 0x6B; / Modulation UCTL0 &= SWRST; / Initialize USART state machine IE1 |= URXIE0; / Enable USART0 RX interrupt/ Mainloop for (;) _BIS_SR(LPM3_bits + GIE); / Enter LPM3 w/interrupt

11、while (!(IFG1 & UTXIFG0); / USART0 TX buffer ready? TXBUF0 = RXBUF0; / RXBUF0 to TXBUF0 / UART0 RX ISR will for exit from LPM3 in Mainloop#pragma vector=UART0RX_VECTOR_interrupt void usart0_rx (void) _BIC_SR_IRQ(LPM3_bits); / Clear LPM3 bits from 0(SR)实验3系统时钟部分:注:DCOCTL:地址为056H,PUC后的值为060HBCSTCL1:地址

12、为057H,PUC后的值为084HBCSTCL2 :地址为058H,PUC后值为00H怎样改变系统时钟? 因为PUC信号之后,DCOCLK被自动选做MCLK时钟信号,根据需要,MCLK的时钟源可以另外设置为LFXT1或者XT2.设置顺序如下:1.复位OscOff;2.清除OFIFG;3.延时等待至少50us;4.再次检查OFIFG,如果仍然置位,则重复3,4步骤,直到OFIFG=0为止。MSP430x14x与时钟模块有关的几个引脚引脚名称引脚序号第二功能P1.4/SMCLK12SMCLK信号输出P2.0/ACLK20ACLK信号输出P5.4/MCLK48MCLK信号输出P5.5/SMCLK49

13、SMCLK信号输出P5.6/ACLK50ACLK信号输出XIN8晶体振荡器XT1的输入口XOUT/TCLK9晶体振荡器XT1的输出口或测试时钟输入口XT2IN53晶体振荡器XT2的输入口XT2OUT52晶体振荡器XT2的输出口P2.5/Rosc25外界一电阻以确定DCO的工作频率基础时钟模块试验程序1: 设MCLK=XT2,SMCLK=DCOCLK,将MCLK由5.4输出程序如下:#include void main(void) unsigned int i; WDTCTL = WDTPW + WDTHOLD; /停止看门狗 P5DIR |= 0X10; /设置P5.4为输出 P5SEL |=

14、 0X10; /设置P5.4为MCLK输出 BCSCTL1 &= XT2OFF; /设置XT2为有效 do IFG1 &= OFIFG; /清除振荡器失效标志 for(i = 0xFF;i0;i-); /稳定时间 while(IFG1 & OFIFG) != 0); /如果振荡器失效标志存在则继续循环。 BCSCTL2 |= SELM1; /设置MCLK = XT2 for(;);基础时钟模块试验程序2: 设置ACLK=MCLK=LFXT1=LF,将MCLK通过P5.4输出。#include void main(void) unsigned int i; WDTCTL = WDTPW + WD

15、THOLD; /停止看门狗 / P5DIR |= 0X10; /设置P5.4为输出 P5SEL |= 0X10; /设置P5.4为MCLK输出 BCSCTL1 &= XTS; /设置LFXT1为低速模式 do IFG1 &= OFIFG; /清除振荡器失效标志 for(i = 0xFF;i0;i-); /稳定时间 while(IFG1 & OFIFG) != 0); /如果振荡器失效标志存在则继续循环 BCSCTL2 |= SELM1+SELM0; /设置MCLK=LFXT1 for(;);低功耗部分:试验程序1:#include void main(void) BCSCTL1 |= DIVA

16、_2; / ACLK/4 WDTCTL = WDT_ADLY_1000; / WDT 1s/4 interval timer IE1 |= WDTIE; / Enable WDT interrupt P3DIR |= BIT1; / Set P3.1 to output direction P3OUT &= BIT1; / Set P3.1 to 0 while(1) int i; _BIS_SR(LPM3_bits + GIE); / Enter LPM3 P3OUT |=BIT1; / Set P3.1 LED on for (i = 5000; i0; i-); / Delay P3OU

17、T &= BIT1; / Clear P3.1 LED off #pragma vector=WDT_VECTOR_interrupt void watchdog_timer (void) _BIC_SR_IRQ(LPM3_bits) / Clear LPM3 bits from 0(SR)看门狗定时器:看门狗定时器实验程序:# include void main(void) WDTCTL = WDT_MDLY_32; / 定时周期为32msIE1 |= WDTIE; / 使能WDT中断 P1DIR |= 0x01; / P1.0输出 _EINT(); / 系统中断允许 for (;) _BI

18、S_SR(CPUOFF); / 进入 LPM0 _NOP(); / 看门狗中断服务子程序#pragma vector= WDT_VECTOR_interrupt void watchdog_timer (void) P1OUT = 0x01; / P1.0取反实验5 (定时器部分)相关寄存器一、1、分析给定程序,在重要语句后加上注释,2、改变定时器的时钟源,计算相关引脚的翻转频率3、改变定时器的计数模式,(增计数或连续计数)4、开放捕获比较模块1和模块2的中断,要求模块1的翻转频率为模块0的一倍;模块2是模块1的一倍。5、若定时器选用辅助时钟,计数器采用增模式计数,利用模块0的中断使P20的翻

19、转频率为100HZ. #include void main(void) WDTCTL = WDTPW + WDTHOLD; / P6DIR |= BIT2;P6OUT |= BIT2; /关电平转换 P2DIR |= BIT0+BIT7; / CCTL0 = CCIE; / CCR0 interrupt enabled CCR0 = 33; / TACTL = TASSEL_1 + MC_1; / _BIS_SR(LPM0_bits + GIE); / / Timer A0 interrupt service routine#pragma vector=TIMERA0_VECTOR /_int

20、errupt void Timer_A (void) P2OUT = BIT0; / CCR0 += 32768; / #pragma vector=TIMERA1_VECTOR /_interrupt void Timer_A1 (void) switch(TAIV) case 0x02:break; / case 0x04:break; / case 10:P2OUT=BIT7; / break; 二、实验要求:1、示波器分别连接P1.2和P1.3,改变CCR1和CCR2观察占空比的变化。2、改变CCR0的值,观察PWM的周期或频率的变化。3、修改如下程序,使PWM的频率为100HZ,占空

21、比为50.#include Void main(void)WDTCTL=WDTPW+WDTHOLD;P1DIR|=0X0C;PISEL|=0X0C; /P1.2和P1.3为模块功能CCR0=512-1; /PWM的宽度CCTL1=OUTMOC_7; /CCR1的输出单元P1.2复位/置位模式CCR1=384; CCTL2=OUTMOD_7;CCR2=128;TACTL=TASSEL_1+MC_1;_BIS_SR(LPM3_bits );三、CCR0捕获比较寄存器的捕获功能应用基本原理:每产生一次上升沿,在中断服务程序中取反P0.7,用示波器测量验证捕获信号的周期。实验要求:用导线连接P2.0P

22、1.1,示波器接在P2.7端口。 改变辅助时钟的频率被测信号的周期。#include unsigned int new_cap=0;unsigned int old_cap=0;unsigned int cap_diff=0;unsigned int diff_array16;unsigned int capture_array16;unsigned char index=0;unsigned char count=0;void main(void) volatile unsigned int i;WDTCTL=WDTPW+WDTHOLD;for(i=0;i/ | | 2400 - 8N1/

23、| P3.5|-/ M. Buccini/ Texas Instruments Inc./ Feb 2005/ Built with IAR Embedded Workbench Version: 3.21A/*#include void main(void) P6DIR |= BIT2;P6OUT |= BIT2; /关电平转换 WDTCTL = WDTPW + WDTHOLD; / Stop WDT P3SEL |= 0x30; / P3.4,5 = USART0 TXD/RXD ME1 |= UTXE0 + URXE0; / Enable USART0 TXD/RXD UCTL0 |=

24、CHAR; / 8-bit character UTCTL0 |= SSEL0; / UCLK = ACLK UBR00 = 0x0D; / 32k/2400 - 13.65 UBR10 = 0x00; / UMCTL0 = 0x6B; / Modulation UCTL0 &= SWRST; / Initialize USART state machine IE1 |= URXIE0; / Enable USART0 RX interrupt/ Mainloop for (;) _BIS_SR(LPM3_bits + GIE); / Enter LPM3 w/interrupt while (!(IFG1 & UTXIFG0); / USART0 TX buffer ready? TXBUF0 = RXBUF0; / RXBUF0 to TXBUF0 / UART0 RX ISR will for exit from LPM3 in Mainloop#pragma vector=UART0RX_VECTOR_interrupt voi

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2