计算机硬件基础实验报告8,9 清华大学,清华大学计算机硬件技术基础实验报告.docx...

清华大学计算机硬件技术基础实验报告

实验名称:实验8:定时器姓名:袁鹏学号:2013011780实验班号:33 机器号:42一.实验目的了解 MSP430 定时器A 工作原理,掌握MSP430 定时器A 的控制方法。二.实验任务1. 定时器A的定时功能学习采用定时器A的增计数方式(Up Mode),每秒产生一次CCR0的TACCR0 CCIFG中断, 计数秒值,将计数值通过8个发光二极管显示出来,并控制蜂鸣器每5秒发出一警报声。实现方法:将P1.0~P1.7与LED1~LED7连接起来,P2.0与蜂鸣器连接起来,采用32.768KHz的外部晶振作为ACLK的时钟源,因此P2.6与P2.7要与外部晶振连接而不能作为基本输入输出。选择增计数方式,每隔一秒改变一次发光二极管状态,每隔五秒发出一声警报。具体代码如下:#include "io430.h"#include "in430.h"unsigned int count=0,s=0;void delay() //延时函数{ unsigned int i; for(i=0;i<0xffff;i++);} void buzz() //蜂鸣器响一声{ P2OUT&=~BIT0; delay(); P2OUT|=BIT0; delay();}int main ( void ){ WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 _DINT(); P1SEL=0; //设置P1.0~P1.7为基本输出 P1SEL2=0; P1OUT=0XFF; P1DIR=0XFF; P2SEL|=BIT6+BIT7; //启用外部晶振 P2SEL2&=~(BIT6+BIT7); P2DIR&=~BIT6; P2DIR|=BIT7; P2SEL&=~BIT0; //设置P2.0为输出 P2SEL&=~BIT0; P2OUT|=BIT0; P2DIR|=BIT0; TA0CTL|=TACLR+TASSEL_1+MC_1; //采用ACLK时钟源,清零计数器,选择增计数方式 TA0CCR0=32767; TA0CCTL0|=CCIE; //打开中断允许 _EINT(); while(1) {if(count==257) //设置LED灯显示count=1; P1OUT=~count; if(s==5) //控制蜂鸣器鸣叫 { buzz(); s=0; } }}#pragma vector=TIMER0_A0_VECTOR__interrupt void time() //中断程序{ count++; s++; }思考:当采用外部晶振作为时钟源时,端口P2.6~P2.7只能设置为外部晶振引脚,而不能设置为基本输入输出,这样在整体控制LED灯时不便于布线以及端口之间的连接,十分不方便。因此可以考虑采用SMCLK为时钟信号,并设置SMCLK的时钟源为12KHz的VLOCLK,这时只许再设置一下TAR0CR0的计数值使中断恰好为一秒即可,大大方便布线。具体改进代码如下:#include "io430.h"#include "in430.h"unsigned int count=0,s=0;void delay() //延时函数{ unsigned int i; for(i=0;i<0xffff;i++);}void buzz() //蜂鸣器响一声{ P1OUT&=~BIT7; delay(); P1OUT|=BIT7; delay();}int main ( void ){ WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 _DINT(); P2SEL=0; //设置P2.0~P2.7端口为基本输出 P2SEL2=0; P2OUT=0XFF; P2DIR=0XFF; P1SEL&=~BIT7; //设置P1.7端口为

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值