📄 fet_1.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 + -