热搜关键词: 电路基础ADC数字信号处理封装库PLC

pdf

MSP430_C语言例程注释

  • 1星
  • 2015-10-27
  • 399.64KB
  • 需要2积分
  • 4次下载
标签: C语言

C语言

MSP430

MSP430

详细的C代码解释,编程更高效

文档内容节选

wwwMicrocontrolcn 微控设计网 中国MSP430单片机专业网站 微控设计网 httpwwwMicrocontrolcn 微控设计网 中国 MSP430 单片机专业网站 MSP430 C 语言例题 由微控技术论坛会员 Slam 提供 Page 1 of 21 基于模拟前端信号处理与控制技术的专业论坛网站 基于模拟前端信号处理与控制技术的专业论坛网站 wwwMicrocontrolcn 微控设计网 中国MSP430单片机专业网站 Simpo PDF Password Remover Unregistered Version httpwwwsimpopdfcom wwwMicrocontrolcn 微控设计网 本章选择了一些简单的 C 语言程序例题,这些程序的结构简单,编程技巧不多,题目虽然 简单,但是非常适合入门单片机的学习者学习 MSP430 单片机的 C 语言编程 如下列出了 C 语言例题运行的 MSP430F149 实验板硬件资源环境,熟悉这些硬件资源,对 于理解程......

