Programmieren einer Uhr

Gast #2339721
Lesenswert?

Hallo,

will mit einem µC (An2131) eine Uhr programmieren und am 7 Segment 
ausgeben.

Sie soll fürn Anfang nur von 0-9 sekunden anzeigen.

Problem: Zählt nicht. es wird nur die 0 ausgegeben. Sicher weil sie als 
Startwert gilt und somit nichts mit dem Timer zu tun hat. Meine 
vermutung ist das der Timer nicht richtig läuft.
Den Startwert habe ich auf 64536 gesetzt damit der Counter nur noch 1ms 
läuft bis zum interrupt. ( Ein Takt vom Timer dauert 1µS--> 1000µs = 
1ms, 65536-1000 = 64536 :) )

Ich hoffe ihr könnt mir helfen..

Danke im Vorhinein

Hier mein Code dazu:

#define ALLOCATE_EXTERN
#include "ezusb.h"
#include "EZregs.h"

#define ZERO 0x18
#define ONE 0x7B
#define TWO 0x2C
#define THREE 0x29
#define FOUR 0x4B
#define FIVE 0x89
#define SIX 0x88
#define SEVEN 0x3B
#define EIGHT 0x08
#define NINE 0x09
#define DOT 0xF7
int milli=0,sek=0; //Globale Variable

void main (void)
{
    EA=1; // Timer Aktivieren
    ET0=1;   //Timer0 Aktivieren
  TMOD=0x01; //Modus von Timer 0 auf 16 BIT einstellen
    TR0=1; //Timer0 Einschalten

  TH0=0xFC; // 16 Bit Modus (2 Byte) Höheres Byte
        TL0=0x18; // Unteres Byte


  PORTCCFG=0x00;
  PORTBCFG=0x00;

  OEC=0xFF;
  OEB=0x03;
while(1)
{
  OUTB=0x03; // für common Anode müssen immer auf HIGH sein
    switch(sek)
  {
    case 0: OUTC=ZERO;
            break;

   case 1: OUTC=ONE;
           break;
   case 2: OUTC=TWO;
            break;
   case 3: OUTC=THREE;
            break;
   case 4: OUTC=FOUR;
            break;
   case 5: OUTC=FIVE;
            break;
   case 6: OUTC=SIX;
            break;
   case 7: OUTC=SEVEN;
            break;
   case 8: OUTC=EIGHT;
            break;
   case 9: OUTC=NINE;
            break;
  }

 }
}
void einemillisekunde (void) interrupt 2
{
  milli=milli+1;

  if(milli==1000)
  {
    milli=0;
  sek=1;
  }

}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren