找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

msp430单片机车辆闪光灯 流水灯代码问题

查看数: 2556 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-8-19 06:30

正文摘要:

各位大神你们好, 我是一枚新手,现在遇到一个问题。实在是不好意思,确实是时间不多了不够我来慢慢看自己做。所以才在论坛上咨询各位大神。确实很羞愧做一个伸手党。 问题如下: 总电路是车辆系统上的灯光总电路 ...

回复

ID:815102 发表于 2020-8-19 23:56
我改进了这段代码
#include "msp430g2553.h"

int i[8] ={0,1,3,7,15,31,63,127};
void main(void)  
{  

WDTCTL = WDTPW + WDTHOLD;         

  if (CALBC1_1MHZ==0xFF) while(1);     
  DCOCTL  = 0;                        
  BCSCTL1 = CALBC1_1MHZ;            
  DCOCTL  = CALDCO_1MHZ;
    P2DIR |= BIT0+BIT7;
    P2OUT |= BIT0;   
    P2OUT &= ~BIT7;  

    CCTL0 = CCIE;                  
    CCR0 = 62500;  
    TACTL = TASSEL_2 + ID_3 + MC_1;
    P2DIR = 0xff;                     
    P2OUT = 0xff;  

    _BIS_SR(LPMO_bits+GIE) ;                       
}  
#pragma vector = TIMER0_A0_VECTOR        
                                    //__interrupt void Timer_A (void)   
int main( void )
{
static int j =0;
  
   P2OUT=i[j];
j++;
if (j>8)
j=0;
  
}
现在有个新问题,如果是同一个板子控制前后左右四个车灯。
车前左右分别有停车灯(Standlicht),闪光灯(Blinker),转向灯(Rueckwaerts)
车后左右分别有刹车灯(Bremslicht),停车灯(Standlicht),闪光灯(Blinker),转向灯(Rueckwaerts)
P1.3与P1.4都是msp430内部pull-up。
当R39 open时 车左闪光灯依次亮,当R39为0Ohm 车右依次亮。
当R1 open时  代表车前方闪光灯,当R1为0Ohm时 代表车后闪光灯。
如何补充这个代码呢?拜谢!
ID:815102 发表于 2020-8-19 23:43
这是我写的代码
#include "msp430g2553.h"

int i[8] ={0,1,3,7,15,31,63,127};
void main(void)  
{  

WDTCTL = WDTPW + WDTHOLD;         

  if (CALBC1_1MHZ==0xFF) while(1);     
  DCOCTL  = 0;                        
  BCSCTL1 = CALBC1_1MHZ;            
  DCOCTL  = CALDCO_1MHZ;
    P2DIR |= BIT0+BIT7;
    P2OUT |= BIT0;   
    P2OUT &= ~BIT7;  

    CCTL0 = CCIE;                  
    CCR0 = 62500;  
    TACTL = TASSEL_2 + ID_3 + MC_1;
    P2DIR = 0xff;                     
    P2OUT = 0xff;  

    _BIS_SR(LPMO_bits+GIE) ;                       
}  
#pragma vector = TIMER0_A0_VECTOR        
                                    //__interrupt void Timer_A (void)   
int main( void )
{
static int j =0;
  
   P2OUT=i[j];
j++;
if (j>8)
j=0;
  
}
ID:654028 发表于 2020-8-19 16:32
看你的这个代码,写的已经很详细的闪烁过程了,看样子他是在中断里面实现的闪烁。如果你需要使用P1.0去控制的话,就把那段代码从中断里面弄出来修改一。我也不是很会,我只能这样做,具体能不能实现不好说,但是思路没错。
void led_run (void)
{       char i;
     if(p1out){//就是如果检测到有信号灯就亮
           for(i=0;i<8;i++){
                P2OUT = ~(0x80>>i);    //灯的点亮顺序D8 -> D1,顺序不对你就看参考代码,换一下顺序
          }
           if(i == 8)
           {
                i = 0;
                P2OUT=0XFF;//让所有的灯灭
            }
   }
}

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表