www.Microcontrol.cn
微控设计½
中½MSP430单片机专业½站
微控设计½
http://www.Microcontrol.cn
微控设计½
中½
MSP430
单片机专业½站
MSP430 C
语言例题
由微控技术论坛会员
Slam
提供
Page
1
of
21
基于模拟前端信号处理与控制技术的专业论坛、½站
基于模拟前端信号处理与控制技术的专业论坛、½站
www.Microcontrol.cn
微控设计½
中½MSP430单片机专业½站
Simpo PDF Password Remover Unregistered Version - http://www.simpopdf.com
www.Microcontrol.cn
微控设计½
本章选择了一些简单的
C
语言程序例题,这些程序的结构简单,编程技巧不多,题目½然
简单,½是非常适合入门单片机的学习者学习
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
通过
C
语言编程例入门
MSP430C
语言编程
如下例子½在
MSP430F149
实验板上通过验证。
1:½与 P3
口的
P3.0
引脚连接的发光二极管闪烁。
#include <msp430x14x.h> //声明库
void main(void) //主½数
{
unsigned int i; //变量声明
WDTCTL=WDTPW+WDTHOLD; //关掉看门狗
P3DIR |=BIT0; //设½P3.0为输出,这里BIT0=0x0001
while(1) //无限次while循环
{
for (i=0;i<20000;i++) //for语句,i为循环变量,i每次循环加1,½i<20000时,
//循环延时
P3OUT=0x00;
½P3.0输出½电平,发光二极管亮,(½电平½发光二极管亮)
for (i=0;i<20000;i++) //再次循环延时
P3OUT=0x01;
½P3.0输出高电平,发光二极管灭,(高电平½发光二极管灭)
}
}
2:8
个发光二极管
1、3、5、7
2、4、6、8
交替发光的例子
#include <msp430x14x.h>
void main(void)
{
unsigned int i;
WDTCTL=WDTPW+WDTHOLD;
P3DIR=0XFF; //设½P3口为输出
while(1)
{
for (i=0;i<20000;i++)
P3OUT=0X55; //½发光二极管1、3、5、7
灭,2、4、6、8亮
for (i=0;i<20000;i++)
P3OUT=0XAA;//½发光二极管1、3、5、7亮,2、4、6、8灭
}
}
3:定时器控制的发光二极管闪烁。这里½用了 MSP430F149
芯片的
32768Hz
½频晶½振荡器½为时钟
源。用定时器
A
定时
1s,发光二极管灭 0.5s,亮.0.5s。
Page
2
of
21
基于模拟前端信号处理与控制技术的专业论坛、½站
基于模拟前端信号处理与控制技术的专业论坛、½站
www.Microcontrol.cn
微控设计½
中½MSP430单片机专业½站
Simpo PDF Password Remover Unregistered Version - http://www.simpopdf.com
www.Microcontrol.cn
微控设计½
#include <msp430x14x.h>
void main (void)
{
WDTCTL= WDTPW + WDTHOLD; //设½看门狗控制寄存器,关看门狗
TACTL = TASSEL0 + TACLR; //
设½定时器A控制寄存器,
// TASSEL0=0x0100,选择辅助时钟ACLK,
// TACLR=0x0004,清除定时器A计数器
CCTL0 = CCIE; //设½捕获/比较控制寄存器,CCIE=0x0010,½½捕获比较中断
CCR0 =16384; //设½捕获/比较寄存器,初始值为16384,对于32768Hz的频率,相½于0.5s
P3DIR |=BIT7; //P3.7为输出
TACTL |= MC0; //设½定时器A控制寄存器,MC0=0x0010,½计数模式为增计数
_EINT(); //½½中断,这是一个C编译器支持的内部过程。
while(1); //无限次while循环
}
interrupt[TIMERA0_VECTOR] void Timer_A (void) //定时器A的CC0中断处理程序
//TIMERA0_VECTOR=6*2,等于基地址0xFFE0+12=0xFFEC
{
P3OUT ^= BIT7; //将P3.7引脚取反,就是½发光二极管闪烁
}
4:选择不同的时钟源,½ P3.7
连接的发光二极管闪烁。
(1)½用
XT2
时钟源,8MHz 频率,用定时器
A
分频,产生
1s
脉冲,½
P3.7
引脚的发光二极管闪烁。
#include <msp430x14x.h>
#define XTOFF 0x40;
void main (void)
{
WDTCTL= WDTPW + WDTHOLD; //关闭看门狗
BCSCTL1 &= ~XT2OFF; //基础时钟控制寄存器BCSCTL1的第7½½0,½XT2启动
BCSCTL2 = SELS + DIVS1 + DIVS0; //基础时钟控制寄存器BCSCTL2设½,第3½½1,选择
//XT2CLK½为SMCLK时钟;将第2和第1½½1,½分频比为8
TACTL =0x02D4;
//定时器A控制寄存器设½,第2½½1:清除;第4、5½½1、0:加计数模式
//加计数至CCR0,然后重新开始;第6、7½1、1,所以是8分频;第8、9½是
//0、1,所以TA½用SMCLK时钟。
CCTL0 = CCIE; //CCIE=0x0010,½½定时器A中断
CCR0 =62500; //设½计数器CCR0的初值,((8MHz/8)/8)/2=62500,相½于0.5s的时间
P3DIR |=BIT7; //将P3.7设½为输出
_EINT(); //调用C430编译器内部½数,½½中断
while(1); //无限次循环
}
interrupt[TIMERA0_VECTOR] void Timer_A (void) //定时器A中断½数
{
P3OUT ^= BIT7; //P3.7½取反
}
(2)½用32768Hz晶½产生1s信号的程序如下:
#include <msp430x14x.h>
void main (void)
{
WDTCTL= WDTPW + WDTHOLD;
TACTL =TASSEL0+TACLR+MC0;
CCTL0 = CCIE;
CCR0 =16384;
P3DIR |=BIT7;
_EINT();
while(1);
Page
3
of
21
基于模拟前端信号处理与控制技术的专业论坛、½站
基于模拟前端信号处理与控制技术的专业论坛、½站
www.Microcontrol.cn
微控设计½
中½MSP430单片机专业½站
Simpo PDF Password Remover Unregistered Version - http://www.simpopdf.com
www.Microcontrol.cn
微控设计½
}
interrupt[TIMERA0_VECTOR] void Timer_A (void)
{
P3OUT ^= BIT7;
}
(3)看门狗½输出
P3.7
引脚连接的发光二极管每秒闪烁一次的例子:
#include <msp430x14x.h>
void main (void)
{
WDTCTL= WDTPW + WDTTMSEL+WDTSSEL;
IE1|=WDTIE;
P3DIR |=BIT7;
_EINT();
while(1);
}
interrupt[WDT_VECTOR] void WDT_interrupt (void)
{
P3OUT ^= BIT7;
}
5: P4
P5
输出口连接的数码管显示
1
2。
#include <msp430x14x.h>
void main(void)
{
unsigned char seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//定义七段译码的共阳数码管显示数组
// hgfg dcba
//0=1100 0000
//1=1111 1001
//2=1010 0100
//……
//9=1001 0000
WDTCTL=WDTPW+WDTHOLD; //关闭看门狗,以便于调试
P4DIR=0XFF; //设½P4口为输出
P5DIR=0XFF;//设½P5口为输出
P4OUT=seg[1];//向P4口输出数组的第1个元素,数字1的段码
P5OUT=seg[2];//向P5口输出数组的第2个元素,数字2的段码
}
6:与 P5
口连接的数码管加
1
计数,与
P4
口相连的数码管显示数字
8。
#include <msp430x14x.h>
void main(void)
{
int i,x; //声明数据类型
unsigned char seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
WDTCTL=WDTPW+WDTHOLD;//关看门狗
P4DIR=0XFF; //P4口为输出,连接有共阳极数码管
P5DIR=0XFF; //P5口为输出,连接有共阳极数码管
P4OUT=seg[8]; //P4输出数字8
P5OUT=seg[0]; //P5输出数字0
while(1) //无限次While循环
{
for(i=0;i<=9;i++) //循环变量I从0到9循环
for(x=0;x<20000;x++) //没有循环½的for循环,用于延迟时间
P5OUT=seg[i]; //按照循环变量i的数值,取出相应的数组元素
}
}
例7:
½用定时器输出精确的秒信号。从0开始计时,数码管显示0½60秒,每隔10秒½数码管
更换显示,并顺序点亮发光二极管。
Page
4
of
21
基于模拟前端信号处理与控制技术的专业论坛、½站
基于模拟前端信号处理与控制技术的专业论坛、½站
www.Microcontrol.cn
微控设计½
中½MSP430单片机专业½站
Simpo PDF Password Remover Unregistered Version - http://www.simpopdf.com
www.Microcontrol.cn
微控设计½
#include <msp430x14x.h>
#define XTOFF 0x40;
unsigned int i=0,j=0; //声明数据类型
unsigned char seg_7[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//数码管字型码数组
unsigned int bit[8]={0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080};
//发光二极管点亮顺序数组
void main (void)
{
WDTCTL= WDTPW + WDTHOLD; //关看门狗
TACTL = TASSEL0 + TACLR; //
设½定时器A控制寄存器,
// TASSEL0=0x0100,选择辅助时钟ACLK(32kHz)
// TACLR=0x0004,清除定时器A计数器
CCTL0 = CCIE; //½½定时器A捕捉与中断功½,CCIE=0x0010
CCR0 =32768; //
设½计数器CCR0初值
TACTL |= MC0; //设½定时器工½模式为加计数到CCR0初值
P3DIR = 0XFF; //P3口为输出
P4DIR = 0XFF; //P4口为输出
P5DIR = 0XFF; //P5口为输出
P3OUT = 0X7E; //P3口输出为0111 1110
_EINT();
调用C430编译器内部½数½½中断
while(1); //没有循环½的无限次while循环
}
interrupt[TIMERA0_VECTOR] void Timer_A (void) //定时器A的中断½数
{
i+=1; i每次循环加1
if (i==10) //如果i=1
{
i=0; //½i=0
j+=1; j每次加1
P3OUT ^= bit[j]; //数组的第j个元素取反后从P3口输出,½发光二极管顺序点亮
if (j==6) //如果j=6
{
j=0;
½j=0
}
}
P4OUT =seg_7[i];//数码管字型数组中取第i个元素,送到P4口输出
P5OUT = seg_7[j]; //数码管字型数组中取第j个元素,送到P5口输出
}
8:连接在
P1.0
口的按键控制数码管显示数值,数码管显示按动次数。
#include <msp430x14x.h> //声明库文件
char Key_Pressed(void); //声明被调用½数
void main(void)
{
unsigned char seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//共阳数码管字型码数组
unsigned int i=0; //声明数据类型
WDTCTL = WDTPW + WDTHOLD; //关看门狗
P1DIR &= ~BIT0; //P1.0引脚设½成输入,该引脚连接的按键按下时,按键输出½电平
P4DIR =0xff;
//P4口设½为输出,连接共阳数码管
P4OUT=seg[8]; //P4口输出数字8
while (1) //无限次while循环
{
if(Key_Pressed()) //调用按键½数,如果按键½数返回1,
Page
5
of
21
基于模拟前端信号处理与控制技术的专业论坛、½站
基于模拟前端信号处理与控制技术的专业论坛、½站
展开预览

猜您喜欢

推荐帖子

评论

登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

  • stm32想要加密防破解该怎么做
    stm32想要加密防破解该怎么做需要考虑到加密问题了
  • rt_hw_interrupt_install在ads1.2下出错
    void rt_hw_interrupt_install(int vector, rt_isr_handler_t new_handler, rt_isr_handler_t *old_handler){if(vector < MAX_HANDLERS){if (*old_handler != RT_NULL) *old_handler = isr_table[vector];if (new_ha
  • 上海弘视通信技术有限公司招聘嵌入式软件工程师(欢迎应届生)
    岗位职责:1.负责项目的功能模块的开发、代码编写2.负责算法的移植任职要求:1、有一种及以上嵌入式平台的实际开发经验(ARM、DSP等等)2、有一定硬件基础知识,熟悉常用接口如UART,I2C,SPI等。3、能够熟练使用C/C++语言开发嵌入式软件;4、熟悉Linux系统基础知识:如内核原理,消息机制,IO操作机制,内存管理机制,文件系统,多线程及线程间通讯,shell命令等;5、熟悉TCP/IP
  • 来测测你的她是个什么样子
    有一只白色的鸟,你直觉它的嘴里应该含着什么东西?回复一下,就可以看到答案了哦。如果你有女友,也不妨看看,她是不是你潜意识里喜欢的女人.花束 饮料  水果 糖果   婴儿答案:花束:你是个拥有美丽女友的人,你的女朋友有一副娇媚外表及沉静性格。你如果想把她娶到家的话,不妨宠爱她,顺从她。但你要注意的是,她是有主见的人,是“顺我者昌,逆我者亡”型。所以听话是你宠络住她的最佳技巧。饮料:你很幸运,这表明你
  • ARM的串口输出问题
    问个困扰了我很久的问题: Uart_Printf这个函数 我看了它的定义。但还是不很懂。而且用它串口输出的话,显示的是乱码。过程是这样的:我选取了某公司写的测试程序中的3个文件:RTC.C 、44BINIT.S和44blib.c。用这3个文件做了工程。(当然了,我还添加了Main函数)结果串口输出的就是乱码了。是不是我遗漏了什么?不然,怎么会是乱码呢?调此公司的这个测试程序,串口输出都是正常的啊v
  • 操作系统的移植
  • 怎样在WINCE下一个应用程序中做一个函数来获知另一个程序是否在运行
  • 一周精彩回顾:2017.1.9-2017.1.15
  • 晒WEBENCH设计的过程+POWER设计
  • 【 ST NUCLEO-G071RB测评】TIM-Basic timers

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×