Sunteți pe pagina 1din 3

TASK 3.

Nume: Moga Cristina subgrupa 4.2


Prapugicu Alex subgrupa 5.2

#include <hidef.h>
#include “mc9s12dg256.h”

void MSDelay(unsigned int);


void main(void)
{
DDRB = 0xFF; // seteaza ca si output afisajul cu segmente
DDRH = 0x00; // Registrul DDRH pe 0 pentru a seta ca si input
switch-urile
DDRP = 0xFF; // Port P is set as an output port, since it
controls the cathodes of the displays
PTP = 0x07; // va afisa pe display-ul al 4-lea, cel mai din dreapta

uint8_t lookUpTable[16] =
{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79
,0x71};//look-up table cu valorile in hexa ce trebuie afisate pe display
uint8_t i;//index pentru tabel
uint8_t mask = 0b00001111;
for(;;)
{
// Varianta in care valoarea primita de la switch-uri este folosita ca index pentru
selectarea valorii hexazecimale pentru 7segment din look-up table-ul declarat mai
sus.
i = PTH & mask;//ne asiguram ca folosim doar cele mai din dreapta 4
switch-uri, facand SI logic cu o masca.
PORTB = lookUpTable[i];

/*
Varianta cu switch si case-uri
*/
switch(i)
{
case 0x00: PORTB = 0x3F;break; // Afiseaza cifra 0 pe display ..
case 0x01: PORTB = 0x06;break;
case 0x02: PORTB = 0x5B;break;
case 0x03: PORTB = 0x4F;break;
case 0x04: PORTB = 0x66;break;
case 0x05: PORTB = 0x6D;break;
case 0x06: PORTB = 0x7D;break;
case 0x07: PORTB = 0x07;break;
case 0x08: PORTB = 0x7F;break;
case 0x09: PORTB = 0x6F;break;
case 0x0A: PORTB = 0x77;break;
case 0x0B: PORTB = 0x7C;break;
case 0x0C: PORTB = 0x39;break;
case 0x0D: PORTB = 0x5E;break;
case 0x0E: PORTB = 0x79;break;
case 0x0F: PORTB = 0x71;break; // .. Afiseaza litera F pe display
}
MSDelay(500);
}
}
void MSDelay(unsigned int itime)
{
unsigned int i; unsigned int j;
for(i=0;i<itime;i++)
for(j=0;j<4000;j++); //1 msec. tested using Scope
}

S-ar putea să vă placă și