⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fet_1.c

📁 msp430采用ae2501b驱动机电阀门
💻 C
字号:
/*;******************************************************************************
;    MSP430F1121 FET Demonstration Program - Software Wait
;
;    Description; This program toggles P1.0. A software wait is used, based
;    simply on decrementing a variable. Default Basic Clock settings. 
;
;           MSP430F1121
;        _________________
;     /|\|            XIN|-  
;      | |               |
;      --|RST        XOUT|-
;        |               |
;        |           P1.0|-->LED
;
;    Dale Wellborn
;    Texas Instruments, Inc
;    December 1999
;******************************************************************************
*/

#include "msp430x41x.h"
char digit[10]={
0x5f,  /* "0" LCD segments a+b+c+d+e+f */
0x50,  /* "1" */
0x3d,  /* "2" */
0x79,  /* "3" */
0x72,  /* "4" */
0x6b,  /* "5" */
0x6f,  /* "6" */
0x51,  /* "7" */
0x7f,  /* "8" */
0x7b   /* "9" */
};
// Function prototypes

void delay(void);   // Software delay
void write_segA(int VALUE);
void disply(int count);
//void open(void);
//void close(void);

void main(void)
{ 
  int count=0;
  P6DIR |= BIT3+BIT4;     // P1.0 1.4 output
   
  while(1)          // Repeat forever
  {
    WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
    //P6OUT&=~BIT3+BIT4;
    P6OUT |= BIT3;  // Set P1.0
    P6OUT &= ~BIT4; // Clear P1.0
    while(1)
    {
       if (P6IN&BIT5==0X20)
       _NOP();
       break;
    }
    delay();
    delay();
  
    P6OUT &=~BIT3;
    P6OUT &=~BIT4;
    delay();
    delay();
    
    P6OUT |= BIT4; // Clear P1.0
    P6OUT &= ~BIT3; // Clear P1.0
    while(1)
   {
       if (P6IN&BIT6==0X40)
       
      _NOP();
       
       break;
   }
    delay();
    delay();
  
    P6OUT&=~BIT3;
    P6OUT&=~BIT4;
    delay();
    delay();
   
    count+=1;
    write_segA(count);
    disply(count);
  }
}




interrupt[WDT_VECTOR] void watchdog_timer(void)
{
  P5OUT ^= 0x02;                        // Toggle P5.1 using exclusive-OR
}
 //Delay very approximately 1 second.

void delay(void)
{
// Note: i is an unsigned integer. If not declared unsigned, 65000 in 16 bits
// becomes a negative number, and the loop is executed only once!

  unsigned int i;
  for (i = 65000; i>0; i--);           // Delay
}  





void write_segA(int VALUE)
{
   char *Flash_ptr;
   unsigned  int i;
   unsigned char buf[5];
   buf[0]=(VALUE/256)/256;
   buf[1]=(VALUE/256)%256;
   buf[2]=VALUE %256;
 //  WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
   FCTL2=FWKEY+FSSEL0+FN0;
   Flash_ptr=(char *)0x1080;
   FCTL1=FWKEY+ERASE;
   FCTL3=FWKEY;
   *Flash_ptr=0;
   FCTL1=FWKEY+WRT;
   for(i=0;i<3;i++)
   {
     *Flash_ptr++=buf[i];
   }
   FCTL1=FWKEY;
   FCTL3=FWKEY+LOCK;
}
void disply(int count)
{
  int dd;
 // WDTCTL = WDTPW + WDTHOLD;             // Stop watchdog timer
  FLL_CTL0 |= XCAP14PF;                 // Configure load caps
  LCDCTL = LCDON + LCD4MUX + LCDP2;     // STK LCD 4Mux, S0-S17
  BTCTL = BTFRFQ1;                      // STK LCD freq 
  P5SEL = 0xFC;                         // Common and Rxx all selected
                      // Display "6543210" 
  LCDMEM[0] = 0;
  LCDMEM[1] = 0;
  LCDMEM[2] = 0;
  LCDMEM[3] = 0;
  LCDMEM[4] = 0;
  LCDMEM[5] = 0;
  LCDMEM[6] = 0;
  
  dd=count;
  LCDMEM[0] = digit[dd/100000];
  dd=dd%100000;
  LCDMEM[1] = digit[dd/10000];
  dd=dd%10000;
  LCDMEM[2] = digit[dd/1000];
  dd=dd%1000;
  LCDMEM[3] = digit[dd/100];
  dd=dd%100;
  LCDMEM[4] = digit[dd/10];
  dd=dd%10;
  LCDMEM[5] = digit[dd];
      //LCDMEM[6] = digit[i];
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -