Вы находитесь на странице: 1из 5

#include

#include
#include
#include
#include

<msp430g2553.h>
"I2C_USCI.h"
"UART.h"
"UART.c"
"stdio.h"

#define E BIT0
#define D BIT1
#define CC BIT2
#define B BIT3
#define A BIT4
#define F BIT5
//#define G :P2.3
#define led1mo P2OUT|=BIT0;
#define led2mo P2OUT|=BIT1;
#define led3mo P2OUT|=BIT2;
#define led4mo P2OUT|=BIT4;
#define led1tat P2OUT&=~BIT0;
#define led2tat P2OUT&=~BIT1;
#define led3tat P2OUT&=~BIT2;
#define led4tat P2OUT&=~BIT4;
#define ondot P2OUT&=~BIT5;
#define offdot P2OUT|=BIT5;
int num = 0;
void segmentdisplay(int number);
void display_numbers(int a, int b, int c, int d);
void UART_init_new();
unsigned char read_new (unsigned char addr);
char buff[30];
unsigned char giay,phut,gio,ngay,thang;
unsigned char Temp[7];//= {'a','b','c','d','e','f','g'};
unsigned int nam;
int main( void )
{
WDTCTL = WDTPW | WDTHOLD;

//Stop Watchdog

BCSCTL1 = CALBC1_1MHZ;
Hz
DCOCTL = CALDCO_1MHZ;
I2C_USCI_Init(0x68);
UART_init_new();
unsigned char x = 0x68;
UART_Write_String("hello");
UART_Write_String("------------------");
while (1){
x= read_new (0x00);
UART_Write_String("hello");
UART_Write_String("------------------");
UART_Write_Char(x);
__delay_cycles(500000);
}
//

I2C_USCI_Read_Word(0x00,Temp,7);
phut = ((Temp[1]&0x70)>>4)*10+(Temp[1]&0x0F);

// Set DCO to 1M

gio =
ngay =
thang=
nam =

((Temp[2]&0x30)>>4)*10+(Temp[2]&0x0F);
((Temp[4]&0x30)>>4)*10+(Temp[4]&0x0F);
((Temp[5]&0x10)>>4)*10+(Temp[5]&0x0F);
((Temp[6]&0xF0)>>4)*10+(Temp[6]&0x0F);

// while(1) {
// UART_Write_Char(10);
//
sprintf(buff,"ngay:%d thang:%d nam:20%d gio:%d phut:%d giay:%d",ng
ay,thang,nam,gio,phut,giay);
//
UART_Write_String(buff);
//
UART_Write_Char(10);
giay =
phut =
gio =
ngay =
thang=
nam =

((Temp[0]&0x70)>>4)*10+(Temp[0]&0x0F);
((Temp[1]&0x70)>>4)*10+(Temp[1]&0x0F);
((Temp[2]&0x30)>>4)*10+(Temp[2]&0x0F);
((Temp[4]&0x30)>>4)*10+(Temp[4]&0x0F);
((Temp[5]&0x10)>>4)*10+(Temp[5]&0x0F);
((Temp[6]&0xF0)>>4)*10+(Temp[6]&0x0F);

while(1){
x = I2C_USCI_Read_Byte(0x00);
UART_Write_Char(x);
__delay_cycles(500000);
}
}
void display_numbers(int a, int b, int c, int d){
int time = 30;
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P2DIR |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4 + BIT5;
P2OUT &= BIT0 + BIT1 + BIT2 + BIT4;
P1DIR |= A+B+CC+D+E+F;
P1OUT |= (A+B+CC+D+E+F);
P2OUT |= BIT3;
offdot;
while (time--)
{
P1OUT |= (A+B+CC+D+E+F);
P2OUT |= BIT3;
led1mo;
led2tat;
led3tat;
led4tat;
segmentdisplay(a);
__delay_cycles(3000);
P1OUT |= (A+B+CC+D+E+F);
P2OUT |= BIT3;
led1tat;
led2mo;
led3tat;
led4tat;
segmentdisplay(b);

ondot;
__delay_cycles(3000);
offdot;
P1OUT |= (A+B+CC+D+E+F);
P2OUT |= BIT3;
led1tat;
led2tat;
led3mo;
led4tat;
segmentdisplay(c);
__delay_cycles(3000);
P1OUT |= (A+B+CC+D+E+F);
P2OUT |= BIT3;
led1tat;
led2tat;
led3tat;
led4mo;
segmentdisplay(d);
__delay_cycles(3000);
P1OUT |= (A+B+CC+D+E+F);
P2OUT |= BIT3;
}
time = 30;
}
void segmentdisplay(int number){
switch (number){
case 0: P1OUT &= ~(A+B+CC+D+E+F);
break;
case 1: P1OUT &= ~(B+CC);
break;
case 2: P1OUT &= ~(A+B+E+D);
P2OUT &= ~BIT3;
break;
case 3: P1OUT &= ~(A+B+CC+D);
P2OUT &= ~BIT3;
break;
case 4: P1OUT &= ~(B+CC+F);
P2OUT &= ~BIT3;
break;
case 5: P1OUT &= ~(A+F+CC+D);
P2OUT &= ~BIT3;
break;
case 6: P1OUT &= ~(A+F+CC+D+E);
P2OUT &= ~BIT3;
break;
case 7: P1OUT &= ~(A+B+CC);
break;
case 8: P1OUT &= ~(A+B+CC+D+E+F);
P2OUT &= ~BIT3;
break;
case 9: P1OUT &= ~(A+B+CC+D+F);
P2OUT &= ~BIT3;
break;
}
}
void UART_init_new(){

WDTCTL = WDTPW + WDTHOLD;


if (CALBC1_1MHZ==0xFF)
n constant erased
{
while(1);
}

// Stop WDT

DCOCTL = 0;
ngs
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;

// Select lowest DCOx and MODx setti

// If calibratio
// do not load, trap CPU!!

// Set DCO

P1SEL = BIT1 + BIT2 ;


P1SEL2 = BIT1 + BIT2 ;
UCA0CTL1 |= UCSSEL_2;
UCA0BR0 = 104;
UCA0BR1 = 0;
UCA0MCTL = UCBRS0;
UCA0CTL1 &= ~UCSWRST;
IE2 |= UCA0RXIE;
__bis_SR_register(GIE);

//
//
//
//
//
//
//
//

P1.1 = RXD, P1.2=TXD


P1.1 = RXD, P1.2=TXD
SMCLK
1MHz 9600
1MHz 9600
Modulation UCBRSx = 1
**Initialize USCI state machine**
Enable USCI_A0 RX interrupt

// Enter LPM0, interrupts enabled

}
//---------unsigned char I2C_USCI_Read_Byte_new(unsigned char address)
{
while (UCB0CTL1 & UCTXSTP);
// Cho tin hieu I2C STT
duoc gui di
UCB0CTL1 |= UCTR + UCTXSTT;
// I2C TX,START
while (!(IFG2&UCB0TXIFG));

// Cho g

ui xong
UCB0TXBUF = address;

// Dia chi luu gia tri S

econds
while (!(IFG2&UCB0TXIFG));

// Cho g

ui xong
UCB0CTL1 &= ~UCTR;
UCB0CTL1 |= UCTXSTT;
IFG2 &= ~UCB0TXIFG;

// I2C RX
// I2C RESTART
// Xoa co ngat USCI_B0 TX

while (UCB0CTL1 & UCTXSTT);

// Cho den khi I2C STT duoc gui

UCB0CTL1 |= UCTXSTP;
return UCB0RXBUF;

// Gui bit STOP

di
}
unsigned char read_new (unsigned char addr)
{
while (UCB0CTL1 & UCTXSTP);
UCB0CTL1 |= UCTR ;
UCB0CTL1 |= UCTXSTT;
while (!(IFG2&UCB0TXIFG));
UCB0TXBUF = addr;
while (!(IFG2&UCB0TXIFG));
UCB0CTL1 &=~ UCTR ;
UCB0CTL1 |= UCTXSTP;

while (UCB0CTL1 & UCTXSTP);


UCB0CTL1 |= UCTXSTT;
while (UCB0CTL1 & UCTXSTT);
return UCB0RXBUF;
}

Вам также может понравиться