Kleines programier Problem

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 18 10 2024  14:30:51      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Kleines programier Problem

    







BID = 157214

terra_5

Gerade angekommen


Beiträge: 2
Wohnort: Schweiz
 

  


Also ich bin eigentlich ein anfänger im programieren, und dadurch hab ich nicht so viel anung von der materie, programmieren.
Also mein problem:
ich habe die hardware für ein laufliecht hergestellt,
die hardware stimmt und sie hat keine fehler dadurch werde ich nicht näher auf diese sache eingehen.
nur dies, ich habe zwei tastschalter für die geschwindigkeit und zwei tastschalter für LEds lichter dazu und weg zu schalten, dazu kommt noch einschiebe schalter um die zweite funktion aufzurufen.
Leider hab ich es nicht geschaft das die flankenerkennung richtig funktioniert und darum schaltet es nur LEDs dazu oder weg wenn das programm ganz durchgeloffen ist.
UNd wenn jemand eine lösung für dieses problem hätte wäre ich sehr dankbar.

p.s veränderbara stärke der leds währen auch von vorteil.

hier mall mein programm.


#pragma DEBUG OBJECTEXTEND SMALL OPTIMIZE(4,speed)
#include <at89x52.h> // MS21 MESA speedy mit AT89S8252 uC
#include <intrins.h>
unsigned char ZEIT;
unsigned char i;
unsigned char Tabelle[6]=
{
129,66,36,24,36,66
}
;
unsigned char Tabelle2[7]=
{
1,3,7,15,31,63,127
}
;
bit l;
bit u;
bit o;
bit x;
bit GN;
bit cou_t0;
bit cou_t1;
bit pos_flanke;
bit rcou_t0;
bit rcou_t1;
bit Geschw_up_t0;
bit Geschw_down_t0;
bit Geschw_up_t1;
bit Geschw_down_t1;
bit pos_flanke_1;
bit pos_flanke_2;
bit pos_flanke_up;
bit pos_flanke_down;
unsigned char counter;
unsigned char input;
unsigned char Intervall;
unsigned char ZEIT_old;
extern void DEL_10MS(char);

void main (void)
{
i=0; // Initialisierung
l=1;
x=0;
cou_t0=0;
rcou_t0=0;
counter=0;
Intervall = 0;
while( 1 )
{
input=P3; // Port Einlesen
cou_t0 = cou_t1; // Flanken erkennung
rcou_t0 = rcou_t1;
Geschw_up_t0 = Geschw_up_t1;
Geschw_down_t0 = Geschw_down_t1;
DEL_10MS(1);
rcou_t1 =P3&32;
cou_t1 = P3&16;
Geschw_up_t1 = P3&1;
Geschw_down_t1 = P3&2;
pos_flanke =cou_t1 & ~cou_t0;
pos_flanke_2 =rcou_t1 & ~rcou_t0;
pos_flanke_up = Geschw_up_t1 & ~Geschw_up_t0;
pos_flanke_down = Geschw_down_t1 & ~Geschw_down_t0; //
o=P1&128;
u=P1&1;
GN=input&1;
if( pos_flanke_up )
{

ZEIT_old = ZEIT;
ZEIT = (ZEIT + 1) & 0x0F;
}
if( pos_flanke_down )
{
ZEIT_old =ZEIT;
ZEIT = (ZEIT - 1) & 0x0F;
}
if( (Intervall <= 0) || (ZEIT!= ZEIT_old) )
{
ZEIT_old = ZEIT;
Intervall = ZEIT;
}
else
{
Intervall --;
}
if( !Intervall )
{
if( ((P3&128)==128) )
{
if( i==6 )
{
i=0;
}
P1=~Tabelle[i];
i++;
x=0;
l=1;
}
else
{
if( x==1 )
{
}
else
{
P1=~Tabelle2[counter];
}
x=1;
if( o==0 )
{
l=0;
}
else
{
if( u==0 )
{
l=1;
}
}
if( pos_flanke )
{
if( counter>=6 )
{
counter=6;
}
else
{
counter++;
}
P1=~Tabelle2[counter];
l=1;
}
if( pos_flanke_2 )
{
if( counter<=0 )
{
counter=0;
}
else
{
counter--;
}
P1=~Tabelle2[counter];
l=1;
}
if( l==1 )
{
P1=_crol_(P1,1);
}
else
{
P1=_cror_(P1,1);
}
}
}
}

}

grux terra

BID = 157264

largefeet

Gelegenheitsposter



Beiträge: 57

 

  



Hier ein Tipp zur Flankenerkennung:

/*********************************************************
******************** Positive Flanken *******************
*********************************************************/

unsigned char Input_PortX_t0;
unsigned char Input_PortX_t1;
unsigned char pos_edge_PortX;
unsigned char Bit0;
unsigned char Bit3;

// Port_X wird eingelesen
Input_PortX_t1 = PortX;

// Testen, ob pos. Flanke an Port_X
pos_edge_PortX = Input_Port_t1 & ~Input_Port_t0;

// nereu Wert => alter Wert
Input_PortX_t0 = Input_PortX_t1;

// Einzelne Flanken den Bit-Variablen zuweisen:
/***********************************************/


// Modulo 2 liefert Wert des LSB
Bit0 = pos_edge_P0 % 2;

// Bit 3 in LSB schieben
pos_edge_PortX = pos_edge_PortX >>3;

// Modulo 2 liefert Wert des LSB
Bit3 = pos_edge_P0 % 2;

BID = 157265

terra_5

Gerade angekommen


Beiträge: 2
Wohnort: Schweiz

danke das kann ich schon ein bischen brauchen

BID = 157595

largefeet

Gelegenheitsposter



Beiträge: 57

und wegen der helligkeit,
komm und frag mich,

greez Tomer


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 22 Beiträge im Durchschnitt pro Tag       heute wurden bisher 9 Beiträge verfasst
© x sparkkelsputz        Besucher : 182195869   Heute : 2276    Gestern : 4612    Online : 540        18.10.2024    14:30
5 Besucher in den letzten 60 Sekunden        alle 12.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0260219573975