久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3953|回復: 3
打印 上一主題 下一主題
收起左側

急救

[復制鏈接]
跳轉到指定樓層
樓主
ID:64538 發表于 2014-7-29 16:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
有哪位大蝦幫我這個新手編一下面的程序,小弟感覺不盡。
要求:1用msp430g2553.h實現。
           2實現如下功能,每十秒鐘燈光閃爍一次,每2秒燈光亮度變化一次,按鍵按一次延時時間增加5秒燈光亮度變化相反。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:66032 發表于 2014-9-16 15:46 | 只看該作者
我用我的MSP430F5438A寫了個程序, 運行了下完全OK, 用示波器可以看到占空比的連續變化
//this is source code using MSP430F5438A, the Aclock is using XT1=32.768K, the will help to get second counts

#include <msp430.h>
#include <stdlib.h>
#include <stdio.h>

#define uchar unsigned char
#define uint unsigned int

uchar num1, num2, num3, num4;
uint count,count1,temp=0;
uchar const table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar const table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

void Init_Port(void)
{

  P7DIR  |= Ox01  ; // set the P7.0 as output;
//  P7OUT  &= ~0x01   ;// turn on the LED;
  //INTERNAL_PULL_UP       ;
// ROW_IN_COL_OUT         ;
  P1OUT   = 0xF0           ;
  P1DIR   = 0xF0          ;
  P6DIR &=~0x01;
  P6REN |= 0x01;
  P6OUT = 0x01;
  P9OUT   = 0x0F         ;
  P9DIR   = 0x0F     ;
  P8DIR = 0xFF;
  P8OUT = 0xFF;

}

void Display(num1,num2,num3,num4)
{
  
    P8OUT = table[num1];     
    P9OUT &= ~BIT0;
    __delay_cycles(100);
    P9OUT |= BIT0;
   
    P8OUT = table[num2];
    P9OUT &= ~BIT1;
    __delay_cycles(100);
    P9OUT |= BIT1;
   
    P8OUT = table[num3];
    P9OUT &= ~BIT2;
    __delay_cycles(100);
    P9OUT |= BIT2;
   
    P8OUT = table[num4];
    P9OUT &= ~BIT3;
    __delay_cycles(100);
    P9OUT |= BIT3;
   

}                           
int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  Init_Port();
  P1DIR |= 0x30;       // just to check waveform P2.2&P2.3 O/P using scope
  P1SEL |= 0x30;       // P2.2 and P2.3 options select
  TA0CCR0 = 512-1;                          // PWM Period
  TA0CCTL3 = OUTMOD_7;                      // CCR1 reset/set
  TA0CCR3 = 384;                            // CCR1 PWM duty cycle
  TA0CCTL4 = OUTMOD_7;                      // CCR2 reset/set
  TA0CCR4 = 128;                            // CCR2 PWM duty cycle
  TA0CTL = TASSEL_1 + MC_1 + TACLR;         // SMCLK, up mode, clear TAR


  TA1CCTL0 = CCIE;                          // CCR0 interrupt enabled
  TA1CCR0 = 32768-1;
  TA1CTL = TASSEL_1 + MC_1 + TACLR;         // ACLK, upmode, clear TAR
  
  //TBCCTL0 = CCIE;                           // TBCCR0 interrupt enabled
  //TBCCR0 = 30;
  //TBCTL = TBSSEL_1 + MC_1 + TBCLR;          // ACLK, upmode, clear TBR

  __bis_SR_register(GIE);       // Enter LPM0, enable interrupts
  
    while(1)
  {
     TA0CCR4=temp;
     Display(num1,num2,num3,num4);// if LPM0 is enable, the routine will not be preformed;
     if (!(P6IN&0x01))
     {
        __delay_cycles(10);
       if (!(P6IN&0x01))
       {
           temp+=5;
           if (temp==512)
           temp=128;
           while(!(P6IN&0x01));
       }
     }
  }
  
}

// Timer1 A0 interrupt service routine
#pragma vector=TIMER1_A0_VECTOR
__interrupt void TIMER1_A0_ISR(void)
{
        count++;
        if(count==2)  //the light intensity increase 1every other 2sec
        {
          count=0;
          temp++;  
          num1=temp/1000;    //°ÑÕa¸ö±äá¿ÏÔê¾3öà′
          num2=temp%1000/100;
          num3=temp%100/10;
          num4=temp%10;
          if (temp==512)
          temp=0;
        }
        count1++;
        if (count1==10)
        {
          count1=0;
          P7OUT^=0x01; //Output LED flahes every other 10 sec;
        }  
}

