Gast
#2058790
Hallo
Ich komm irgendwie nicht weiter bei dem Problem
Es geht um folgendes
Ich habe hier ein C Code für ein Lauflicht auf einem 68HC08 Controller
Der soll nun so verändert werden dass man das Lauflicht per Taste
starten und stoppen kann
Nun hab ich etwas gesucht und habe den KBIER gefunden aber das wars auch
Keine Angabe wie das eingebunden wird
Mein Versuch steht hier drunter aber ich dachte mir ich frage mit einer
if Schleife den Interrupt ab während in der If Schleife eine unendlich
for Schleife(;;) für das Lauflicht abläuft
Ist das so machbar oder was läuft da falsch ?
Ich finde jetzt auch keine Quelle die mir das näherbringt wie ich den
Interrupt einbinde und dann auch noch in C
Also falls ihr da was wisst gebt Bescheid
Grüße Thorsten
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
// IO_Ports
int delay = 5000;
static void Delay(void) {
int cnt = 0;
while (cnt <delay) {
__RESET_WATCHDOG(); /* feeds the dog */
cnt++;
}
}
static void LightShow(void) {
unsigned char i;
for (i = 1; i > 0; i <<=1) {
PTB = i; // Daten über Port B ausgeben
Delay();
}
}
void KBI_init(void) {
/*This procedure is to prevent False Interrupts at initialization */
KBSCR_IMASKK = 1; /* Mask Keyboard interrupts */
KBIER_KBIE2 = 1; /* Enables pin2 of KBI by setting KBIE2(PTA2) */
KBSCR_ACKK = 1; /* Clear any false interrupts */
KBSCR_IMASKK = 0; /* Unmask Keyboard interrupts */
/* END Avoidance of False Interrupts */
/* Configures KBI Status & Control Register */
KBSCR = 0; /* IMASKK=0: Clears KBI Mask Bit (Enable Ints)
/* MODEK=0: Interrupt requests on Falling Edge Only */
}
interrupt 15 void _KB_Interrupt(void) {
KBSCR_ACKK = 1; /* Acknowledge KB Interrupts */
PTA_PTA1 = ~PTA_PTA1; /* Toggles the LED */
}
//Hauptprogramm
void main(void) {
EnableInterrupts; /* Interrupts freigeben */
DDRB = 0xFF; // Data Direction Register Port B
// alle Pins des Port B als Output
LightShow();
if KBSCR = 0
for(;;) {
LightShow();
} /* loop forever */
}