前一段时间一直在用TI公司的MSP430系列的单片机,总结了点430常用的程序框架。
a.循环低功耗、中断服务程序唤醒
void main()
{
关闭开门狗;
初始化时钟;
初始化端口;
初始化屏幕;
其他外围必要的初始化;
开中断;
while(1)
{
进入低功耗模式;
执行某函数;
}
}
中断函数1
{
退出低功耗;
中断服务程序;
}
例如:
1 #pragma vector=ADC12_VECTOR
2 __interrupt void ADC12ISR (void) //AD转换中断服务程序
3 {
4 static unsigned char index = 0;
5 LPM3_EXIT;
6 switch(__even_in_range(ADC12IV,34))
7 {
8 case 0: break; // Vector 0: No interrupt
9 case 2: break; // Vector 2: ADC overflow
10 case 4: break; // Vector 4: ADC timing overflow
11 case 6: // Vector 6: ADC12IFG0
12 if(index < 8)
13 {
14 results[index] = (ADC12MEM0*2.048/4096);
15 index++;
16 }
17 if(8==index) { index=0; }
18 S_judge=1;
19 break;
20 default: break;
21 }
22 }
23
24 void main()
25
26 {
27
28 WDTCTL = WDTPW + WDTHOLD;
29 Init_CLK() ;
30 LCD_Init() ;
31 Clear_LCD(Color_BK);
32 Init_Port() ;
33 Init_RTC();
34
35 _EINT(); //开全局中断
36
37 Init_ADC();
38 ADC12CTL0 |= ADC12SC; //开始AD转换
39 while(1)
40 {
41 LPM3;
42 Show_Clock();
43 if(S_judge==1)
44 {
45 for(int n=0;n46 {
47 fsum+=fresults[n];
48 }
49 m=fsum/Num_of_Results;
50 sprintf(str,"%02.1f",m);
51 PutStringEN24(104,260,str);
52 fsum=0;
53 S_judge=0;
54 ADC12CTL0 |= ADC12SC;
55
56 }
57 }
b.低功耗、中断服务程序
该种结构比较简单,与第一种结构的差别在于主程序没有循环执行某函数。
void main()
{
关闭开门狗;
初始化时钟;
初始化端口;
初始化屏幕;
其他外围必要的初始化;
开全局中断;
进入低功耗;
}
中断服务程序1
{
退出低功耗;
中断服务程序;
}
c.开机设定、低功耗、中断服务程序
void main()
{
关闭开门狗;
初始化时钟;
初始化端口;
初始化屏幕、键盘;
初始化其他外围;
开全局中断;
键盘设定数据,开机初始化;
键入低功耗;
}
中断服务程序1
{
退出低功耗;
中断服务程序;
}
比如在第一种模式里加入开机设定的部分。
d.菜单按键方式
void main()
{
关闭开门狗;
初始化时钟;
初始化端口;
初始化屏幕、键盘;
初始化其他外围;
开全局中断;
while(1)
{
扫描按键;
switch(键值)
{
case...
}
更改显示;
}
}
关键字:MSP430 单片机 程序框架
引用地址:
MSP430单片机常用程序框架
推荐阅读最新更新时间:2024-03-16 15:28
如何快速的入门单片机?单片机自学教程有哪些?
如何快速的入门单片机开发?百度一大堆广告,然后就是乱七八糟的文章,看的眼花缭乱。 排在最前面的是培训机构,后面就是一大堆文章。 有建议自学的,有建议报班参加培训的,有的建议先学51单片机,有的建议先学stm32。 翻了半天网页,看了很多资料,还有开源的教程,但感觉就是千丝万缕很难理清,不知所措。 我们先聊聊单片机开发通过自学容易嘛? 我是08年开始学习单片机的,第一次接触单片机,对单片机是什么没有一点概念,既不知道单片机是个啥,也不知道单片机能干啥,一片迷茫。 经过几天查资料,和实验室的同学沟通,才慢慢地对单片机有一个比较朦胧的概念。 单片机原来就和电脑的CPU一样,是电路板的核心,可以编程实现各种功能,例如点亮LED灯等。
[单片机]
单片机实现开关电源的设计
1 引 言 MSP430系列单片机是美国TI公司生产的新一代16位单片。开关Boost稳压电源利用开关器件控制、无源磁性元件及电容元件的能量存储特性,从输入电压源获取分离的能量,暂时把能量以磁场的形式存储在电感器中,或以电场的形式存储在电容器中,然后将能量转换到负载。对DC—DC主回路采用Boost升压斩波电路。 2 系统结构和总设计方案 本开关稳压电源是以MSP430F449为主控制器件,它是TI公司生产的16位超低功耗特性的功能强大的单片机,其低功耗的优点有利于系统效率高的要求,且其ADCl2是高精度的12位A/D转换模块,有高速、通用的特点。这里使用MSP430完成电压反馈的PI调节;PWM波产生,基准电压设定;电压电流显示
[电源管理]
交期拉长了4个月 台湾MCU五大厂涨价
全球微控制器(MCU)大缺货,交期破天荒拉长至四个月,业界传出,盛群、凌通、松翰、闳康、新唐等五大台湾MCU厂近期因此同步调升报价,部分品项调幅超过一成,是继驱动IC、电源管理芯片、MOSFET之后,又一出现涨价声浪的半导体关键零组件。 MCU是一个微型电脑,广泛应用在各类电子产品,提供存储与运算功能。业者坦言,MCU价格过往“只跌不涨”,但今年晶圆代工产能供应不足,加上下半年起消费性、车用等客户开始大力回补库存,导致MCU面临供给短缺状况。有业者私下透露,“这是MCU产业近二、三十年来,难得一见的奇景”,并打破过往价格“只跌不涨”的惯例。 盛群证实已有涨价,主要锁定新进订单,而且是毛利低于40%的产品专案,涨价幅度不一。如果是客
[手机便携]
MSP430学习笔记2-跑马灯程序,熟悉定时器寄存器的配置
这个例子主要还是熟悉有关定时器A的寄存器配置以及IAR的配置方式。 /*********************************************** 程序功能:实现流水灯以三种流动方式和四种流动速度 的不同组合而进行点亮 流动 ------------------------------------------------ 拨码开关设置:将LED位拨至ON,其余拨至OFF 测试说明:观察流水灯流动顺序和速度的变化 ************************************************/ #include msp430x14x.h typedef unsigned int u
[单片机]
使用单片机制作多路输入电压表
单片机在工业控制和智能化仪表中,常由单片机进行实时控制及实时数据处理。单片机所加工的信息都是数字量,而被控制或测量对象的有关参量往往是连续变化的模拟量,如温度、速度、压力等等,与此对应的电信号是模拟电信号。单片机要处理这种信号,首先必须将模拟量转换成数字量,这一转换过程就是模 数转换,实现模/数转换的设备称为A/D转换器或ADC。 AD转换器是单片机应用中常见的接口,从事单片机开发的人员通常都会遇到使用AD的要求,本文通过一个典型的例子来学习一种常用AD转换器的用法。 一、模数转换简介 A/D转换电路种类很多,在选择模/数转换器时,主要考虑以下的一些技术指标:转换时间和转换频率、量化误差与分辨率、转换精度、接口形式等。目前
[单片机]
时间片轮转算法在单片机程序设计中的应用
摘要:提出一种采用时间片轮转算法改进单片机系统程序设计,实现多任务机制的软件设计方法,并给出了在MCS-51分级分布式系统中应用该算法进行程序设计的实例。
关键词:时间片 多任务机制 单片机系统
传统的单任务编程思想对于明显的顺序控制要求编程简单、思路清晰、开发周期短;但对于任务较多、控制功能复杂的问题时,却难以满足要求。因此,有必要对传统的单任务设计思想进行改进。时间片轮转算法是实现多任务调度的一种常用算法。在这种算法中,系统将所有的任务按顺序排成一个队列,每次调度时把CPU分配给队首的任务,并令其执行一个时间片,构成微观上轮流运行、宏观上并执行的多任务效果。作者在基于单片机的分级分布式控制系统——程控对讲系统的用户控制器
[单片机]
单片机学习入门怎样才能少走弯路
从事模拟硬件电路和单片机软硬件设计已多年,初期走了不少弯路,与现在的你一样,在许多的科技书中搜索,在众多的单片机徘徊。单片机种类较多,不知学那一种好,每种单片机都学,一个人的精力恐怕不够,怎样才能快速入门呢?在此笔者从几方面分别作一些建议性的描述。 对于初学者来说最好先买一本好的51单片机教本,目前书店这类书较多,大多都是你抄我的我抄你的,内容千篇一律,笔者向你推荐一本好书《8051单片机实践与应用》(北航出版)。然后慢慢看懂51单片机的硬件结构图,不要认为这是硬件工程师的事,其实,在单片机系统设计中,软硬件的设计是一两个人来完成的,如果系统比较大,软硬件的设计才会分开由专人来设计,但不管怎样,只懂硬件不懂软件或只懂软件不懂硬件
[单片机]
基于80C51单片机和CH375芯片实现打印机驱动系统的设计
引言 本课题来源于北京普析通用公司的一个项目。由于公司现有单机版光谱仪器产品(如1810、T6等)采用的是并行口打印技术,而随着USB打印机技术的逐渐普及,并行口打印机越来越不好买到,而且有些用户的打印机只是USB接口而非并行口,因此现有仪器产品对打印机的支持变得不能适应用户需要。为了实现能将公司的并行口仪器直接和USB打印机相连进行打印,决定设计开发一款LPT-USB打印机的驱动器,负责并口仪器和USB打印机的连接。 本文利用单片机和USB总线接口芯片实现LPT-USB打印机的驱动器设计。利用该设计将能够实现并行打印口数据可以在USB打印机上的直接打印工作,克服了有些并口仪器必须连接并口打印机才能打印的弊端,极大地方便了用户
[单片机]