📄 p158_s1.c
字号:
//书本配套代码参考P158_S1_F44X.C文件
//修改实例如下
//例:设ACLK=TACLK=32768Hz,MCLK=SMCLK=DCOCLK=6MHz,周期性取反P5.1,产生频率为8MHz/30000/2=100Hz的方波。P158
//示例代码如下:
/*
将8路的发光二极管电路板接到P5口上观看运行效果
*/
/*提示!
根据主板上的单片机是MSP430F149,所以包含头文件改为msp430x14x.h。
*/
#include <msp430x14x.h>
void main(void)
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗
P5DIR |= 0x07; // P5.0~P5.2输出
BCSCTL1 &= ~XT2OFF; // XT2有效
do
{
IFG1 &= ~OFIFG; //清除振荡器失效标志
for (i = 0xFF; i > 0; i--); //稳定时间
}
while ((IFG1 & OFIFG)); //如果振荡器失效标志存在
BCSCTL2 = 0X88; // MCLK = SMCLK = XT2 (safe)
CCTL1 = CCIE; // CCR1 toggle, interrupt enabled
CCTL2 = CCIE; // CCR2 toggle, interrupt enabled
CCR1 = 1000;
CCR2 = 40000;
TACTL = TASSEL_2 + MC_0 + TACLR + TAIE; // MCLK, 停止计数, 允许溢出中断
TACTL |= MC1; //Timer_a连续计数模式
_EINT();
while(1)_NOP();
}
//Timer_A3中断向量(TAIV)
#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch(TAIV)
{
case 2:
P5OUT ^= 0x01; //CCR1到时,取反P5.0
break;
case 4:
P5OUT ^= 0x02; //CCR2到时,取反P5.1
break;
case 10: P5OUT ^= 0x04; //发生溢出时,取反P5.2
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -