MSP430F149单片机定时器B捕获例程

TBCCTL1 =CAP+CM_1+CCIS_0+SCS+CCIE; //捕获模式,上升捕获,选择CCI1A,同步,捕获中断开
TBCCTL2 =CAP+CM_1+CCIS_0+SCS+CCIE; //捕获模式,上升捕获,选择CCI2A,同步,捕获中断开
TBCCTL3 =CAP+CM_1+CCIS_0+SCS+CCIE; //捕获模式,上升捕获,选择CCI3A,同步,捕获中断开
*
*
*
**/
#include <msp430x14x.h>
#define uint unsigned int
#define uchar unsigned char
uint ccr0=0;
uint ccr1=0;
uint ccr2=0;
uint ccr3=0;
uint ccr4=0;
uint ccr5=0;
TBCCTL4 =CAP+CM_1+CCIS_0+SCS+CCIE; //捕获模式,上升捕获,选择CCI4A,同步,捕获中断开
TBCCTL5 =CAP+CM_1+CCIS_0+SCS+CCIE; //捕获模式,上升捕获,选择CCI5A,同步,捕获中断开
TBCCTL6 =CAP+CM_1+CCIS_1+SCS+CCIE; //捕获模式,上升捕获,选择CCI6A,同步,捕获中断开
#pragma vector=TIMERB1_VECTOR
__interrupt void Timer_B1(void)
{
switch(TBIV) //timer B中断向量
{
case 2: //P41口
{
ccr1=TBCCR1;
}break;
case 4:
ccr2=TBCCR2; //P42口
break;
case 6:
ccr3=TBCCR3; //P43口
break;
case 8:
ccr4=TBCCR4; //P44口
break;
case 10:
ccr5=TBCCR5; //P45口
break;
case 12:
ccr6=TBCCR6; //P46口
break;
case 14: //溢出
break;
}
/**
***************************************************************
MSP430F149单片机定时器B捕获例程
日期:2013.9.10
姓名:MRT
notice:捕获比较中断入口向量相同
**************************************************************
P4SEL|= BIT6;
P4DIR&= ~BIT6;
/*----------定时器B CCIS_0/CCIS_1(CCIxA/CCIxB)两个外部输入中断公用一个IO-----------------*/
TBCCTL0 =CAP+CM_1+CCIS_0+SCS+CCIE; //捕获模式,上升捕获,选择CCI0A,同步,捕获中断开
P4SEL|= BIT0;
P4DIR&= ~BIT0;
P4SEL|= BIT1;
P4DIR&= ~BIT1;
P4SEL|= BIT2;
P4DIR&= ~BIT2;
P4SEL|= BIT3;
P4DIR&= ~BIT3;
P4SEL|= BIT4;
P4DIR&= ~BIT4;
P4SEL|= BIT5;
P4DIR&= ~BIT5;
uint ccr6=0;
/*****************************main函数***********************/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P5DIR|= BIT6; // P5.6输出
P5SEL|= BIT6; // P5.6输出ACLK
TBCTL = TBSSEL_1 + MC_1 ; //ACLK, UP模式TBCCRX要在中断时候抓取16位定时计数器中的数值
_EINT(); //开总中断
while(1)
{
}
}
/****************************定时器B捕获中断入口1-6*********************************/
}
/****************************定时器B捕获中断入口0*********************************/
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B0(void)
{
ccr0 = TBCCR0; //P40口
}
/*******************************END***********************************************/
合集下载

MSP430F149 定时器

MSP430F149 定时器

MSP430F149 定时器(1)利用定时器A的模式2(连续)实现的定时资料利用定时器A的模式2(连续)实现的定时资料在程序中对TACTL的控制,当TACTL为如下的赋值时TACTL = TASSEL_2 + MC_2 + TAIE; // SMCLK, contmode, interrupt可以改变TASSEL_X来实现不同的定时,当为TASSEL_1时选ACLK为定时时钟,可以实现最短2S的定时,其次为2S的倍数的定时。

