Hallo Witkatz !
Vielen Dank für Deine beispielhafte Unterstützung!
Nur ich verstehe eines nicht , warum hier im anderem Programm "__delay_ms(150) " wunderbar funktioniert.
Ich kann keinen Unterschied an der Konfigurierung feststellen, oder gibt es da Falltürchen in den man als Anfänger noch fällt ??
Code:
#include <xc.h>
#define _XTAL_FREQ 4000000 // aktuelle Oszillatorfrequenz für die richtige Zeitdauer des __delay_ms Makros
// hier 4.0MHz
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
void init(void){
TRISD = 0x00; // RD0 bis RD7 = Ausgang
}
void main(void){
init();
// Endlos Hauptschleife
while(1){
PORTD = 0; // Port D = 0, alle 8 LED aus
do{ // do While Kontrolle am Ende
__delay_ms(150); // der Zaehlschleife 150ms warten
PORTD++;
} while (PORTD != 0xFF); // Zaehlende max 255/0xFF
}
}
Gruss und Dank
Gerhard
- - - Aktualisiert - - -
Nachtrag:
Menno bin ich ein "Blödian" , habe ich doch das __delay_ms(xy) hinter der zweiten Zeile : PORTD = 0b11111000 ; vergessen...vor den Kopf fasse....grolll !!!!!!!!!!!!!!
Ich habe doch daran nicht gedacht, das die "main" eine "loop" ist....grrrrrr
So funzt es jetzt:
Code:
void init(void){
TRISD = 0x00; // RD0 bis RD7 = Ausgang
}
void main(void)
{
init();
PORTD = 0B11000000; // "0" Segmentausgabe, an PORD uebergeben (7-Segm.LED)
__delay_ms(500);
PORTD = 0B11111000; // "7" Segmentausgabe, an PORD uebergeben (7-Segm.LED)
__delay_ms(500);
/* while(1)
{
//hier main-loop bei Bedarf halten
}
*/
}
Ja , ja so ist es, wenn einem die Frauensleut immer vom Programmieren wegholen, um "niedere" Hausarbeiten zu machen
Bitte meinen Aufruhr hier vielmals zu Entschuldigen....na ja man wird älter und vergesslicher
Gerhard
Lesezeichen