/*************************************************** 程序功能:BoardConfig.h 头文件 ---------------------------------------------------
***************************************************/ typedef unsigned char uchar; typedef unsigned int uint;
//控制位的宏定义
#define Ctrl_Out P3DIR |= BIT3 + BIT6 + BIT7; #define Ctrl_0 P3OUT &= ~(BIT3 + BIT6 + BIT7) #define SRCLK_1 P3OUT |= BIT7 #define SRCLK_0 P3OUT &= ~BIT7 #define SER_1 P3OUT |= BIT6 #define SER_0 P3OUT &= ~BIT6 #define RCLK_1 P3OUT |= BIT3 #define RCLK_0 P3OUT &= ~BIT3
//板上资源配置函数
void BoardConfig(uchar cmd) {
uchar i;
Ctrl_Out; Ctrl_0;
for(i = 0; i < 8; i++) {
SRCLK_0;
if(cmd & 0x80) SER_1; else SER_0; SRCLK_1; cmd <<= 1; }
RCLK_1; _NOP(); RCLK_0; }
/*************************************************** 程序功能:控制8个LED闪烁,用于测试下载功能是否正常 --------------------------------------------------- 测试说明:观察LED闪烁
***************************************************/ #include
6
/****************主函数****************/ void main(void) {
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
BoardConfig(0xf0); //关闭数码管和电平转换,打开流水灯
CCTL0 = CCIE; //使能CCR0中断
CCR0 = 2047; //设定周期0.5S
TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式 P2DIR = 0xff; //设置P2口方向为输出 P2OUT = 0xff;
_EINT(); //使能全局中断
LPM3; //CPU进入LPM3模式 }
/******************************************* 函数名称:Timer_A
功 能:定时器A的中断服务函数 参 数:无 返回值 :无
********************************************/ #pragma vector = TIMERA0_VECTOR __interrupt void Timer_A (void) {
P2OUT ^= 0xff; //P2口输出取反 }
/*********************************************** 程序功能:实现流水灯以三种流动方式和四种流动速度 的不同组合而进行点亮\流动\------------------------------------------------
测试说明:观察流水灯流动顺序和速度的变化
************************************************/ #include
uint i = 0,j = 0,dir = 0;
uint flag = 0,speed = 0; //flag--灯光流动方式,speed--灯光流动速度
/****************主函数****************/ void main(void) {
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
7
BoardConfig(0xf0);
CCTL0 = CCIE; //使能CCR0中断 CCR0 = 50000;
TACTL = TASSEL_2 + ID_3 + MC_1; //定时器A的时钟源选择SMCLK,增计数模式 P2DIR = 0xff; //设置P2口方向为输出 P2OUT = 0xff;
_EINT(); //使能全局中断
LPM0; //CPU进入LPM0模式 }
/******************************************* 函数名称:Timer_A
功 能:定时器A的中断服务函数,在这里通过标志 控制流水灯的流动方向和流动速度 参 数:无 返回值 :无
********************************************/ #pragma vector = TIMERA0_VECTOR __interrupt void Timer_A (void) {
if(flag == 0) {
P2OUT = ~(0x80>>(i++)); //灯的点亮顺序D8 -> D1 }
else if(flag == 1) {
P2OUT = ~(0x01<<(i++)); //灯的点亮顺序D1 -> D8 } else {
if(dir) //灯的点亮顺序 D8 -> D1,D1 -> D8,循环绕圈 {
P2OUT = ~(0x80>>(i++)); } else {
P2OUT = ~(0x01<<(i++)); } }
if(i == 8) {
i = 0;
8
dir = ~dir; }
j++;
if(j == 40) {
i = 0; j = 0; flag++;
if(flag == 4) flag = 0; switch(speed) {
case 0:
TACTL &=~ (ID0 + ID1); TACTL |= ID_3; break; case 1:
TACTL &=~ (ID0 + ID1); TACTL |= ID_2; break; case 2:
TACTL &=~ (ID0 + ID1); TACTL |= ID_1; break; case 3:
TACTL &=~ (ID0 + ID1); TACTL |= ID_0; break; default: break; }
if(flag != 3) speed++; if(speed == 4) speed = 0; } }
/******************************************************* 程序功能:用从P2.3和P2.4输出的PWM波形驱动LED闪烁 P2.3口输出方波的占空比为75% P2.4口输出方波的占空比为25% ------------------------------------------------------- 测试说明:观察LED的亮灭的时间长短
*******************************************************/ #include
9
{
WDTCTL = WDTPW + WDTHOLD; // 关狗
BoardConfig(0xb0); // 关闭数码管和电平转换,打开流水灯 P2DIR = 0xff; // P2端口设置为输出 P2OUT = 0xff; // 关闭其他LED
P2SEL |= BIT3 + BIT4; // P2.3和P2.4连接内部模块 CCR0 = 4096-1; // PWM周期为1S CCTL1 = OUTMOD_7; // CCR1 reset/set
CCR1 = 3072; // CCR1 PWM duty cycle CCTL2 = OUTMOD_7; // CCR2 reset/set
CCR2 = 1024; // CCR2 PWM duty cycle TACTL = TASSEL_1 + ID_3 + MC_1; // ACLK/8, up mode
_BIS_SR(LPM3_bits); // Enter LPM3 }
//****************************************************************************** // MSP-FET430P140 Demo - Basic Clock, Output Buffered SMCLK, ACLK and MCLK //
// Description: Output buffered MCLK, SMCLK and ACLK.
// ACLK = LFXT1 = 32768, MCLK = DCO Max, SMCLK = XT2 // //* XTAL's REQUIRED - NOT INSTALLED ON FET *//
// //* Min Vcc required varies with MCLK frequency - refer to datasheet *// //
// MSP430F149 // -----------------
// /|\\| XIN|- // | | | 32k // --|RST XOUT|- // | | // | XT2IN|-
// | | XTAL (455k - 8Mhz) // |RST XT2OUT|- // | |
// | P5.4|-->MCLK = DCO Max // | P5.5|-->SMCLK = XT2 // | P5.6|-->ACLK = 32kHz //
// M. Buccini
// Texas Instruments Inc. // Feb 2005
// Built with IAR Embedded Workbench Version: 3.21A
//******************************************************************************
10
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库msp430实用程序汇总(2)在线全文阅读。
相关推荐: