MSP430F149的看门狗操作

合集下载

msp430f149技术资料

msp430f149技术资料

MSP430是德州公司新开发的一类具有16位总线的带FLASH的单片机,由于其性价比和集成度高,受到广大技术开发人员的青睐.它采用16位的总线,外设和内存统一编址,寻址范围可达64K,还可以外扩展存储器。具有统一的中断管理,具有丰富的片上外围模块,片内有精密硬件乘法器、两个16位定时器、一个14路的12位的模数转换器、一个看门狗、6路P口、两路USART通信端口、一个比较器、一个DCO内部振荡器和两个外部时钟,支持8M的时钟。由于为FLASH型,则可以在线对单片机进行调试和下载,且JTAG口直接和FET(FLASH EMULATION TOOL)的相连,不须另外的仿真工具,方便实用,而且,可以在超低功耗模式下工作,对环境和人体的辐射小,测量结果为100mw左右的功耗(电流为14mA左右),可靠性能好,加强电干扰运行不受影响,适应工业级的运行环境,适合与做手柄之类的自动控制的设备.我们相信MSP430单片机将会在工程技术应用中得以广泛应用,而且,它是通向DSP系列的桥梁,随着自动控制的高速化和低功耗化,MSP430系列将会得到越来越多人的喜爱。

第三章MSP430F149 资源的应用介绍及开发

第一节中断介绍及存储器段介绍

中断在MSP430中得以广泛的应用,它可以快速进入中断程序,之后返回中断前的状态,其时序为:PC执行程序中断允许置位SR中的GIE置位 EINT(中断开)中断到,中断标志位(IFG)置位从中断向量表中读取中断程序的入口地址,进入中断程序执行中断程序中断允许位复位 RETI中断返回回到原来地址。具体应用将会在应用程序中的到应用。有关中断源和中断优先级及中断允许位、中断标志位在参考资料1上有详细介绍。

第2章MSP430F149单片机基础知识

第2章MSP430F149单片机基础知识

等价与:MOV INCD
@R10,0(R11) R0
在执行时寄存器的自动增量在取操作数之后:
立即模式:MOV #45h,TONI
; #45h →(TONI)
如果 PC = 0FF12h,TONI = 10A8h y = TONI–PC = 10A8h - 0FF16h = 1192h ; 相当于 MOV #45h ,y(PC) ; #45h →(PC+y)
01116h 01114h 1112h
0xxxxh 01234h 0xxxxh
01116h 01114h 1112h
0xxxxh 0A123h 0xxxxh
间接模式:MOV.B
@R10,0(R11) ;(R10)→(R11 + 0), ;MOV.B仅传送字节(8位数据)
操作前RAM 操作后RAM 0FA34h 0FA32h 0FA30h 0xxxxh 05BC1h 0xxxxh
常数发生寄存器CG1和CG2
使用常数发生寄存器产生常数的优点: 1、不需要特殊的指令 2、对7种最常用的常数不需要额外的字操作数 3、缩短指令周期:不经过MDB就能直接访问
寻址模式 访问整个地址空间的不同寻址模式由As(寻址位, 源操作数的寻址模式)和Ad(寻址位,目标作数的 寻址模式)模式位的内容确定:
ROM 0FF16h 0FF14h 0FF12h 00000h 4AABh 0xxxxh PC

MSP430f149端口功能及设置

MSP430f149端口功能及设置

MSP430f149 端口功能及设置

MSP430f149 常用的端口有P1、P2、P3、P4、P5、P6,它们都可以直接

用于输入/输出。MSP430 系统中没有专门的输入/输出指令,输入/输出操作通过传送指令来实现。端口P1~P6 的每一位都可以独立用于输入/输出,即具有位寻址功能。常见的键盘接口可以直接用端口进行模拟,用查询或者中断方式控制。由于MSP430 的端口只有数据口,没有状态口或控制口,在实际应

用中,如在查询式输入/输出传送时,可以用端口的某一位或者几位来传送状态信息,通过查询对应位的状态来确定外设是否处于准备好状态。

端口的功能:

(1)P1,P2 端口:I/O,中断功能,其他片内外设功能如定时器、比较器;

(2)P3,P4P5P6 端口:I/O,其他片内外设功能如SPI、UART 模式,A/D 转换

等;

MSP430 各端口具有丰富的控制寄存器供用户实现相应的操作。其中P1,P2

具有7 个寄存器,P3~P6 具有4 个寄存器。通过设置寄存器我们可以实现:

(1)每个I/O 位独立编程;

(2)任意组合输入,输出和中断;

430单片机个人总结

430单片机个人总结

430单片机个人总结

一 时钟部分(msp430f149单片机)

1、关于XT2

图1

2、关于XT1

图2 3、关于MCLK

PUC 信号之后,MCLK 来源于DCO 时钟信号(可以不设置,系统PUC 之后会有一个默认值),如果要设置MCLK 来源于XT1或者XT2,步骤如下:

1、打开需要的晶体振荡器;(作为MCLK 的时钟源,而不是默认的DCO )

2、清除OFIFG 标志位;

XT2Sx=11、XT2OFF=0时,XT2来源于外部时钟信号,也就是可以直接在XT2IN 管脚上施加一个时钟信号,而不需要在XT2IN 和XT2OUT 上加时钟源 当在XIN 和XOUT 两端加低频晶振时,晶振之间可以不加电容,而通过单片机内部给其配置电容 当在XIN 和XOUT 两端加高频晶振时,晶振之间需要配置电容

当LFXT1Sx=11、OSCOFF=0时,XIN 和XOUT 之间可以不加晶振,只需在XIN 管脚上施加一个时钟信号既可

3、延时50us;

4、测试OFIFG标志位。若OFIFG=0,说明设置成功;若OFIFG=1,设置未成功,重复2~3步骤;程序如下

BCSCTL1 &=~XT2OFF; // XT2 is on

do

{

IFG1 &=~OFIFG; // clear OSCFault flag

for(i=255;i>0;i--); // time for flag to set

}

while((IFG1 & OFIFG));

BCSCTL2 |=SELM_2+DIVM_3; //f(mclk)=f(XT2)/8;

MSP430-按键检测代码详解

MSP430-按键检测代码详解

MSP430-按键检测代码详解

使⽤MSP430F149的开发板,⾸先在⼀个函数进⾏讲解,然后下边是将部分代码写⼊了新建的key.c程序中P1⼝的0,1,2,3 I/O⼝⽤于检测四个按键的电平

P2⼝的0,1,2,3 I./O⼝⽤于点亮对应的LED灯

P3⼝的4 I/O⼝⽤于点亮按键按下指⽰灯

#include <MSP430X14x.h> // 这是程序都要包含的头⽂件,⾥边包含的很多寄存器和接⼝函数

#define KEY_Input (P1IN & 0x0f) // 这是定义⼀个变量⽤于检测按下的是哪⼀个键(⼀共四个按键)

// 使⽤P1.0,1,2,3来检测,⾼四位跟0相与都是零,低四位跟1相与是该位本来的值

void delay(void); //创建了⼀个简单的延时函数,这是对他的⼀个简单声明

unsigned char scandata[5] = {0xFF,0x7F,0xBF,0xDF,0xEF}; //这是定义了⼀个char类型的数组,根据不同的按键点亮对

void main( void)

