实验6实验名称-基本时钟和低功耗模式_第1页
实验6实验名称-基本时钟和低功耗模式_第2页
实验6实验名称-基本时钟和低功耗模式_第3页
实验6实验名称-基本时钟和低功耗模式_第4页
实验6实验名称-基本时钟和低功耗模式_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-!实验名称:基本时钟和低功耗模式姓名: 学号:实验班号: 机器号:一.实验目的了解MSP430Gxxx基本时钟模块的工作原理,掌握其控制方法;感谢阅读掌握利用时钟信号和中断技术实现定时功能的方法;3.掌握低功耗模式控制方法。二.实验任务数字示波器的使用(在实验5中已完成)1)将信号源的波形在示波器上显示出来,掌握测量周期、频率、峰峰值的方法;精品文档放心下载2)用导线将实验板的地信号与示波器的地信号相连,测量实验板上的Vcc电源信号是否正常。精品文档放心下载测试上电复位系统ACLK、和SMCLK时钟频率,了解基本时钟模块控制寄存器各位作用。感谢阅读新创建一个MSP430G2553项目,在给出的main.c基础上,编程输出单片机上电复位后的ACLK、和SMCLK时钟,用示波器测量其频率值,记录下来。精品文档放心下载答:上电复位后的ACLK时钟频率为32.77kHz谢谢阅读上电复位后的SMCLK时钟频率为1.04MHz精品文档放心下载程序见程序清单中的程序2.c思考:将实验板上JP8中间的两个插针接到:32.768KH晶振侧,如图6-1;P2.6/P2.7侧,如图6-2。测得ACLK的结果有何不同?图6-1 图6-2答:接到32.768KH晶振侧时,测得结果为32.77kHz,接到P2.6/P2.7侧,测得结果为890kHz。谢谢阅读在debug下如图6-3,通过View/Register更改SystemClock模块控制寄存器值,分别置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更改SystemClock模块控制寄存器值感谢阅读6-1DIVAxx与ACLK关系DIVA1DIVA0ACLK频率值作用0116.39kHzACLK二分频114.0963kHzACLK八分频6-2DIVSxx与SMCLK关系DIVS1DIVS0SMCLK频率值作用1026.6kHzSMCLK四分频11133.0kHzSMCLK八分频6-3LFXT1Sxx与ACLK关系LFXT1S1LFXT1S0ACLK频率值时钟来源0032.77kHz外部晶振1011.762kHzVLOCLK分析上电复位后,CPU工作的时钟信号MCLK频率值是多少?谢谢阅读答:根据上电复位后寄存器的值,可以发现上电复位后MCLK频率值实际上是与SMCLK频率值相等的(时钟源均为DCO,且均为一分频),而上电复位后测得的SMCLK时钟频率为1.04MHz,故上电复位后MCLK频率值为1.04MHz。精品文档放心下载(提高)置RSEL3~RSEL0=1111;DCO2~DCO0=111;记录当前SMCLK的频率值。这是基本时钟模块提供的最高频率值。谢谢阅读答:SMLCK的值为20.1MHz。掌握基本时钟模块的编程控制参看附录A实验板原理图,如图6-1用跳线将JP8中的插针信号接到晶振32.768Khz侧。编程控制基本时钟模块,设置ACLK分别为下面时钟频率,并通过P1.0输出ACLK,用示波器观察:谢谢阅读1)ACLK=16.384Hz;(外部晶振二分频,约为32768Hz/2)答:ACLK的频率为32.77kHz。谢谢阅读程序见程序清单中的程序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。谢谢阅读DCO出厂校验值的频率检测1)利用出厂校验值,编程使DCO分别为1MHz、16MHz,通过P1.4输出,并用示波器测量实际值。精品文档放心下载答:1MHz的实际值为960kHz,16MHz的实际值为15.9MHz。感谢阅读程序见程序清单中的程序4.1.c。2)(提高)在实验1例程test_2553.c基础上,分别编程使主系统时钟工作在(1)MCLK=复位频率/8约100KHz;(2)MCLK=DCO=16MHz;两种不同MCLK频率下,观察灯的亮灭速度有何不同,掌握主系统时钟的变化对程序执行速度的影响。谢谢阅读答:在MCLK=复位频率/8时,灯的亮灭速度较慢,在MCLK=DCO=16MHz时,灯的亮灭速度较快。可见主系统时钟频率越高,程序执行的速度越快。程序见程序清单中的程序4.2.c。精品文档放心下载低功耗模式学习程序L6_LPM.c见下,用跳线将P2.3与L4短接,将P2.4用长杜邦线与buzz短接,P1.1与K2短接,用示波器分别观察P1.0、P1.4输出的ACLK和SMCLK,了解低功耗模式的进入和退出。感谢阅读运行程序,观察现象,并记录进入低功耗前、进入低功耗后、响应中断后、退出中断后的感谢阅读时钟、发光二极管和蜂鸣器状态,并做分析。答:进入低功耗前:LED灯闪亮五次,随后蜂鸣器鸣响三次,ACLK=32.77kHz,SMCLK=1.09MHz。感谢阅读进入低功耗后:LED灯不亮,蜂鸣器不响,ACLK与SMCLK均无信号。谢谢阅读响应中断后:LED灯不亮,蜂鸣器鸣响三次,ACLK=32.81kHz,SMCLK=1MHz。谢谢阅读退出中断后:LED灯不亮,蜂鸣器不响,ACLK与SMCLK均无信号。感谢阅读发生以上现象的原因是在程序执行至LPM4前,程序正常执行,时钟有信号;程序执行至LPM4后,单片机进入了LPM4,CPU、MCLK、SMCLK、DCO均禁止,故程序不再向下执行,时钟无信号;中断发生之后单片机被唤醒,恢复活动模式,中断子程开始执行,时钟有信号;在退出中断之后单片机又回到了LPM4,故程序不再向下执行,时钟无信号。谢谢阅读如果中断程序中有LPM4_EXIT语句,运行的结果会有什么不同?请分析。谢谢阅读答:在退出中断之后,LED闪亮五次,蜂鸣器不响,ACLK=32.77kHz,SMCLK=1.06MHz,随后LED灯不亮,蜂鸣器不响,ACLK与SMCLK均无信号。感谢阅读因为中断子程中关闭了低功耗模式,所以中断子程结束之后单片机依旧为活动模式,所以程序继续向下执行,时钟有信号。不过由于之后程序经过循环体的循环又执行了LPM4;语句,故单片机又回到了LPM4,故程序不再向下进行,时钟无信号。感谢阅读(提高)利用输出的时钟信号做中断源,实现定时功能将任务3中P1.0输出的ACLK=VLOCLK/8时钟信号,作为P1.7的中断申请信号,用导线将P1.7感谢阅读P1.0相连即可,在中断函数中设置一个计数变量,计数中断函数被执行的次数,如果ACLK的频率值为1.5KHz(实验时,以实测的为准),那么中断函数每被执行1500次表示一秒时间到。利用该定时功能,将8个发光二级管设计成一个秒表,显示秒值,每秒改变一次8个发光二级管的显示。感谢阅读答:程序见程序清单中的程序6.1.c。思考:如果要每隔5秒蜂鸣器响一声,如何在任务6的基础上编程实现?谢谢阅读答:程序见程序清单中的程序6.2.c。程序清单:程序2.c#include"io430.h"intmain(void){Stopwatchdogtimertopreventtimeoutreset精品文档放心下载WDTCTL=WDTPW+WDTHOLD;//P1.0输出时钟ACLK,P1.4输出时钟SMCLK感谢阅读P1SEL|=BIT0+BIT4;P1SEL2&=~(BIT0+BIT4);P1DIR|=BIT0+BIT4;while(1);}程序3.1.c#include"io430.h"unsignedinti;intmain(void){Stopwatchdogtimertopreventtimeoutreset感谢阅读WDTCTL=WDTPW+WDTHOLD;//P1.0输出时钟ACLK,P1.4输出时钟SMCLK谢谢阅读P1SEL|=BIT0+BIT4;P1SEL2&=~(BIT0+BIT4);P1DIR|=BIT0+BIT4;while((IFG1&OFIFG)!=0){IFG1&=~OFIFG;for(i=0;i<=0xffff;i++);};BCSCTL3|=LFXT1S_0;BCSCTL1|=DIVA_1;while(1);}程序3.2.c#include"io430.h"intmain(void){Stopwatchdogtimertopreventtimeoutreset谢谢阅读WDTCTL=WDTPW+WDTHOLD;//P1.0输出时钟ACLK,P1.4输出时钟SMCLK谢谢阅读P1SEL|=BIT0+BIT4;P1SEL2&=~(BIT0+BIT4);P1DIR|=BIT0+BIT4;BCSCTL3|=LFXT1S_2;BCSCTL1|=DIVA_3;while(1);}程序4.1.c#include"io430.h"intmain(void){Stopwatchdogtimertopreventtimeoutreset谢谢阅读WDTCTL=WDTPW+WDTHOLD;//P1.0输出时钟ACLK,P1.4输出时钟SMCLK精品文档放心下载P1SEL|=BIT0+BIT4;P1SEL2&=~(BIT0+BIT4);P1DIR|=BIT0+BIT4;//(1)使DCO为1MHzif(CALBC1_1MHZ!=0xff){BCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;}//(2)使DCO为16MHz/*if(CALBC1_16MHZ!=0xff){BCSCTL1=CALBC1_16MHZ;DCOCTL=CALDCO_16MHZ;}*/while(1);}程序4.2.c#include"io430.h"unsignedinti;intmain(void){ unsignedintj; //定义延时变量精品文档放心下载WDTCTL=WDTPW+WDTHOLD; //关闭看门狗精品文档放心下载//(1)MCLK=复位频率/8BCSCTL2|=DIVM_3;//(2)MCLK=DCO=16MHz/*if(CALBC1_16MHZ!=0xff){BCSCTL1=CALBC1_16MHZ;DCOCTL=CALDCO_16MHZ;}*/P2SEL&=~(BIT2+BIT5);//设置引脚P2.2和P2.5为基本输入输出功能P2SEL2&=~(BIT2+BIT5);P2OUT|=BIT2+BIT5;//设置引脚P2.2和P2.5输出的初值为1P2DIR|=BIT2+BIT5;//设置端口P2.2和P2.5为输出方向for(;;)//主循环{ P2OUT^=(BIT2+BIT5);//将P2.2和P2.5的值取反后输出for(i=0;i<0xffff;i++);//延时精品文档放心下载};}程序L6_LPM.c#include"io430.h"#include"in430.h"voiddelay(unsignedinti){unsignedintk;for(k=0;k<i;k++);感谢阅读

