Gast
#717931
Hallo
Probiere gerade den RB Interrupt, welcher bei jedem Wechsel an RB4-RB7
einen Interupt auslöst, aus.
Das Programm:
// Include-Files
#include <16f876.h> // Microcontroller-Definitionen
#include <reg16f876.h> // Erweiterte Definitionen
// Configuration-Bits Einstellungen
#fuses HS,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP
// Clockspeed=8MHz fuer die Delays setzen
#use delay(clock=8000000)
#INT_RB //PORTB Interrupts
void interrupt (void)
{
PORTC=0x0F; //PORTB an PORTC ausgeben
}
void init (void) //Initialisierungen
{
DDRB=0xFF; //PORTB als Eingang (Schalter)
DDRC=0x00; //PORTC als Ausgang (LED)
enable_interrupts(GLOBAL); //Globale Interrupts ein
enable_interrupts(INT_RB); //PORTB Interrupts ein
}
void main(void) //Main
{
init(); //Initialisierungen
while(1){
PORTC=0xF0;
}
}
Am PORTB befinden sich Schalter und am PORTC LEDs.
Meiner Meinung, sollte es vollgendermassen funktionieren:
Wenn alle Schalter 0, dann leuchten die oberen vier LEDs
Wenn Schalter 4,5,6 oder 7 gedrückt wird, sollten für eine kurze Zeit
die unteren vier LEDs leuchten und dann gleich wieder die oberen vier.
Das macht es aber nicht!!
--> Wenn Schalter 4,5,6 oder 7 "1" ist, dann bleiben die unteren LEDs
solange auf "1", bis der Schalter 4,5,6 oder 7 wieder auf "0" ist.
Verstehe ich das RB-Interrupt falsch?!!