当为TASSEL_2时选SMCLK为定时时钟,定时取决于SMCLK的时钟源,1、SMCLK选DCO = 800KHZ为时钟源,最短定时时间为0.08S 的定时,其次为其倍数。

2、SMCLK选XT2也即外部高频晶振,此时定时取决于晶振频率,及其对分频的设置上。

主要是设置BCSCTL1及BCSCTS2.BCSCTL1 &= ~XT2OFF;BCSCTL2 |= SELS + DIVS_3;通过对上面两句的不同设置,可实现不同的延时。

/****************************************************************************** // MSP-FET430P140 Demo - Timer_A, Toggle P3.4, Overflow ISR, DCO SMCLK//// Description: Toggle P3.4 using software and Timer_A overflow ISR.// In this example an ISR triggers when TA overflows. Inside the TA// overflow ISR P3.4 is toggled. Toggle rate is approximatlely 12Hz.// Proper use of the TAIV interrupt vector generator is demonstrated.// ACLK = n/a, MCLK = SMCLK = TACLK = default DCO ~800kHz//// MSP430F149// ---------------// /|| XIN|-// | | |// --|RST XOUT|-// | |// | P3.4|-->LED//// Dasheng// LiTian Electronic Inc.// Feb 2008// Built with IAR Embedded Workbench Version: 3.42A功能: 由定时器A,采用800KHz的DCO,来实现近一秒的定时中断;计算方法: T = 1/800,000 = 1.25uS so 根据连续计数模式,当计到0XFFFF时,发生溢出中断因此溢出一次的时间是: 65536*1.25 = 0.0819S,所以计时1秒需12次溢出。

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上有详细介绍。

MSP430单片机的片上存储器共为64K,表示为图:第三节 P 口MSP430F149有6个8位的P口,其中P1、P2口占两个中断向量,共可以接16 个中断源,还可以直接利用 P口的输入输出寄存器,直接对外进行通信。

LaunchPad-MSP430入门系列4-定时器模块(定时、计数、捕获)

LaunchPad-MSP430入门系列4-定时器模块(定时、计数、捕获)

LaunchPad-MSP430入门系列4-定时器模块(定时、计数、捕获)Version 1.2文先,介绍几个英文缩写的意思以及一些注意的地方。

1.Timer0/1 定时器0/1,在User's Guide中用的是TimerA/B,所指的也是Timer0/1 。

G2553Datasheet中用的是Timer0/1 ,本文以G2553Datasheet为准。

全文以Timer0为例,Timer1类同。

2.TAxR(x = 0/1)定时器x对应的计数器,这是一个只读寄存器。

硬件自动驱动计数。

3.EQUy(y = 0/1/2)计数事件发生寄存器,当TAxR = TAxCCRy时EQUy置1。

4.定时器简介MSPG2553共有两个定时器,Timer0、Timer1,他们都是十六位的定时、计数器,内含三个捕获、比较寄存器。

两个定时器均支持多个捕获、PWM输出、间歇性计时,定时器包含多个中断源,可以是计数溢出中断、捕获中断等等。

定时器包含:●同步十六位定时、计数器运行模式。

●时钟源可从MCLK、SMCLK、ACLK任意选择。

●三个比较、捕获寄存器。

●中断向量寄存器能快速解码的所有定时器中断本文以Timer0为例详细介绍430的定时器模块,下图是Timer0组成框图0-1定时器0组成框图下面简要介绍一下该硬件框图的意思,从左上角看,首先是一个时钟源选择寄存器TASSELx,通过该寄存器选择定时器的时钟源,选择了时钟源后有一个分频器Divider,相应的设置寄存器是IDx,再过来就到一个定时器的核心部分,一个16位的定时器TAR。

其右侧有一个定时器的计数模块,MCx寄存器用来设置计数模式。

接下来,TAR正下方有三个横线,右侧标有CCR0、CCR1、CCR2,意思是CCR1、CCR0的框图和下方CCR2的框图是一样的。

此处省略不写。

在CCR中,左上角为一个捕获源选择寄存器。

可以从CCI2A、CCI2B、GND或者VCC选择捕获源,选择捕获源后有一个选择捕获模式寄存器Capture Mode,然后过来有一个捕获溢出状态寄存器COV,SCS同步/异步捕获模式选择位,然后连接到捕获比较寄存器。

MSP430F149定时数据采集程序

MSP430F149定时数据采集程序

MSP430F149定时数据采集程序[调试通过]该程序是用于过程控制的,改一下采样时间,就可以用于运动控制,里面没有添加如PID控制算法,自己添加自己的控制算法就可以了,希望对大家有用!#include <msp430x14x.h>#define RS_H P5OUT |=BIT3 //Data Register is selected#define RS_L P5OUT &=~BIT3 //Instruction Register is selected#define READ P5OUT |= BIT2 //读LCD#define WRITE P5OUT &= ~BIT2 //写LCD#define EN_H P5OUT |= BIT1 //Enable Read/Write Operation#define EN_L P5OUT &=~BIT1 //Disable Read/Write Operationunsigned char a[]="AD&DA change!";int AD_result;void Init_CLK(void); //时钟初始化函数void Init_ADC(void); //AD转换函数void Init_TimerA(void);void DATransfer(unsigned DA_data);//DA转换子函数void Init_Port(){P3SEL=0x00; //LCD所需端口设置P3DIR=0xFF;P3OUT&=~BIT5; //74HC245的DIR为低电平,输入方向由B端到A端P5SEL=0x00; //P5输出P5DIR=0xFF;P5OUT=0x00;P4SEL=0x00; //P4输出P4DIR=0xFF;P4OUT=0x00;P6SEL=0xF0; //P6.4-p6.5作为AD输入通道,P6.0-P6.3作为一般的IO口P6DIR=0xFF;P6OUT=0x00;}void Delay(unsigned int i) //延时子程序{while(i--); //延时时间为i*5+6个时钟周期}void Write_Command(unsigned char command ){P4OUT=command;RS_L; //选择程序寄存器WRITE; //允许写操作EN_H; //液晶使能Delay(50);//延时EN_L; //液晶读写操作禁止Delay(50);}void Write_Data(unsigned char data ){P4OUT=data;RS_H; //选择数据寄存器WRITE; //允许写操作EN_H; //液晶使能Delay(50); //延时EN_L ; //液晶读写操作禁止Delay(50);}void Clear_Second_Line() //用于删除2*16字符液的晶第二行的函数{int i=16;Write_Command(0xC0); //设置DDRAM的初始地址while(i--){P4OUT=0x20;RS_H; //选择数据寄存器WRITE; //允许写操作EN_H; //液晶使能Delay(50); //延时EN_L ; //液晶读写操作禁止Delay(50);}}void Init_LCD(void){Write_Command( 0x38 );//8位总线接口,双行显示,5*7点阵型Delay(100);Write_Command(0x0F);//开显示,开光标,光标闪烁Delay(100);Write_Command(0x01);//清屏,将空格字符ASCII码20H写入到所有的DDRAM单元Delay(2500);Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移Delay(100);Write_Command(0x80);//设置DDRAM的初始地址}void Init_ADC(void){//P6SEL = BIT7; //设置P6.7为模拟输入A7ADC12CTL0 &= ~(ENC); //设置ENC为0,从而可以修改ADC12寄存器的值ADC12CTL0 += ADC12ON+MSH; //开A/D转换,允许多次采样ADC12MCTL7 = EOS+INCH_7;//ADC12MCTL7的输入通道为A7,参考电压分别为AVSS和AVCC ADC12CTL1 = 0X00; //转换的起始地址为:ADCMEM7ADC12CTL1 = CSTARTADD0+CSTARTADD1+CSTARTADD2;ADC12CTL1 += SHP; //采样脉冲来自采样定时器ADC12CTL1 += CONSEQ_2; //单通道多次转换ADC12CTL1 += ADC12SSEL0; //ADC12内核时钟源为ACLKADC12IE = 0x00; //关闭各个通道的转换中断ADC12CTL0 |= ENC; //使能ADC转换return;}void Init_TimerA(void){TACTL = TASSEL0 + TACLR; // 选择ACLK:32K,清除TARTACTL +=ID1; // 1/8 SMCLKTACTL +=ID0;CCTL0 = CCIE; // CCR0 中断允许CCR0 = 2000; // 时间间隔为 0.5STACTL |= MC0; // 增记数模式return;}void Init_CLK(void){unsigned int i;BCSCTL1 = 0X00; //将寄存器的内容清零//XT2震荡器开启//LFTX1工作在低频模式//ACLK的分频因子为1do{IFG1 &= ~OFIFG; // 清除OSCFault标志for (i = 0x20; i > 0; i--);}while ((IFG1 & OFIFG) == OFIFG); // 如果OSCFault =1BCSCTL2 = 0X00; //将寄存器的内容清零BCSCTL2 += SELM1; //MCLK的时钟源为TX2CLK,分频因子为1BCSCTL2 += SELS; //SMCLK的时钟源为TX2CLK,分频因子为1}#pragma vector=TIMERA0_VECTOR //定时器A0的中断函数__interrupt void TimerA_ISR(void){float AD_data;char a;char b;int m;int n;// 读出转换结果P5OUT^=BIT6;while((ADC12IFG & BIT7)==0) ; //判断有没有转换结束_NOP();ADC12CTL0 &= ~ENC; // 关闭转换P5OUT^=BIT5;AD_result = ADC12MEM7; //读到AD转换的12位二进制数DATransfer(AD_result);if((ADC12IFG & BIT7)==0){P5OUT^=BIT4;}AD_data=AD_result*3.3/4095; //将读到的12位二进制数转化为对应的电压m=(int)AD_data;n=(int)(AD_data*10-m*10);a=48+m; //将符点型的电压值转化为字符数,便于液晶显示 b=48+n;Clear_Second_Line(); //删除16*2字符液晶的第二行数据Write_Command(0x06); // 设置液晶进入方式,DDRAM自增,整个显示右移Delay(100);Write_Command(0xC0); //设置液晶DDRAM的初始地址Write_Data(a);Delay(100);Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移Write_Data('.');Delay(100);Write_Command(0x06);//设置进入方式,DDRAM自增,整个显示右移Delay(100);Write_Data(b);ADC12CTL0 |= ENC; // 允许AD转换ADC12CTL0|=ADC12SC; //开始新的转换}void DATransfer(unsigned DA_data) //DAC转换子程序{int i;unsigned int da_data;P6OUT&=~BIT0; //CS为低电平for(i=0;i<16;i++){P6OUT&=~BIT2; //SCLK为低电平P6OUT&=~BIT1;da_data=0x3000+(DA_data&0x0fff); //送入待转换的数字量,并选中A通道输出 da_data=((da_data>>(15-i))&0x0001)<<1;P6OUT|=da_data ; //输出一位二进制数Delay(10);P6OUT|=BIT2; //SCLK为高电平Delay(10);}P6OUT&=~BIT2; //SCLK为低电平P6OUT|=BIT0; //CS为高电平,开始转换数据Delay(10);}void main(void){WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗_DINT(); // 关闭中断Delay(50000);Init_Port();Init_LCD();Init_CLK(); // 初始化Init_ADC();Init_TimerA();_EINT(); // 打开中断for(unsigned int i=0;a!='\0';i++){Write_Data(a);}P5OUT|=BIT7;ADC12CTL0 |=ADC12SC;while(1){ }}。

MSP430F149寄存器整理

MSP430F149寄存器整理

各个模块的寄存器:1)CPU内部寄存器(状态寄存器SR)2)外围模块寄存器和特殊寄存器中断使能寄存器(IE1)UTXIE0USART0模块的传输中断使能控制比特。

置1时模块的中断使能,0时关闭URXIE0USART0接收中断控制。

1中断使能、0中断关闭ACCVIEFLASH 存储器非法访问中断使能控制比特位。

1使能、0时关闭。

NMIE 非屏蔽中断使能控制。

1使能、0关闭OFIE 晶体出错中断使能控制。

1使能、0关闭WDTIE看门狗中断使能控制。

1使能看门狗中断、0关闭中断使能寄存器(IE2)****UTXIE15URXIE14********UTXIE1USART1模块传输中断使能控制。

1使能、0关闭URXIE1USART1模块接收中断使能控制。

1使能、0关闭中断标志寄存器(IFG1)UTXIFG07URXIFG 06**NMIIFG4****OFIFG 1WDTIFGUTXIFG0USART0传输中断标志位。

1时有中断产生、0没有URXIFG0USART0接收中断标志位。

1时有中断产生、0没有NMIIFG非屏蔽中断标志位。

1时有中断产生、0没有UTXIE07URXIE06ACCVIE5NMIIE4**3**2OFIE1WDTIEOFIFG晶体出错中断标志位。

1时有中断产生、0没有WDTIFG看门狗中断标志。

1时有中断产生、0时没有中断标志寄存器(IFG2)****UTXIFG15URXIFG14********UTXIFG1USART1传输中断标志位。

1时有中断产生、0时没有URXIFG1USART1接收中断标志位。

1时有中断产生、0时没有模块使能寄存器1(ME1)UTXE0 7URXE0USPIE0************UTXE0USART0的传输使能。

1时USART0传输模块使能、0时不工作URXE0 USPIE0USART作为UART时,该比特控制UART的接收功能,设置为1时接收模块使能,0时不工作;作为SPI时,设置为1,则SPI使能,0时SPI不工作。

第四章 MSP430F149看门狗定时器

第四章 MSP430F149看门狗定时器
程序如下:
#include <msp430x14x.h> void main(void) {
WDTCTL=WDT_ADLY_1000;//1000ms 定时 //WDT_ADLY_1000=WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL
P6DIR |=BIT0;//P6.0 输出 P6OUT |=BIT0;//P6.0 输出高电平关闭 LED 灯 IE1 |=WDTIE;//允许 WDT 中断 _EINT();//开放系统中断 while(1) {
例:设置看门狗间隔定时器模式,选择 ACLK(32768Hz)时钟源,定时 1s。
WDTCTL=WDTPW + WDTTMSEL + WDTCNTCL + WDTSSEL;
口令
定时工作模式 清除计数器
选择 ACLK
思考:
选择 ACLK(32786Hz)时钟源,定时 250ms/16ms/1.95ms,如何设置 WDTCTL?
说明:
WDTPW——口令,固定格式。
WDTCNTCL——计数器清零
WDTCTL.2(WDTSSEL)——WDTCTL 第二位时钟源选择位,
0:选择 SMCLK
1:选择 ACLK
WDTISx——定时间隔选择控制位,T 为时钟源时钟周期。
WDTISx=00,定时间隔 T×215 WDTISx=01,定时间隔 T×213
2、IE1 中断使能寄存器 1
7
6
5
4
3
2
1
0
NMIIE
WDTIE
rw-0
rw-0
NMIIE:非屏蔽中断允许控制位。
NMIIE=0,禁止 NMI 中断

基于MSP430F149单片计算机的可编程定时开关设计

基于MSP430F149单片计算机的可编程定时开关设计本文基于MSP430单片机理论,发挥其“低功耗”的特性,以MSP430F149单片机为核心部件、ZLG7290 I2C接口键盘/LED驱动器为输入/显示设备的系统构架设计开发硬件。

标签:定时开关;低功耗;单片机;MSP430F149引言定时开关应用于生产生活的诸多领域。

但是,目前市场上大量使用的定时开关系统,控制对象单一,定时时间不可调节。

比如说,有的只能控制路灯,有的只能控制单一生产设备等。

然而现如今可编程逻辑器件、单片计算机等的蓬勃发展,不但填补了上述欠缺,而且使其应用领域进一步扩大,应用深度也进一步加深。

可编程定时开关[1]的实现方案具有极高的可定制性,有基于简单的C51单片计算机实现的,也有基于可编程逻辑器件FPGA实现的,甚至有基于PC(个人计算机)实现的,但最普遍的还是基于单片机来实现的。

单片机实现可编程定时开关控制设计简洁,效果良好,成本低廉。

本设计主要通过MSP430F149单片机实现功能。

1 MSP430F149单片机的说明[2]为了得到最容易实现设计目标且性价比高的机型,在芯片的选型上,主要需考虑系统功耗资源要求、芯片功能要求(考虑引脚、体积)以及系统存储器容量的要求。

MSP430F149单片机集中体现了现代单片机先进的低功耗设计理念,其设计结构完全以系统低功耗运行为核心。

单片机采用FLASH存储器作为程序代码及信息存储,因此可实现多次的写入和擦除,也可实现在线写入,且存储空间大,其中ROM为60K,RAM为2K。

在单片机内集成了一个12位精度、高效通用的A/D转换模块,即数据采集子系统。

片内有一个硬件乘法器,是一个16位的外围模块,它并不集成于CPU中,因此它的运算独立于CPU,也不需要特殊的指令。

片内有2个串行通讯接口,支持通用异步协议(UART协议)和同步协议(SPI协议)。

片内有2个16位的定时器,且带有多个捕获/比较寄存器,这样寄存器的使用将更加灵活。

msp430f149定时器

用msp430实现计数器的功能,在1602第一行显示时钟,第二行显示”***TIMER***”--------------------------------------------------main-------------------------------------------------------#include <msp430x14x.h>#include "Display.h"#include "Common.h"unsigned char sec,min,hour;//定时器A初始化函数void Init_TimerA(){TACTL=TASSEL0+TACLR;//选择ACLK,32768HzTACCTL0=CCIE;CCR0=32768; //1sTACTL |=MC0;//增计数模式}//Init IOvoid Port_Init(){P4SEL = 0x00;P4DIR = 0xFF;P5SEL = 0x00;P5DIR|= BIT5 + BIT6 + BIT7; //控制口设置为输出模式}void main( void ) //主函数{unsigned char i,*p;WDT_Init();Clock_Init();Port_Init();Init_TimerA();_EINT();Delay_Ms(100);LCD_Init();LCD_Clear();while(1){i=2;p="***TIMER***";LCD_Pos(6);LCD_write_data(':'); LCD_Pos(9);LCD_write_data(':'); LCD_Writesfm(10,sec); LCD_Writesfm( 7,min); LCD_Writesfm( 4,hour); while(*p){LCD_Writechar(i,1,*p); i++;p++;Delay_Ms(1);}}}/***********定时器A中断服务程序**************/ #pragma vector=TIMERA0_VECTOR__interrupt void TimerA_ISR(void){sec++;if(sec==60){min++;sec=0;if(min==60){hour++;min=0;if(hour==24)hour=0;}}}-------------------------------------------------Display.c,要添加到工程中-------------------------------------/****************************************************fun: Display.cfunction:input:ouput:auther:*****************************************************/#include "Display.h"//***************************************************************** ******// 1602显示屏初始化函数//***************************************************************** ****** void LCD_Init(void){LCD_write_com(0x38); //显示模式设置Delay_Ms(5);LCD_write_com(0x08); //显示关闭Delay_Ms(5);LCD_write_com(0x01); //显示清屏Delay_Ms(5);LCD_write_com(0x06); //显示光标移动设置Delay_Ms(5);LCD_write_com(0x0C); //显示开及光标设置Delay_Ms(5);}//***************************************************************** ****** // 1602显示屏清空显示//***************************************************************** ******void LCD_Clear(void){LCD_write_com(0x01); //清屏幕显示Delay_Ms(5);}//***************************************************************** ***// 1602显示屏命令写入函数//***************************************************************** ******void LCD_write_com(unsigned char com){RS_CLR;RW_CLR;EN_SET;DataPort = com; //命令写入端口Delay_Ms(5);EN_CLR;}//***************************************************************** ****** // 1602显示屏数据写入函数//***************************************************************** ******void LCD_write_data(unsigned char data){RS_SET;RW_CLR;EN_SET;DataPort = data; //数据写入端口Delay_Ms(5);EN_CLR;}//***************************************************************** ****** // 显示屏字符串写入函数//***************************************************************** ******void LCD_Writestr(unsigned char x,unsigned char y,unsigned char *s) {if (y == 0){LCD_write_com(0x80 + x); //第一行显示}else{LCD_write_com(0xC0 + x); //第二行显示}while (*s){LCD_write_data( *s);s ++;}}//***************************************************************** ****** // 显示屏单字符写入函数//***************************************************************** ******void LCD_Writechar(unsigned char x,unsigned char y,unsigned char data){if (y == 0){。

