Beruflich Dokumente
Kultur Dokumente
h>
volatile unsigned int useg =0x000;
volatile unsigned int dseg =0x000;
volatile unsigned int umin =0x000;
volatile unsigned int dmin =0x000;
volatile unsigned int uhor =0x000;
volatile unsigned int dhor =0x000;
volatile unsigned int dato=0x000;
volatile unsigned int reg1=0x000;
volatile unsigned int reg2=0x000;
volatile unsigned int reg3=0x000;
volatile unsigned int reg4=0x000;
volatile unsigned int reg5=0x000;
volatile unsigned int reg6=0x000;
volatile unsigned int k=0;
volatile unsigned int contador=0;
volatile unsigned int copia=0;
void main(void)
{
configTIMER();
// Funcion de Conmutacin
while(1)
{
clock();
conmutacion();
}
}
void conmutacion(void){
switch(k){
case 0 :
P2OUT= 0x0FE;
P1OUT=reg1;
delayz();
k=1;
break;
case 1:
P2OUT=0x0FD;
P1OUT=reg2;
delayz();
k=2;
break;
case 2:
P2OUT=0x0FB;
P1OUT= reg3;
delayz();
k=3;
break;
case 3:
P2OUT=0x0F7;
P1OUT= reg4;
delayz();
k=4;
break;
case 4:
P2OUT=0x0EF;
P1OUT= reg5;
delayz();
k=5;
break;
case 5:
P2OUT=0x0DF;
P1OUT= reg6;
delayz();
k=0;
break;
#pragma vector=WDT_VECTOR
__interrupt void watchdog_timer (void)
{
WDTCTL= WDTPW+WDTHOLD;
_BIC_SR_IRQ(LPM3_bits); // Clear LPM3 bits from 0(SR)
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void){
if(copia==0x1){
contador++;
if(contador>5){
contador=0;
}
copia=0;
}
switch(contador){
case 0:
useg++;
break;
case 1:
dseg++;
dhor=0;
uhor=0;
dmin=0;
umin=0;
if(dseg>5){
dseg=0;
}
break;
case 2:
dhor=0;
uhor=0;
dmin=0;
umin++;
if(umin>9){
umin=0;
}
break;
case 3:
dhor=0;
uhor=0;
dmin++;
if(dmin>5){
dmin=0;
}
break;
case 4:
dhor=0;
uhor++;
if(uhor>9){
uhor=0;
}
break;
default :
dhor++;
if (uhor>3 & dhor>1){
dhor=0;
}else{
if(dhor>2){
dhor=0;
}
}
break;
}
#pragma vector=PORT1_VECTOR
__interrupt void Port_1(void)
{
copia=1;
P1IFG &= ~BIT7; // P1.7 IFG cleared
}
//Funcion de Codificacion BCD-7seg
void comparacion (void){
switch(dato){
case 0:
dato=0x07E;
break;
case 1:
dato=0x030;
break;
case 2:
dato=0x06D;
break;
case 3:
dato=0x079;
break;
case 4:
dato=0x033;
break;
case 5:
dato=0x05B;
break;
case 6:
dato=0x05F;
break;
case 7:
dato=0x070;
break;
case 8:
dato=0x007F;
break;
case 9:
dato=0x073;
break;
//return(dato);
}
}
void delayz (void){
volatile unsigned int i;
for (i=1;i<400;i++) {
}
}
void configWDT(void){