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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(实验6 实验名称基本时钟和低功耗模式Word文档格式.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验6 实验名称基本时钟和低功耗模式Word文档格式.docx

1、 图6-1 图6-2接到32.768KH晶振侧时,测得结果为32.77kHz,接到P2.6/P2.7侧,测得结果为890kHz。2)在debug下如图6-3,通过View/Register 更改System Clock模块控制寄存器值,分别置DIVA1、DIVA0=01、11;DIVS1、DIVS0=10、11;置LFXT1S0、LFXT1S0=00、10,记录示波器测量得到的ACLK(P1.0输出)和SMCLK(P1.4输出)的频率值,填写在表6-1、6-2、6-3中,掌握时钟模块各控制寄存器相关位的作用。图6-3 通过View/Register 更改System Clock模块控制寄存器值

2、表6-1 DIVAxx与ACLK关系DIVA1DIVA0ACLK频率值作用116.39kHzACLK二分频4.0963kHzACLK八分频表6-2 DIVSxx与SMCLK关系DIVS1DIVS0SMCLK频率值26.6kHzSMCLK四分频133.0kHzSMCLK八分频表6-3 LFXT1Sxx与ACLK关系LFXT1S1LFXT1S0时钟来源32.77kHz外部晶振11.762kHzVLOCLK3)分析上电复位后,CPU工作的时钟信号MCLK频率值是多少?根据上电复位后寄存器的值,可以发现上电复位后MCLK频率值实际上是与SMCLK频率值相等的(时钟源均为DCO,且均为一分频),而上电复

3、位后测得的SMCLK时钟频率为1.04MHz,故上电复位后MCLK频率值为1.04MHz。4)(提高)置RSEL3RSEL0=1111;DCO2DCO0=111;记录当前SMCLK的频率值。这是基本时钟模块提供的最高频率值。SMLCK的值为20.1MHz。3.掌握基本时钟模块的编程控制参看附录A实验板原理图,如图6-1用跳线将JP8中的插针信号接到晶振32.768Khz侧。编程控制基本时钟模块,设置ACLK分别为下面时钟频率,并通过P1.0输出ACLK,用示波器观察:1)ACLK=16.384Hz;(外部晶振二分频,约为32768Hz/2)ACLK的频率为32.77kHz。程序见程序清单中的程

4、序3.1.c。2)ACLK=VLOCLK/8;(内部VLOCLK 八分频,约为12KHz/8)ACLK的频率为1.4243kHz。程序见程序清单中的程序3.2.c。可否通过对时钟模块编程在引脚P2.4上输出ACLK? 为什么?不可以,因为引脚P2.4在硬件层面上并未与ACLK的输出引脚相连,所以无论如何对时钟模块进行编程都无法做到在引脚P2.4上输出ACLK。4.DCO出厂校验值的频率检测1)利用出厂校验值,编程使DCO分别为1MHz、16MHz,通过P1.4输出,并用示波器测量实际值。 答:1MHz的实际值为960kHz,16MHz的实际值为15.9MHz。程序见程序清单中的程序4.1.c。

5、2)(提高)在实验1例程test_2553.c基础上,分别编程使主系统时钟工作在 (1) MCLK = 复位频率/8 约100KHz;(2) MCLK=DCO=16MHz; 两种不同MCLK频率下,观察灯的亮灭速度有何不同,掌握主系统时钟的变化对程序执行速度的影响。 答:在MCLK = 复位频率/8时,灯的亮灭速度较慢,在MCLK=DCO=16MHz时,灯的亮灭速度较快。可见主系统时钟频率越高,程序执行的速度越快。程序见程序清单中的程序4.2.c。5.低功耗模式学习程序L6_LPM.c见下,用跳线将P2.3与L4短接,将P2.4用长杜邦线与buzz短接,P1.1与K2短接,用示波器分别观察P1

6、.0、P1.4输出的ACLK和SMCLK,了解低功耗模式的进入和退出。1)运行程序,观察现象,并记录进入低功耗前、进入低功耗后、响应中断后、退出中断后的时钟、发光二极管和蜂鸣器状态,并做分析。进入低功耗前:LED灯闪亮五次,随后蜂鸣器鸣响三次,ACLK=32.77kHz,SMCLK=1.09MHz。进入低功耗后:LED灯不亮,蜂鸣器不响,ACLK与SMCLK均无信号。响应中断后:LED灯不亮,蜂鸣器鸣响三次,ACLK=32.81kHz,SMCLK=1MHz。退出中断后:发生以上现象的原因是在程序执行至LPM4前,程序正常执行,时钟有信号;程序执行至LPM4后,单片机进入了LPM4,CPU、MC