{

 unsigned char temp,keyval=0XFF; // 创建了⼀个temp⽤于存储P1IN的值,keyval⽤于做数组的索引从⽽点亮不同的灯

 WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗

 P1DIR=0X00; // P1的⽅向寄存器(direction register),设置成输⼊模式

 P1OUT=0X00; // ⾸先将P1⼋个端⼝设置成⾼电平

MSP430F149单片机与X25043的接口与应用

MSP430F149单片机与X25043的接口与应用
吴 迪
朝 阳 120 ) 200 ( 辽宁朝 阳师范高等专科学 校 ,辽宁

要: 本文介绍了 T公 司生产的 M P3F4 单片机与可编 程看 门狗定 时器 X54 之 间的接 口应用 程序 , I S40 I 9 203 并详 细介绍 了 X54 203
的特点和工作 原理 , 实验证 明 , 经 此设计稳定可靠 。
w u Di
(i n gCny gT ahr C lg , hoag120 , hn) La i h oa ece oee C ayn 20 0 C ia on n s l
Ab ta t T i p p rp ee t a nefc p l ain p o rm f r ga sr c : hs a e rs ns n i t a ea p i t r ga o o rmma l w th o 2 0 3 w t c o t l rMS 4 0 1 9 T e p s p r r c o p be a d g X 5 4 i Mi c h mc nr l P 3 F 4 oe h ai oe- c

Ke r s MS 4 0 4 ;X 5 4 ;Snl hp poesr ywo d : P 3 F19 2 0 3 igec i rc so
1 引言
美 国 X C R公司生产的单片机监控芯 片 X 54 , IO 203 是微 处理

基于msp430f149的PWM红外解码(C语言)

基于msp430f149的PWM红外解码(C语言)

基于msp430f149的PWM红外解码的研究

摘要:

由于红外遥控的实用与经济性,本文研究PWM方式调制的红外解码的实现。

红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线遥控装置具有体积小、功耗低、功能强、成本低等特点,因而,继彩电、录像机之后,在录音机、音响设备、空凋机以及玩具等其它小型电器装置上也纷纷采用红外线遥控。工业设备中,在高压、辐射、有毒气体、粉尘等环境下,采用红外线遥控不仅完全可靠而且能有效地隔离电气干扰。

1红外遥控系统

通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如下所示:

(一)发射部分键盘矩阵、编码调制、LED红外发送器

键盘编码调制红外LED发射(38KHz的载波)

(二)接收部分

光/电放大解调52单片机解码

研究中应用VS0038一体化红外接收头(实物图如下:)

红外接收头VS0038能够正常接收的角度

2 遥控发射器及其编码

(1)遥控发射器专用芯片很多

(2)根据编码格式可以分成:脉冲宽度调制和脉冲相位调制两大类

现在我们研究以运用比较广泛,解码比较容易实现的脉冲宽度调制来加以说明。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征:

(a)采用脉宽调制的串行码

(b)以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”

(c)以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”

遥控器发出由“0”和“1”组成的32位二进制码,经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,,其中前16位为用户识别码,能区别不同的红外遥控设备,防止不同机种遥控码互相干扰。后16位为8位的操作码和8位的操作反码用于核对数据是否接收正确。

MSP430F149开发板套件用户手册

MSP430F149开发板套件用户手册
1、产品简介 ..................................................................................... 8 2、开发板硬件资源 .......................................................................... 8 3、开发板配套资料 ........................................................................ 10 4、开发板 C 语言代码实验案例 ...................................................... 11 三、实验案例操作方法 ........................................................................... 12 实验一、MSP430 开发板综合测试程序实验 .................................... 16 实验二、RS232 单片机串口 1 通信实验 .......................................... 17 实验三、LED 流水灯实验............................................................... 18 实验四、蜂鸣器(Buzzer)报警实验 .............................................. 19 实验五、定时器 A 中断实验 ........................................................... 20 实验六、定时器 B 中断实验 ........................................................... 20 实验七、USB 接口通信实验 ........................................................... 21 实验八、ADC12 AD 转换实验 ........................................................ 22 实验九、PWM 输出实验 ................................................................. 23 实验十、比较器 A 操作实验 ........................................................... 24 实验十一、片内 FLASH 读写实验 .................................................. 25 实验十二、WTD 运用实验.............................................................. 26 实验十三、WTD 中断延时实验 ..................................................... 27 实验十四、LED*4 数码管显示实验 ................................................ 27 实验十五、Key4*4 矩阵键盘扫描实验 ............................................ 28 实验十六、红外线发射控制实验..................................................... 30 实验十七、红外线遥控解码实验..................................................... 31 实验十八、24C16 I2C EEPROM 存储器读写实验 ............................ 32 实验十九、DS1302 实时时钟实验................................................... 33 实验二十、DS18B20 温度测量实验 ................................................ 33 实验二十一、nRF905 SPI 无线发送实验 ......................................... 34 实验二十二、nRF905 SPI 无线接收实验 ......................................... 35 实验二十三、LCD 1602 字符液晶显示实验..................................... 37 实验二十四、《uCOSⅡ操作系统》移植实验 ................................... 38 实验二十五、LCD 12864 图形液晶显示实验 ................................... 39 实验二十六、步进电机控制实验(需购买步进电机) ......................... 41 实验二十七、电子温度计 LCD 1602 字符液晶显示实验 .................. 41 实验二十八、电子时钟 LCD 1602 字符液晶显示实验...................... 42 实验二十九、nRF905 SPI 无线接收 LCD 1602 字符液晶显示 .......... 43 实验三十、电子万年历 LCD12864 图形液晶显示实验 ..................... 44 实验三十一、红外线遥控解码 LCD 1602 字符液晶显示实验 ........... 47 实验三十二、频率计 LCD 1602 字符液晶显示实验 ......................... 48 实验三十三、函数发生器 LCD12864 图形液晶显示实验 ................. 48

MSP430F149头文件详解中文注释

MSP430F149头文件详解中文注释

#ifndef __msp430x14x#define __msp430x14x/************************************************************* STANDARD BITS************************************************************/#define BIT0 0x0001#define BIT1 0x0002#define BIT2 0x0004#define BIT3 0x0008#define BIT4 0x0010#define BIT5 0x0020#define BIT6 0x0040#define BIT7 0x0080#define BIT8 0x0100#define BIT9 0x0200#define BITA 0x0400#define BITB 0x0800#define BITC 0x1000#define BITD 0x2000#define BITE 0x4000#define BITF 0x8000/************************************************************* STATUS REGISTER BITS************************************************************/#define C 0x0001#define Z 0x0002#define N 0x0004#define V 0x0100#define GIE 0x0008#define CPUOFF 0x0010#define OSCOFF 0x0020#define SCG0 0x0040#define SCG1 0x0080/* Low Power Modes coded with Bits 4-7 in SR */#ifndef __IAR_SYSTEMS_ICC /* Begin #defines for assembler */#define LPM0 CPUOFF#define LPM1 SCG0+CPUOFF#define LPM2 SCG1+CPUOFF#define LPM3 SCG1+SCG0+CPUOFF#define LPM4 SCG1+SCG0+OSCOFF+CPUOFF/* End #defines for assembler */#else /* Begin #defines for C */#define LPM0_bits CPUOFF#define LPM1_bits SCG0+CPUOFF#define LPM2_bits SCG1+CPUOFF#define LPM3_bits SCG1+SCG0+CPUOFF#define LPM4_bits SCG1+SCG0+OSCOFF+CPUOFF#include #define LPM0 _BIS_SR(LPM0_bits) /* Enter Low Power Mode 0 */#define LPM0_EXIT _BIC_SR(LPM0_bits) /* Exit Low Power Mode 0 */#define LPM1 _BIS_SR(LPM1_bits) /* Enter Low Power Mode 1 */#define LPM1_EXIT _BIC_SR(LPM1_bits) /* Exit Low Power Mode 1 */#define LPM2 _BIS_SR(LPM2_bits) /* Enter Low Power Mode 2 */#define LPM2_EXIT _BIC_SR(LPM2_bits) /* Exit Low Power Mode 2 */#define LPM3 _BIS_SR(LPM3_bits) /* Enter Low Power Mode 3 */#define LPM3_EXIT _BIC_SR(LPM3_bits) /* Exit Low Power Mode 3 */#define LPM4 _BIS_SR(LPM4_bits) /* Enter Low Power Mode 4 */#define LPM4_EXIT _BIC_SR(LPM4_bits) /* Exit Low Power Mode 4 */#endif /* End #defines for C *//************************************************************* PERIPHERAL FILE MAP************************************************************//************************************************************* 特殊功能寄存器地址和控制位************************************************************//*中断使能1*/#define IE1_ 0x0000 sfrb IE1 = IE1_;#define WDTIE 0x01 /*看门狗中断使能*/ #define OFIE 0x02 /*外部晶振故障中断使能*/ #define NMIIE 0x10 /*非屏蔽中断使能*/#define ACCVIE 0x20 /*可屏蔽中断使能/flash写中断错误*/#define URXIE0 0x40 /*串口0接收中断使能*/#define UTXIE0 0x80 /*串口0发送中断使能*//*中断标志1*/#define IFG1_ 0x0002 sfrb IFG1 = IFG1_; #define WDTIFG 0x01 /*看门狗中断标志*/#define OFIFG 0x02 /*外部晶振故障中断标志*/#define NMIIFG 0x10 /*非屏蔽中断标志*/#define URXIFG0 0x40 /*串口0接收

MSP430单片机C语言编程

MSP430单片机C语言编程

本章选择了一些简单的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 //声明库 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 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。 #include 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循环 } inter

msp430f149 PWM

msp430f149 PWM

#include

#define Exterior_8MHz 0x55 //MCLK和SMCLK选择外部8M高频晶振

#define u8 unsigned char

#define u16 unsigned short

#define u32 unsigned long

void Delay_ms(u16 Time) //软件ms延时,1MHz频率下

{

#ifdef Exterior_8MHz

u16 i,j,z;

for(i=0;i

for(j=0;j<10;j++)

for(z=0;z<158;z++)

;

#else

u16 i,j;

for(i=0;i

for(j=0;j<200;j++)

;

#endif

}

void Delay_us( u16 Time ) //软件us延时,1MHz频率下

{

u16 i;

for(i=0;i

{

_NOP();

_NOP();

}

}

void System_Clock_Init(void) //系统时钟源配置

{

#ifdef Exterior_8MHz

/*------选择系统主时钟为8MHz-------*/

u8 z;

BCSCTL1 &= ~XT2OFF; //打开XT2高频晶体振荡器

do

{

IFG1 &= ~OFIFG; //清除晶振失败标志

for (z = 0xFF; z > 0; z--); //等待8MHz晶体起振

}

while ((IFG1 & OFIFG)); //晶振失效标志仍然存在?

BCSCTL2 |= SELM_2 + SELS; //MCLK和SMCLK选择高频晶振

#else

MSP430F149+UART+FFT

MSP430F149+UART+FFT

//简述://一.所用到的器件:1.MSP430F149主控芯片 2.ADS7841芯片 // 3.12864显示液晶 4.好好学习,天天向上//二.简易功能:通过MSP430F149模拟SPI与ADS7841通信采集电压(至于为何不用内部AD,当时那个内部AD用完了)// 进行FFT运算(FFT部分是参考网上的并非原创,勿喷),将运算结果用12864显示,并通过UART上传到上位机//搭建工程说明:我用的是IAR,,这个看个人爱好,,CCS功能挺强大的,IAR个人感觉简易型//工程里有5个文件:1.main.c 2.FFT.h 3.YM12864.h 4.trans.c 5.trans.h//由于本人偷懒,FFT.h YM12864.h这两个文件直接写成.H文件了,这样不好的(原因:等你工程复杂很大的时候这样很糟糕的)//养成一个编程的好习惯 trans.c trans.h 这样写比较好,,模块化程序一个.C文件配一个.H文件//至于用MSP430F149做FFT运算,那是玩玩,,非实用,,,毕竟DSP才是这方面的霸主//主函数 main.c如下#include #include "math.h"#include "ym12864.h"#include "FFT.H"#include"trans.h"#include"uart.h"#define uchar unsigned char#define uint unsigned int#define ulong unsigned long#define CPU_F ((double)8000000)#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))#define DCLK_UP P3OUT |= BIT0#define DCLK_DOWN P3OUT &= ~BIT0#define CS_UP P3OUT |= BIT1#define CS_DOWN P3OUT &= ~BIT1#define DIN_UP P3OUT |= BIT2#define DIN_DOWN P3OUT &= ~BIT2#define ADS7841_BUSY P3IN&BIT3#define DOUT P2IN&BIT4 uint zhi[128];float mo[128];uchar tran0[8];ulong V0=0;// 系统时钟初始化 : MCLK为8MHZ,SMCLK为8MHZ//*************************************************************************void Clock_Init(){uchar i;BCSCTL1&=~XT2OFF; //打开XT振荡器BCSCTL2|=SELM_2+SELS; //MCLK为8MHZ,SMCLK为8MHZ do{IFG1&=~OFIFG; //清除震荡标志for(i=0;i<100;i++)_NOP(); //延时等待}while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待IFG1&=~OFIFG; }//*************************************************************************void ADS7841_IOinit(){P3DIR |= BIT0+BIT1+BIT2;//输出 P3.0:DCLK,P3.1:CS,P3.2:DINP3DIR &= ~BIT3; //输入 P3.3:BUSYP2DIR &= ~BIT4; //输入 P2.4:DOUT}/******************************************************************** 函数原型:unsigned int ADS7841_Read_Data()** 功 能:SPI总线的ADS7841驱动程序** 出口参数:unsigned int 返回所读取的12位数据** 说 明:ADS7841为12位A/D,先对其进行设置:数据位D0-D7,其中D0-D1是设置ADC的功耗模式,D2是

第3章_MSP430单片机输入输出接口_对比

第3章_MSP430单片机输入输出接口_对比

第 3 章 1/0 口基本操作 MSP430F149 单片机系列有 6 组 110 口: Pl----- 肘。每个 1 / 0 口都有 8 个可以独立编程的 引脚 。 MSP430F149 单片机每个引脚都有第二功能,并且每个引脚可以单独设置成输入、输出 或者第一;功能 。 同时 .Pl 和 P2 口具有中断功能 .Pl 和 P2 口的每个引脚都可以单独设置成中 断,并且都可以单独设置成上升沿或者下降沿触发中断 。 Pl 口的所有引脚共用→个中断向 量, P2 口的所有引脚也共用一个中断向量,但它们的优先级和向量地址不一样,见 2. 5 节系统 中断。MSP430F149 系列单片机的 1 / 0 口主要有以下特征: 》每个J/ O 口可以位独立编程设置; 》输入、输出可以任意结合使用; :,. P 1 和 P2 口的中断功能位可以单独设置; 》有独立的输入 / 输出寄存器 。 3.1 1/0 口的基本操作流程 MSP430F149 的J/ O 口操作都是通过读 /写寄存器来完成的。与 MSP4 3 0F149 单片机的 J/ O 口中相关的寄存器有 PxDIR 、 PxlN 、 PxOUT 、 PxSEL 、 PxJFG 、 Px1E 和 PxlES ,其中后面三 个是中断寄存器。 P3 、 P4 、町、 P6 不具备中断功能,只与前面四个寄存器有关; Pl 、 P2 具有中 断功能.与上面所有的寄存器都有关系,详细请参考 3. 2 节寄存器说明部分 。 当 J / O 口作为 一 般的输入 /输出口使用时,其基本操作流程如下: ①选择I! O 口功能.基本 J/O 模式或其他模式(即设置 PxSEL 寄存器) ; ②设置方向寄存器 (PxDIR) ; 马-MSP430 时恒的平一一…一一一一一 ①读出外部输入值 (PxIN) 或写人相应值 CPxOUT) ; 对 J / O 中断操作的基本流程如下: ① 设置 1/ 0 模式; ① 设置中断触发方式 CPxIES 寄存器) ; ①允许中断 C PxJE 寄存器 ) ; ④开总中断(调用_EINTC)或_B1S_SRCL PM4_ bi ts 十 GIE) 函数) ; ① 等待中断.有中断时执行中断服务程序 。 3.2 寄存器 1.功能选择寄存器 PxSEL P xS E 1, ( .T = 1 . 2 , 3 . 4 , 5 . 6) ,设置相应的位为1,则该位对应的号|脚为外围模块的功能,即 第二功能;设置相应的位为 0 ,则该位对应的引脚为普通1/ 0 口。 PxSEL 寄存器的各位如 图 3 . 1 所示 。 其复位值全为 0 句默认为 1 / 0 口功能 。 |PxSEL.7 I 时EL. 6 1 时EL. 5 1 PxSEL4 I PxSEL.3 I PxSEL.2 1 PxSEL. l I PxSEL.O I 图 3.1 PxSEL 寄存榻的各位 注意:为了避免对某些位操作的时候影响其他的位,椎荐使用位操作指令进行读 / 写,请参考 3. .3节具体 的程序设计实例 。 2. 方向控制寄存器 PxDIR P x fJIR (.1' =:: 1 .2.3.4 .5.6) :该寄存器控制 PX 口的各个引脚的方向 。 设置相应的位为1, 则该位对应的 fJ I 脚为输出;设置相应的位为 0 ,则该位对应的引脚为输入。 PxDIR 寄存器的各 个位如图 j. 2 所示 。 其复位值全

MSP430F149中文资料.pdf

MSP430F149中文资料.pdf

MSP430单片机的开发及应用

设计人:陈小忠

西安邮电学院电子信息工程系电子0002班

西安邮电学院63# 710061

2003年7月

目录

第一章概述

第二章MSP430 F149语言介绍

第一节开发环境及程序下载

第二节语言介绍

第三章MSP430F149 资源的应用介绍及开发第一节中断介绍及存储器段介绍

第二节硬件乘法器

第三节P口

第四节定时器及数模转换

第五节时钟模块

第六节USART通信模块

第七节比较器

第八节模数转换

第四章MSP430F149开发板的介绍及测试

第一节模数转换模块

第二节传感器模块

第三节外存和实时时钟模块

第四节485和232模块

第五节电源管理模块及晶振模块

第六节PWM波形滤波

第一章概述

MSP430是德州公司新开发的一类具有16位总线的带FLASH 的单片机,由于其性价比和集成度高,受到广大技术开发人员的青睐.它采用16位的总线,外设和内存统一编址,寻址范围可达64K,还可以外扩展存储器.具有统一的中断管理,具有丰富的片上外围模块,片内有精密硬件乘法器、两个16位定时器、一个14路的12位的模数转换器、一个看门狗、6路P口、两路USART 通信端口、一个比较器、一个DCO内部振荡器和两个外部时钟,支持8M 的时钟.由于为FLASH 型,则可以在线对单片机进行调试和下载,且JTAG口直接和FET(FLASH EMULATION TOOL)的相连,不须另外的仿真工具,方便实用,而且,可以在超低功耗模式下工作,对环境和人体的辐射小,测量结果为100mw左右的功耗(电流为14mA左右),可靠性能好,加强电干扰运行不受影响,适应工业级的运行环境,适合与做手柄之类的自动控制的设备.我们相信MSP430单片机将会在工程技术应用中得以广泛应用,而且,它是通向DSP系列的桥梁,随着自动控制的高速化和低功耗化 ,

基于MSP430F149单片机最小系统设计及其应用

基于MSP430F149单片机最小系统设计及其应用

– 28 – 2012年第11卷第1期

现代建设 Modern Construction

0 引言

随着现代电子技术和计算机技术的飞速发展,单片机技术已经渗透到人类生活的各个方面,在自动化装置、智能化仪器仪表、过程控制和家用电器等许多领域得到日益广泛的应用, 单片机家族也越来越庞大,品种越来越多,且在技术上各有特色, 美国德州仪器公司(TI公司)新推出的MSP430F149单片机功耗低, 功能强大, 为广大硬件设计师所青睐。

单片机芯片配以必要的外部器件,一般包括电源供入及电源开关、复位电路、晶振、输入输出电路等就能构成最小系统,结构简单。

MSP430F149芯片有60KB+256字节FLASH,2KBRAM,包括基本时钟模块、看门狗定时器、带3个捕获/比较寄存器和PWM输出的16位定时器、带7个捕获/比较寄存器和PWM输出的16位定时器、2个具有中断功能的8位并行端口、4个8位并行端口、模拟比较器、12位A/D转换器、2个串行通信接口等模块。MSP430F149芯片具有如下特点:

(1)功耗低:电压2.2V、时钟频率1MHz时,活动模式芯片电流为200μA,关闭模式时电流仅为0.1A;(2)高效

16位RISC-CPU,27条指令,8MHz时钟频率时,指令周期时间为125ns,绝大多数指令在一个时钟周期完成;(3)低电压供电、宽工作电压范围:1.8~3.6V;(4)灵活的时钟系统:两个外部时钟和一个内部时钟;(5)低时钟频率可实现高速通信;(6)具有串行在线编程能力;(7)强大的中断功能;(8)唤醒时间短,从低功耗模式下唤醒仅需6μs;(9)ESD保护,抗干扰力强;(10)运行环境温度范围为-40~+85℃,适合于工业环境。

msp430F149简易教程

msp430F149简易教程

MSP430单片机的主要特性
• 超低功耗 • 0.1 A掉电模式 0.8 A等待模式 250 A /1MIPS (1 S时钟唤醒时间) 50nA 端口漏电流 高集成度 10bit SAR ADC (200ksps) 12bit SAR ADC (200ksps) 12bit DAC OP AMP,PGA,LCD DRIVER , 硬件乘法器、
各模块简要介绍—8、WDT+
主要功能是在程序跑飞时能 够控制系统的重新启动,当不需 要时可以禁止该功能,此时可以 当成一个间隔计数器使用。
以下是关看门狗程序: WDTCTL=WDTPW+WDTHOLD; 0x5A00 0x0080 //关看门狗
WDTCTL定义
各模块简要介绍—9、硬件乘法器
hardware multiplier
MSP430 3xx : ROM/OTP 产品系列MCU,提供2.5伏至5.5伏工作电压, 高达32kB和4MIPS(带有FLL)
MSP430单片机系列种类
非基于LCD
MSP430x1xx: 基于闪存/ ROM的MCU提供1.8伏至3.6伏的工作电压、 高达60kB和8MIPS(带有基本时钟) MSP430F2xx: 基于闪存的MCU 提供1.8 伏至3.6 伏工作电压、掉电复位及 16MIPS(带有基本时钟) MSP430F5XX: 基于闪存的MCU 提供1.8 伏至3.6 伏工作电压、掉电复位及 18MIPS(带有基本时钟)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MSP430F149的看门狗操作

1)看门狗的图解