回復

使用道具 舉報

板凳
ID:66032 發表于 2014-9-16 15:48 | 只看該作者
下面是按照你的要求改寫的程序, 我看了USER GUIDE 和 Datasheet 應該沒有問題
//this is source code using MSP430G2553, the Aclock is using XT=32.768K, the will help to get second counts ------- MSP430G2553, 28-Pin Devices, TSSOP

#include <msp430.h>
#include <stdlib.h>
#include <stdio.h>

#define uchar unsigned char
#define uint unsigned int

uint count,count1,temp=0;

void Init_Port(void)
{
  P1OUT   = 0x01   ; // O/P to high level and connect switch to ground
  P1DIR  &=~0x01 ;// set input DIR;
  P1REN  |= 0x01;  //Enable P1.0 pull-up
  P3DIR |= 0x20;       // set the O/P as well as check waveform P3.5using scope
  P3SEL |= 0x20;       // P3.5 options select and connect LED to ground;
}

                        
int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
  Init_Port();

  TA0CCR0 = 512-1;                          // PWM Period
  TA0CCTL1 = OUTMOD_7;                      // CCR1 reset/set
  TA0CCR1 = 0;                            // CCR1 PWM duty cycle
  TA0CTL = TASSEL_1 + MC_1 + TACLR;         // SMCLK, up mode, clear TAR
  TA1CCTL0 = CCIE;                          // CCR0 interrupt enabled
  TA1CCR0 = 32768-1;
  TA1CTL = TASSEL_1 + MC_1 + TACLR;         // ACLK, upmode, clear TAR
  __bis_SR_register(GIE);       // Enter LPM0, enable interrupts
  
    while(1)
  {
     TA0CCR1=temp;
   
     if (!(P1IN&0x01))
     {
        __delay_cycles(10);
       if (!(P1IN&0x01))
       {
           temp+=5; //push the switch everytime, the intensity value add 5;
           if (temp==512)
           temp=0;
           while(!(P1IN&0x01));
       }
     }
  }
  
}

// Timer1 A0 interrupt service routine
#pragma vector=TIMER1_A0_VECTOR
__interrupt void TIMER1_A0_ISR(void)
{
        count++;
        if(count==2)  //the light intensity increase 1every other 2sec
        {
          count=0;
          temp++;  
          if (temp==512)
          temp=0;
        }
        count1++;
        if (count1==10)
        {
          count1=0;
          P3OUT^=0x20; //Output LED flahes every other 10 sec;
        }  
}

回復

使用道具 舉報

地板
ID:66032 發表于 2014-9-16 15:52 | 只看該作者
任何code 都是根據硬件電路來編寫的, 脫離了硬件,一切都是浮云。一定要下功夫讀英文的文件, 只有這樣才能以不變應萬變。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕一区二区三区四区 | 国内精品视频一区二区三区 | 日韩欧美一级精品久久 | 91av视频在线播放 | 欧美成人高清 | 一区二区三区回区在观看免费视频 | 黄色亚洲| 97免费视频在线观看 | 亚洲国产欧美在线人成 | 婷婷精品| 毛片免费看 | 午夜视频免费 | аⅴ资源新版在线天堂 | 欧美日韩中文字幕在线播放 | 在线观看视频h | 中文字幕久久久 | 国产日韩欧美一区 | 亚洲综合色视频在线观看 | 久久久久久一区 | 久久亚洲国产 | 亚洲成人一区二区三区 | 欧美激情精品久久久久久 | 91免费福利在线 | 男女羞羞视频在线看 | 国产91在线播放 | 一二三四在线视频观看社区 | 国产日韩欧美 | 欧美精品第一页 | 欧美精品一区二区三区四区 | 成人a视频在线观看 | 欧美成人一区二区 | 日本中出视频 | 欧美精品一区二区蜜桃 | 久久久精品网 | 在线观看www视频 | 一道本视频 | 91国语清晰打电话对白 | 国产aaaaav久久久一区二区 | 综合久久一区 | 婷婷久久网 | 男女在线免费观看 |