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

#include "TM4C123.

h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main (void){


void delaym();
double delay(double x);

SYSCTL->RCGCGPIO |=0X3F;
GPIOF->LOCK= 0x4C4F434B;
GPIOA->DIR=255;
GPIOB->DIR=0;
GPIOC->DIR=255;
GPIOD->DIR=255;
GPIOE->DIR =15;
GPIOF->DIR =14;
GPIOA->DEN=255;
GPIOB->DEN=255;
GPIOC->DEN=255;
GPIOD->DEN=255;
GPIOE->DEN=255;
GPIOF->DEN =0X0E;
GPIOE->PDR =224;
GPIOE->DATA=15;

delay(0.004);

int a,umil,cen,dec,un,var;
int TA[]={0, 204,32, 0, 204,16, 16, 192, 0, 192};
int TC[]={192,240,224,240,208,208,192,240,192,208};
int TD[]={118,206,73, 201,201,201,201,207,201,201};

a=GPIOB->DATA;
umil=a/1000;
cen=(a-(umil*1000))/100;
dec=(a-(cen*100+umil*1000))/10;
un=(a-(dec*10+cen*100+umil*1000));
while(1){
var=GPIOE->DATA<<4;
var=2;
if(var==2){
if (umil==9 && cen==9 && dec==9 && un==9){
for (int i=0;i<=20;i++){
GPIOE->DATA=14;
GPIOA->DATA=TA[umil];
GPIOC->DATA=TC[umil];
GPIOD->DATA=TD[umil];

delaym();
GPIOE->DATA=13;
GPIOA->DATA=TA[cen];
GPIOC->DATA=TC[cen];
GPIOD->DATA=TD[cen];

delaym();
GPIOE->DATA=11;
GPIOA->DATA=TA[dec];
GPIOC->DATA=TC[dec];
GPIOD->DATA=TD[dec];

delaym();
GPIOE->DATA=7;
GPIOA->DATA=TA[un];
GPIOC->DATA=TC[un];
GPIOD->DATA=TD[un];

delaym();
}
umil=0;
cen=0;
dec=0;
un=0;
}

else if (cen==9 && dec==9 && un==9){


for (int i=0;i<=20;i++){
GPIOE->DATA=14;
GPIOA->DATA=TA[umil];
GPIOC->DATA=TC[umil];
GPIOD->DATA=TD[umil];

delaym();
GPIOE->DATA=13;
GPIOA->DATA=TA[cen];
GPIOC->DATA=TC[cen];
GPIOD->DATA=TD[cen];

delaym();
GPIOE->DATA=11;
GPIOA->DATA=TA[dec];
GPIOC->DATA=TC[dec];
GPIOD->DATA=TD[dec];

delaym();
GPIOE->DATA=7;
GPIOA->DATA=TA[un];
GPIOC->DATA=TC[un];
GPIOD->DATA=TD[un];

delaym();
}
umil=umil+1;
cen=0;
dec=0;
un=0;
}
else if (dec==9 && un==9){
for (int i=0;i<=20;i++){
GPIOE->DATA=14;
GPIOA->DATA=TA[umil];
GPIOC->DATA=TC[umil];
GPIOD->DATA=TD[umil];

delaym();
GPIOE->DATA=13;
GPIOA->DATA=TA[cen];
GPIOC->DATA=TC[cen];
GPIOD->DATA=TD[cen];

delaym();
GPIOE->DATA=11;
GPIOA->DATA=TA[dec];
GPIOC->DATA=TC[dec];
GPIOD->DATA=TD[dec];

delaym();
GPIOE->DATA=7;
GPIOA->DATA=TA[un];
GPIOC->DATA=TC[un];
GPIOD->DATA=TD[un];

delaym();
}
cen=cen+1;
dec=0;
un=0;
}
else if (un==9){
for (int i=0;i<=20;i++){
GPIOE->DATA=14;
GPIOA->DATA=TA[umil];
GPIOC->DATA=TC[umil];
GPIOD->DATA=TD[umil];

delaym();
GPIOE->DATA=13;
GPIOA->DATA=TA[cen];
GPIOC->DATA=TC[cen];
GPIOD->DATA=TD[cen];

delaym();
GPIOE->DATA=11;
GPIOA->DATA=TA[dec];
GPIOC->DATA=TC[dec];
GPIOD->DATA=TD[dec];

delaym();
GPIOE->DATA=7;
GPIOA->DATA=TA[un];
GPIOC->DATA=TC[un];
GPIOD->DATA=TD[un];

delaym();
}
dec=dec+1;
un=0;
}
else if (un<9){
for (int i=0;i<=20;i++){

GPIOE->DATA=14;
GPIOA->DATA=TA[umil];
GPIOC->DATA=TC[umil];
GPIOD->DATA=TD[umil];
delaym();
GPIOE->DATA=13;
GPIOA->DATA=TA[cen];
GPIOC->DATA=TC[cen];
GPIOD->DATA=TD[cen];

delaym();
GPIOE->DATA=11;
GPIOA->DATA=TA[dec];
GPIOC->DATA=TC[dec];
GPIOD->DATA=TD[dec];

delaym();
GPIOE->DATA=7;
GPIOA->DATA=TA[un];
GPIOC->DATA=TC[un];
GPIOD->DATA=TD[un];

delaym();
}
un=un+1;
}
}
else if (var==1){
if (umil==0 && cen==0 && dec==0 && un==0){
for (int i=0;i<=50;i++){

GPIOE->DATA=14;
GPIOA->DATA=TA[umil];
GPIOC->DATA=TC[umil];
GPIOD->DATA=TD[umil];

delaym();
GPIOE->DATA=13;
GPIOA->DATA=TA[cen];
GPIOC->DATA=TC[cen];
GPIOD->DATA=TD[cen];

delaym();
GPIOE->DATA=11;
GPIOA->DATA=TA[dec];
GPIOC->DATA=TC[dec];
GPIOD->DATA=TD[dec];

delaym();
GPIOE->DATA=7;
GPIOA->DATA=TA[un];
GPIOC->DATA=TC[un];
GPIOD->DATA=TD[un];

delaym();
}
umil=9;
cen=9;
dec=9;
un=9;
}
else if (cen==0 && dec==0 && un==0){
for (int i=0;i<=20;i++){
GPIOE->DATA=14;
GPIOA->DATA=TA[umil];
GPIOC->DATA=TC[umil];
GPIOD->DATA=TD[umil];

delaym();
GPIOE->DATA=13;
GPIOA->DATA=TA[cen];
GPIOC->DATA=TC[cen];
GPIOD->DATA=TD[cen];

delaym();
GPIOE->DATA=11;
GPIOA->DATA=TA[dec];
GPIOC->DATA=TC[dec];
GPIOD->DATA=TD[dec];

delaym();
GPIOE->DATA=7;
GPIOA->DATA=TA[un];
GPIOC->DATA=TC[un];
GPIOD->DATA=TD[un];

delaym();
}
umil=umil-1;
cen=9;
dec=9;
un=9;
}
else if (dec==0 && un==0){
for (int i=0;i<=20;i++){

GPIOE->DATA=14;
GPIOA->DATA=TA[umil];
GPIOC->DATA=TC[umil];
GPIOD->DATA=TD[umil];

delaym();
GPIOE->DATA=13;
GPIOA->DATA=TA[cen];
GPIOC->DATA=TC[cen];
GPIOD->DATA=TD[cen];

delaym();
GPIOE->DATA=11;
GPIOA->DATA=TA[dec];
GPIOC->DATA=TC[dec];
GPIOD->DATA=TD[dec];

delaym();
GPIOE->DATA=7;
GPIOA->DATA=TA[un];
GPIOC->DATA=TC[un];
GPIOD->DATA=TD[un];

delaym();
}
cen=cen-1;
dec=9;
un=9;
}
else if (un==0){
for (int i=0;i<=20;i++){

GPIOE->DATA=14;
GPIOA->DATA=TA[umil];
GPIOC->DATA=TC[umil];
GPIOD->DATA=TD[umil];

delaym();
GPIOE->DATA=13;
GPIOA->DATA=TA[cen];
GPIOC->DATA=TC[cen];
GPIOD->DATA=TD[cen];

delaym();
GPIOE->DATA=11;
GPIOA->DATA=TA[dec];
GPIOC->DATA=TC[dec];
GPIOD->DATA=TD[dec];

delaym();
GPIOE->DATA=7;
GPIOA->DATA=TA[un];
GPIOC->DATA=TC[un];
GPIOD->DATA=TD[un];

delaym();
}
dec=dec-1;
un=9;
}
else if (un>0){
for (int i=0;i<=20;i++){

GPIOE->DATA=14;
GPIOA->DATA=TA[umil];
GPIOC->DATA=TC[umil];
GPIOD->DATA=TD[umil];

delaym();
GPIOE->DATA=13;
GPIOA->DATA=TA[cen];
GPIOC->DATA=TC[cen];
GPIOD->DATA=TD[cen];

delaym();
GPIOE->DATA=11;
GPIOA->DATA=TA[dec];
GPIOC->DATA=TC[dec];
GPIOD->DATA=TD[dec];

delaym();
GPIOE->DATA=7;
GPIOA->DATA=TA[un];
GPIOC->DATA=TC[un];
GPIOD->DATA=TD[un];

delaym();
}
un=un-1;
}
}
else{
GPIOE->DATA=255;
a=GPIOB->DATA;
umil=a/1000; //realizo la descomposicion del numero decimal de 4
digitos
cen=(a-(umil*1000))/100;
dec=(a-(cen*100+umil*1000))/10;
un=(a-(dec*10+cen*100+umil*1000));
}
}}

double delay(double x){


int g;
float y,z;
y=x*1000000;
z=y/0.0625;
g=z-1;
SysTick->LOAD=g;
SysTick->CTRL=5;
SysTick->VAL=0;
}
void delaym(){
while(1){//delay con systick para el conteo
if(SysTick->CTRL&0x10000){
break;
}}

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