//延时函数//定义局部变量}voidBlink() //LED闪{unsignedinti;for(i=0;i<5;i++)精品文档放心下载{P2OUT&=~BIT3;delay(0xe000);谢谢阅读P2OUT|=BIT3;delay(0xe000);};}voidBuzz()

//蜂鸣响{unsignedinti;for(i=0;i<3;i++){P2OUT&=~BIT4;delay(0xf800);P2OUT|=BIT4;delay(0xf800);};}int main(void){ WDTCTL=WDTPW+WDTHOLD;精品文档放心下载

//关闭看门狗//设置端口P2.3输出,控制LED,P2.4输出,控制蜂鸣器P2SEL&=~(BIT3+BIT4);精品文档放心下载P2SEL2&=~(BIT3+BIT4);P2OUT|=BIT3+BIT4;P2DIR|=BIT3+BIT4;//设置端口P1.1允许中断P1SEL&=~BIT1;P1SEL2&=~BIT1;P1REN|=BIT1;P1OUT|=BIT1;P1DIR&=~BIT1;P1IES|=BIT1;P1IFG&=~BIT1;P1IE|=BIT1;_EINT();//P1.0输出时钟ACLK,P1.4输出时钟SMCLK感谢阅读P1SEL|=BIT0+BIT4;P1SEL2&=~(BIT0+BIT4);P1DIR|=BIT0+BIT4;Blink();Buzz();for(;;) //主循环{LPM4;//Blink();}}#pragma vector=PORT1_VECTOR谢谢阅读__interrupt void port_ISR()感谢阅读{Buzz();P1IFG&=~(BIT1); //清中断标志//LPM4_EXIT;}程序6.1.c#include"io430.h"#include"in430.h"intmain(void){Stopwatchdogtimertopreventtimeoutreset感谢阅读WDTCTL=WDTPW+WDTHOLD;//P1.0输出时钟ACLKP1SEL|=BIT0;P1SEL2&=~BIT0;P1DIR|=BIT0;//设置输入输出P1SEL&=~BIT7;P1SEL2&=~BIT7;P1DIR&=~BIT7;P1SEL&=~BIT1;P1SEL2&=~BIT1;P1DIR|=BIT1;P1OUT|=BIT1;P2SEL=0x00;P2SEL2=0x00;P2DIR=0xff;//设置时钟BCSCTL3|=LFXT1S_2;BCSCTL1|=DIVA_3;//设置中断P1IES|=BIT7;P1IFG&=~BIT7;P1IE|=BIT7;_EINT();LPM0;}unsignedintcount=0;unsignedcharnum=0;#pragmavector=PORT1_VECTOR//置P1中断向量精品文档放心下载__interruptvoidLED(){count++;if(count==1424)//1424根据之前的实测值确定感谢阅读{num++;P2OUT=~num;count=0;}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论