msp430单片机简介,883c语言程序设计参考书
MSP430单片机c语言编程
MSP430单片机c语言编程
本章选择了几个简单的c语言程序例题。 这些程序的结构简单,编程技巧少,但主题是
很简单,入门MSP430单片机的学员非常适合学习MSP430单片机的c语言编程。
以下是在c语言例题中运行的MSP430F149实验板的硬件资源环境,并熟悉这些硬件资源
理解程序非常重要。
)1)数码管:
左侧的数码管连接到P5端口,a~g、h支持P5.0~P5.7
右侧的数码管连接到P4端口,a~g、h支持P4.0~P4.7
(2)发光二极管
8个发光二极管连接到P3端口
(3)按钮:
左侧的8个按钮连接到P2端口,管脚号显示在按钮上
右侧的8个按钮连接到P1端口,管脚号显示在按钮上
)4) P2.3引脚还是模拟比较器输入
)5)在P6.0、P6.1端子上连接模拟电位器,用于模拟实验
9.1通过语言编程示例进入MSP430C语言编程
以下示例均通过MSP430F149实验板的验证。
例1 )使连接在P3端口的P3.0端子上的发光二极管闪烁。
#include //基于声明
语音主(语音)//主函数
{
无符号输入I; //变量声明
WDTCTL=WDTPW WDTHOLD; //关掉看门狗
p3dir|=位0; 将P3.0作为输出,这里BIT0=0x0001
while(1)//无限次while循环
{
for(I=0; i20000; I )//for语句,I是循环变量,I每循环加1,i20000时,
//循环延迟
P3OUT=0x00; 将P3.0输出设为低电平,点亮发光二极管,((设为低电平并点亮发光二极管) ) ) ) ) ) ) )。
for(I=0; i20000; I ) )//再循环延迟
P3OUT=0x01; 使P3.0输出为高电平,关闭发光二极管((高电平下关闭发光二极管) ) ) ) ) ) ) ) ) )。
}
}
例2:8个发光二极管1、3、5、7和2、4、6、8交替发光例子
#包含
语音主(语音) )。
{
无符号输入I;
WDTCTL=WDTPW WDTHOLD;
P3DIR=0XFF; //p3端口设为输出
while(1)。
{
for(I=0; i20000; I )
P3OUT=0X55; //熄灭发光二极管1、3、5、7,点亮2、4、6、8
for(I=0; i20000; I )
P3OUT=0XAA; //点亮发光二极管1、3、5、7,熄灭2、4、6、8
}
}
例3 )计时器控制的发光二极管闪烁。 这里使用了MSP430F149芯片的32768Hz低频晶体振荡器作为时钟
酱料。 计时器a点亮计时器1秒,发光二极管熄灭0.5s,点亮0.5s。
#包含
语音主(语音) )。
{
WDTCTL=WDTPW WDTHOLD; //设置看门狗控制寄存器,关闭看门狗
TACTL=TASSEL0 TACLR; //设置计时器a控制寄存器,
//TASSEL0=0x0100,选择辅助时钟ACLK,
//TACLR=0x0004,清除计时器a计数器
CCTL0=CCIE; 设定//捕捉/比较控制寄存器,使CCIE=0x0010能够中断捕捉比较
CCR0=16384; 设置//捕获/比较寄存器,初始值为16384,对于32768Hz频率相当于0.5s
p3dir|=位7; //P3.7为输出
TACTL |=MC0; //设置计时器a控制寄存器,设为MC0=0x0010,使计数模式向上计数
_EINT (; //启用中断。 这是c编译器支持的内部进程。
wile(1; //无限次while循环
}
interrupt [ timera0_ vector ] void timer _ a (void ) /计时器a的CC0中断处理程序
//TIMERA0_VECTOR=6*2,等于基地址0xFFE0 12=0xFFEC
{
p3out^=位7; 如果将P3.7端子反转,则使发光二极管闪烁
}
例4 )选择不同的时钟源,使连接到P3.7的发光二极管闪烁。
)1)使用XT2时钟源,频率8MHz,计时器a分频,产生1s脉冲,闪烁P3.7引脚发光二极管。
#包含
#define XTOFF0x40;
语音主(语音) )。
{
WDTCTL=WDTPW
快三大小单双稳赚买法>{
WDTCTL=WDTPW WDTHOLD; //设置看门狗控制寄存器,关闭看门狗
TACTL=TASSEL0 TACLR; //设置计时器a控制寄存器,
//TASSEL0=0x0100,选择辅助时钟ACLK,
//TACLR=0x0004,清除计时器a计数器
CCTL0=CCIE; 设定//捕捉/比较控制寄存器,使CCIE=0x0010能够中断捕捉比较
CCR0=16384; 设置//捕获/比较寄存器,初始值为16384,对于32768Hz频率相当于0.5s
p3dir|=位7; //P3.7为输出
TACTL |=MC0; //设置计时器a控制寄存器,设为MC0=0x0010,使计数模式向上计数
_EINT (; //启用中断。 这是c编译器支持的内部进程。
wile(1; //无限次while循环
}
interrupt [ timera0_ vector ] void timer _ a (void ) /计时器a的CC0中断处理程序
//TIMERA0_VECTOR=6*2,等于基地址0xFFE0 12=0xFFEC
{
p3out^=位7; 如果将P3.7端子反转,则使发光二极管闪烁
}
例4 )选择不同的时钟源,使连接到P3.7的发光二极管闪烁。
)1)使用XT2时钟源,频率8MHz,计时器a分频,产生1s脉冲,闪烁P3.7引脚发光二极管。
#包含
#define XTOFF0x40;
语音主(语音) )。
{
WDTCTL=WDTPW