-
诗诗然也 发表于 2014-8-11 20:09
这是G2553的例程,你们都没有吗??
请问我用你的工程但是ccs打开之后有错误是为什么呢?最后那个MSP430G2553.ccxml错误,提示系统找不到TIMSP430-USB。xml文件,望解惑
-
成功了,是接线问题,pin3仿真时不接地也是无法现实的。。
但是现在还有一个问题,rs和en只能换成P1.1,P1.2才能工作,P2.6和7则还是不行,应该是代码没改全,因为我的LAUNCHPA的P1.2要用来捕获所以不能接液晶,如果要改口的话应该怎么做呢?
-
通了个宵调试,依旧不成功:Sad: 想死的心都有了。。。
这位大哥能给个代码和连接图吗,感激不尽了。。。
-
可我上面说了,我用的就是3.3v型号的1602啊,买来就是430专用的啊,还是我连接错了吗?
-
可我上面说了,我用的就是3.3v型号的1602啊,买来就是430专用的啊,还是我连接错了吗?
-
你好,我也是新手,刚好也在做1602,请问你接1602用了几个io口啊?我一直觉得口不够用来着。。方便的话能给个图吗?
-
恩,好的,依然非常感谢你
-
我的593245898
-
非常感谢你的帮助,解决了我很多困惑啊,请问能加个qq吗?以后肯定还有需要帮忙的时候,有人指导的话效率高多了啊
-
对了,还有一个问题,ccr0的自动复位是发生在什么时候呢?比如说我现在发生一个上升沿,然后进入中断,这个时候ccr0会已经被置0了吗?还是我能在中断函数中读取ccr0的值呢?
-
非常非常感谢!!!终于能用了啊!!:Sad:
配置的确是你给的那个图,而且只能用ccr0中断!
但是还有几个问题想请教一下:
1 P1OUT那边配置P1.1口为1是不是就相当于使能了上拉电阻呢?因为我把P1.1跟vcc连接没是反应的,但是跟gnd连接或断开都能进入中断
2 如果只能通过ccr0中断的话,那ccr1是干嘛的呢?我把配置都改成ccr1就没有用了。我记得好像也有捕获功能的啊
3 ccr0是用的另外一个中断向量对吧?也就是说在timer0中断里是不能用TAIV的是吗?
我是第一次使用430,也是第一次学单片机,看网上430捕获方面的例程真的不多啊,才来发帖求助,果然还论坛上人才多啊。。。
-
您好,我试了下您的方法,改后代码是:
#include "msp430g2231.h"
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= 0x03; //P1方向
P1OUT |= 0x01;
P1SEL |= 0x02; //P1.1口选择第二功能CCI0A
TACTL = TASSEL_2 + ID_3 + MC_2 ; //SMCLK,8分频,连续计数模式
CCTL1 = CAP + SCS + CM_3 + CCIS0 + CCIE; //捕获模式,同步,上下沿都捕获,输入源为CCI0A,使能CCR1中断
_EINT();
while(1);
}
// Timer_A1 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch( TAIV&0x02 )
{
case 0: break;
default: P1OUT ^= 0x01;break;
}
TAIV &= ~TAIV;
}
这个没有通过编译。。。
Error[Pe137]: expression must be a modifiable lvalue D:\文件库\keil\main.c 27
另外我把TAIV &= ~TAIV;去掉后通过然后测试结果还是跟之前一样,还可能会是什么原因呢?
-
您好,我按你的说法改了一下,好像还是不行啊,修改后代码如下:
#include "msp430g2231.h"
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= 0x03; //P1方向
P1OUT |= 0x01;
P1SEL |= 0x02; //P1.1口选择第二功能CCI0A
TACTL = TASSEL_2 + ID_3 + MC_2 ; //SMCLK,8分频,连续计数模式
CCTL1 = CAP + SCS + CM_3 + CCIS0 + CCIE; //捕获模式,同步,上下沿都捕获,输入源为CCI0A,使能CCR1中断
_EINT();
while(1);
}
// Timer_A1 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch( TAIV )
{
case 1: P1OUT &= 0xfe;break;
case 2: P1OUT &= 0xfe;break;
case 10: break;
}
}
现象跟之前是一样的,难道我还有地方改错了?我用的是g2231,能麻烦再帮我检查一下吗?
-
launch pad 捕获模式求解,真心需要帮忙,谢谢了。。。
https://bbs.eeworld.com.cn/thread-326798-1-1.html
-
代码贴错了,如下:void main(void){WDTCTL = WDTPW + WDTHOLD; // 禁止看门狗P1DIR |= 0x01; // P1.0 设置为输出方向CCTL0 = CCIE; // CCR0 中断使能CCR0 = 50000;TACTL = TASSEL_2 + MC_2; // TA外设时钟计数模式_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt 进入LPM0中断模式}// 定时器中断服务程序#pragma vector=TIMERA0_VECTOR__interrupt void Timer_A (void){P1OUT ^= 0x01; // P1.0翻转CCR0 += 50000;// CCR0增加计数(根据实际这句话去掉也可以)}
-
在论坛上看到的代码:
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 禁止看门狗
P1DIR |= 0x01; // P1.0 设置为输出方向
CCTL0 = CCIE; // CCR0 中断使能
CCR0 = 50000;
TACTL = TASSEL_2 + MC_2; // TA外设时钟计数模式
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt 进入LPM0中断模式
}
// 定时器中断服务程序
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P1OUT ^= 0x01; // P1.0翻转
// CCR0增加计数(根据实际这句话去掉也可以)
}
那个最后一句的CCR0 += 50000;是怎么回事啊,CCR0不是一般不用变的么,而且最大值不是65535吗?50000+50000都侧漏了啊啊啊!
初学求指点。。。