-
楼主那个串口的短接冒拔了没有?
P1.1和P1.2连在串口通信上,如果短接冒没拔,P1.1直接是3.6
-
串行读数据读不出啊~~~
我自己写了个,一直读不出,网上几乎没有用串行读出来的程序
-
#include "msp430g2553.h"#include "delay.h"
void sys_init(void){ DCOCTL = CALDCO_16MHZ; BCSCTL1 = CALBC1_16MHZ; }
void io_init(void){ P1DIR = 0; P1DIR |= BIT4 + BIT6; P1SEL |= BIT1;}void cap_init(void){ TACTL |= TASSEL_2 + MC_2 + TACLR; //MCLK , CONTINUE , CLEAR TACCTL0 |= CM_1 + SCS + CAP + CCIE + CCIS_0; // rising edge , synchronous , capture , interupt enable }
void main( void ){ // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; sys_init(); io_init(); cap_init(); __enable_interrupt(); while(1) { P1OUT ^= BIT6; delay_ms(30); }}
#pragma vector = TIMER0_A0_VECTOR__interrupt void capture(void){ P1OUT ^= BIT4; // 输出频率是捕获频率的一半}
-
/***************************
UP MODE
PWM控制小灯亮度
author:279827164
****************************/
#include "msp430g2553.h"
#define uint unsigned int
#define uchar unsigned char
volatile uchar flag,dir;
volatile uint t0,t1; //高低电平计数个数
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
t0 = 100;
TACTL |= TASSEL1 + MC_1; //UP to CCR0,SMCLK
CCTL0 |= CCIE; //比较中断使能
CCR0 = 100 ;
P1DIR |= BIT2 + BIT0;
__enable_interrupt();
for(;;)
{
if(flag == 2)
{
flag = 0;
}
}
}
#pragma vector = TIMER0_A0_VECTOR
__interrupt void up_to_CCR0(void)
{
P1OUT ^= BIT2;
if(flag == 0) //高电平
{
t1 = 1200 - t0; //总周期1200
CCR0 = t1;
}
else //低电平
{
CCR0 = t0;
if(t0 == 1100) //高电平计时个数最大值
{
dir = 1;
}
else if(t0 == 100) //最小值
{
dir = 0;
}
if(dir == 0)
{
t0++;
}
else
{
t0--;
}
}
flag ++;
}
-
P1REN= BIT0 是上拉,下拉使能,
P1OUT= BIT0 ,选择上拉,一般默认是下拉
-
:) 论文里面包括题目、设计方案、设计电路、参数、实物图
-
找了好久,才找到这几个省的。。
-
P1IN的BIT3位是1,P1IN&BIT3是0x08,取反的话,得到的结果是0xf7,不是0,
。。所以应该改成 while((P1IN & BIT3) == 0);
这个是51和MSP写法的区别吧。。
-
问题解决了。。:titter:
-
thank you:)
-
我这有个完整的版本的
-
thank you ,我去找找资料
-
本帖最后由 paulhyde 于 2014-9-15 04:13 编辑 设计一频率计,要求测评范围 0.1hz~40MHZ。我的设计是先来一计数芯片计数,然后再给单片机计数。
找了计数芯片找了好久,找不到需要的。。。
谁能提供一个更好的方案不?
-
顶!
-
是啊,我也遇到了同样的问题,把手动安装了驱动,还是没反应