⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 p158_s1.c

📁 msp430开发版程序
💻 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 + -