MSP430F149开发板套件用户手册


联系人:黄先生 电 话:13638654514 Q Q:50924175 E -- Mail: dr ago nhzw@163. co m
技术支持: 论 坛 : ht t p: // www. smar t - dz. cn/ bbs QQ 群:57829880
斯玛特精品电子工作室

目录
一、可选套件 ........................................................................................... 4 二、产品介绍 ........................................................................................... 7
斯玛特精品电子工作室
一、可选套件

图 1 MSP430F149 开发板和 LCD1602 字符液晶
斯玛特精品电子工作室

图 2 MSP430F149 开发板和 LCD12864 图形液晶
斯玛特精品电子工作室

15) 一个红外线遥控接口:红外线遥控解码实验;
16) 24C16 串行 EEPROM:可以进行 SPI EEPROM 读写实验;
17) 一个 DS1302 时钟芯片:实现实时时钟实验;
18) DS18B20 单总线数字温度传感器:可以用单片机控制它来测量温
度;
19) 一个 nRF905 接口;nRF905 通过 SPI 接口实现无线收发实验;
仿真器; 5) 复位按钮:用于手工复位单片机 6) IO 扩展口:两组 25*2 排针扩展口,引出单片机 P1~P5 全部 I/O 引
脚; 7) CR1220 3V 电池(开发板反面):为时钟芯片提供电源,保证掉电

