2024年5月30日发(作者:)
微机原理实验
实验四 定时中断的设计与应用
一、实验目的
1. 了解 MSP430 系列定时器 Timer_A 模块结构和功能;
2. 掌握定时器 Timer_A 的工作原理和寄存器配置方法;
3. 熟练掌握定时器 Timer_A 不同工作模式下的典型应用;
4. 熟练掌握端口 P1 和 P2 复用功能应用;
5. 熟练掌握定时器 Timer_A 定时中断功能的设计和应用。
二、实验内容
1. ※● 为TA0配置时钟源及工作模式,控制LED1指示灯的定时亮灭,中间间隔1秒钟。
要求:TA0定时器分别配置工作在增计数模式和增/减计数模式下,采用ACLK作为其计数
参考时钟,并启用TA0CCR0计数中断实现硬件定时中断。
(1)流程图
(以增计数模式为例)
(2) 源代码
/***增计数模式***/
#include
void main()
{
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗定时器
P1DIR |= BIT0; //设置P1.0输出
P1OUT&=~BIT0; //初始化P1.0
TA0CCR0 = 32768; // 定义中断计数周期1s,时钟频率为
32.768MHZ,32768 / 32768 = 1s
TA0CCTL0 = CCIE; // TA0CCR0捕获/比较中断寄存器中断
使能
TA0CTL = TASSEL_1 + MC_1 + TACLR; // TASSEL_1,ACLK时钟源 MC_1,增
计数模式
__bis_SR_register (LPM0_bits + GIE); // 进入LPM0低功耗模式,开启总
中断
}
//定时器中断
#pragma vector = TIMER0_A0_VECTOR
__interrupt void Timer_A(void) // 定时器中断触发,P1输出口异或,电平翻转
{
P1OUT ^= 0x01;
}
/*******增减计数模式*******/
#include
void main()
{
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗定时器
P1DIR |= BIT0; //设置P1.0输出
P1OUT&=~BIT0; //初始化P1.0
TA0CCR0 = 16384; // 定义中断计数周期1s
TA0CCTL0 = CCIE; // TA0CCR0捕获/比较中断寄存器中断
使能
TA0CTL = TASSEL_1 + MC_3 + TACLR; // TASSEL_1,ACLK时钟源 MC_1,增
减计数模式
发布评论