7、LK、SMCLK、DCO均禁止,故程序不再向下执行,时钟无信号;中断发生之后单片机被唤醒,恢复活动模式,中断子程开始执行,时钟有信号;在退出中断之后单片机又回到了LPM4,故程序不再向下执行,时钟无信号。2)如果中断程序中有LPM4_EXIT 语句,运行的结果会有什么不同?请分析。在退出中断之后,LED闪亮五次,蜂鸣器不响,ACLK=32.77kHz,SMCLK=1.06MHz,随后LED灯不亮,蜂鸣器不响,ACLK与SMCLK均无信号。因为中断子程中关闭了低功耗模式,所以中断子程结束之后单片机依旧为活动模式,所以程序继续向下执行,时钟有信号。不过由于之后程序经过循环体的循环又执行了LPM4;

8、语句,故单片机又回到了LPM4,故程序不再向下进行,时钟无信号。6.(提高)利用输出的时钟信号做中断源,实现定时功能将任务3 中P1.0输出的ACLK=VLOCLK/8时钟信号,作为P1.7的中断申请信号,用导线将P1.7与P1.0相连即可,在中断函数中设置一个计数变量,计数中断函数被执行的次数,如果ACLK的频率值为1.5KHz(实验时,以实测的为准),那么中断函数每被执行1500次表示一秒时间到。利用该定时功能,将8个发光二级管设计成一个秒表,显示秒值,每秒改变一次8个发光二级管的显示。程序见程序清单中的程序6.1.c。如果要每隔5秒蜂鸣器响一声,如何在任务6的基础上编程实现?程序见程序清

9、单中的程序6.2.c。程序清单:程序2.c#include io430.hint main( void ) / Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD;/P1.0输出时钟ACLK, P1.4输出时钟SMCLK P1SEL |=BIT0+BIT4; P1SEL2 &=(BIT0+BIT4); P1DIR |=BIT0+BIT4; while(1);程序3.1.cunsigned int i; while(IFG1 & OFIFG)!=0) IFG1 &=OFIFG; for(i=0;i=0xff

10、ff;i+); ; BCSCTL3 |= LFXT1S_0; BCSCTL1 |= DIVA_1;程序3.2.c BCSCTL3 |= LFXT1S_2; BCSCTL1 |= DIVA_3;程序4.1.c /(1)使DCO为1MHz if(CALBC1_1MHZ!= 0xff) BCSCTL1=CALBC1_1MHZ; DCOCTL=CALDCO_1MHZ; /(2)使DCO为16MHz /* if(CALBC1_16MHZ! BCSCTL1=CALBC1_16MHZ; DCOCTL=CALDCO_16MHZ; */程序4.2.cint main ( void ) unsigned int

11、j; /定义延时变量 /关闭看门狗/(1)MCLK = 复位频率/8BCSCTL2 |= DIVM_3;/(2)MCLK=DCO=16MHz */ P2SEL &=(BIT2+BIT5); /设置引脚P2.2和P2.5为基本输入输出功能 P2SEL2 & P2OUT |=BIT2+BIT5; /设置引脚P2.2和P2.5输出的初值为1 P2DIR |=BIT2+BIT5; /设置端口P2.2和P2.5为输出方向 for (;) /主循环 P2OUT =(BIT2+BIT5); /将P2.2和P2.5的值取反后输出 for (i=0;0xffff; /延时程序L6_LPM.cin430.hvoi

12、d delay( unsigned int i) /延时函数 unsigned int k; /定义局部变量 for (k=0;ki;k+);void Blink( ) /LED闪 unsigned int i;5;i+) P2OUT &= BIT3; delay(0xe000); P2OUT |=BIT3;void Buzz( ) /蜂鸣响3;= BIT4; delay(0xf800); P2OUT |=BIT4; WDTCTL = WDTPW + WDTHOLD;/设置端口P2.3输出,控制LED,P2.4输出,控制蜂鸣器 =(BIT3+BIT4); P2SEL2& P2OUT |= BI

13、T3+BIT4; P2DIR |= BIT3+BIT4; /设置端口P1.1允许中断 P1SEL &=BIT1; P1REN |=BIT1; P1OUT |=BIT1; P1DIR & P1IES |=BIT1; P1IFG & P1IE |=BIT1; _EINT(); Blink(); Buzz();) /主循环 LPM4; / #pragma vector=PORT1_VECTOR _interrupt void port_ISR( ) Buzz(); P1IFG&=(BIT1); /清中断标志 /LPM4_EXIT;程序6.1.c/P1.0输出时钟ACLK P1SEL |=BIT0;=

14、BIT0; P1DIR |=BIT0; /设置输入输出 P1SEL&=BIT7; P1SEL2& P1DIR& P1DIR |=BIT1; P2SEL = 0x00; P2SEL2 = 0x00; P2DIR = 0xff; /设置时钟 /设置中断 P1IES|=BIT7; P1IE|=BIT7; LPM0;unsigned int count = 0;unsigned char num = 0;#pragma vector=PORT1_VECTOR/置P1中断向量_interrupt void LED() count+; if(count=1424)/1424根据之前的实测值确定 num+; P2OUT=num; count=0;程序6.2.cunsigned int i,count = 0;unsigned char num = 0,buzz=0; if(count=1424)/1424根据之前的实测值确定 buzz+; if(buzz=5) P1OUT&=3000; buzz=0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1