MSP430F149定时器B讲解

MSP430F149定时器B1.定时器B模块:TimerB与TimerA大部分相同,不同点在于定时器B的捕获/比较单元增加了锁存器。

二者区别:(1)TimerB计数长度为8位,10位,12位,16位可编程,由TBCTL寄存器的CNTLx两位来配置,而定时器A的计数长度是固定的16位;(2)TimerB没有实现定时器A中的SCCI功能位的功能;(3)TimerB在比较模式下的捕获/比较寄存器功能与TimerA不同,增加了捕获比较锁存器;(4)有些芯片型号当中TimerB输出实现了高阻抗输出;(5)比较模式的原理有所不同:TimerA当中CCRx寄存器当中保存与TAR相比较的数据,而在TimerB 当中CCRx中保存要比较的数据,但并不直接与定时器TBR相比较,而是将CCRx当中的数据锁存到相应的锁存器之后,由锁存器与TBR相比较。

从捕获/比较寄存器相比较锁存器传输数据的过程的时间也是可编程的,可以是写入比较捕获寄存器之后立即传输,也可有一个定时器来触发传输。

(6)TimerB支持多种同步的定时功能,多重比较捕获功能和多重波形输出功能(PWM波)。

而且,通过对比较数据的两级缓冲,可实现多个PWM波同步周期更新。

2.TimerB的逻辑结构图:定时器B的逻辑结构基本与定时器A相同。

3.定时器B的寄存器:寄存器相关位的配置过程参考定时器A和数据手册。

4.定时器B的比较功能当定时器B工作在比较模式时,将数据写入捕获比较锁存器TBCCRx当中,当TBCCTLx当中的CLLDx位决定的装载事件的发生时,TBCCRx中的数据会自动地传输到比较寄存器当中。

5.TI提供的例程://// ////// MSP430F149// -----------------// /|| XIN|-// | | | HF XTAL (455k - 8MHz)// --|RST XOUT|-// | |// | P4.1/TB1|--> CCR1 - 75% PWM// | P4.2/TB2|--> CCR2 - 25% PWM//// M. Buccini// Texas Instruments Inc.// Feb 2005// Built with IAR Embedded Workbench Version: 3.21A//******************************************************************************。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档