图1 看门狗图解

2)看门狗介绍

看门狗由一个16位寄存器控制,高八位是密匙,密匙密码是05AH,读取是069H。MSP430F149的看门狗是系统默认开启的,所有一般不用的时候,程序一开始就关闭看门狗。看门狗有两种工作模式:

1.看门狗模式。

2.定时器模式。

3)看门狗的控制寄存器

1.WDTCTL

●WDTPW:高八位是密匙。一般IAR的头文件里面都包含有。

●WDTHOLD:选择是否打开看门狗。0开1关。

●WDTNMIES:当复位端用作NMI(外部的非可屏蔽中断)的时候,选择是上升沿触

发中断还是下降沿触发中断。0上升1下降。

●WDTNMI:选择复位端是作为复位端口还是NMI(外部的非可屏蔽中断)端口。0

复位1NMI。

●WDTTMSEL:选择看门狗模式还是定时器模式。0看门狗1定时器。

●WDTCNTCL:看门狗计数清零。1清零。

●WDTSSEL:看门狗的时钟来源选择。0子系统时钟1主系统时钟。

●WDTISx:看门狗时钟分频选择。

2.IE1

●NIMIE:外部非可屏蔽中断使能。

●WDTIE:看门狗中断使能。(当看门狗做定时器的时候也是这个使能)

3.IFG1(一般C语言不操作,都会有硬件置位)

●NMIIFG:外部非可屏蔽中断标志。

●WDTIFG:看门狗中断标志。

4)当看门狗用作定时器使用的时候的操作。

1.把看门狗设置到定时器模式。(也还可以设置触发边沿,选择时钟和分频)

2.清零看门狗。

3.打开看门狗中断使能。

#include

#define uint unsigned int

void main()

{

WDTCTL=WDT_MDLY_32;//相当于WDTPW+WDTTMSEL+WDTCNTCL

//也就是密匙+选择定时器模式+清零看门狗

IE1|=WDTIE;//打开看门狗中断使能,由于看门狗是非可屏蔽中断所有不用

//打开总中断IE

while(1)

{

LPM3;

}

}

#pragma vector=WDT_VECTOR

//看门狗的中断入口地址是WDT_VECTOR,NMI的入口地址是NMI_VECTOR __interrupt void P1RT(void)

{

//中断程序,硬件自动清除中断标志所有不用软件清除。

}

相关文档
最新文档