Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Warum geht die if bedingung nicht....???? Kategorie: Programmierung Basic (von Jürgen - 26.11.2008 22:12)
Als Antwort auf Re: Warum geht die if bedingung nicht....???? von vitty - 24.11.2008 22:39
Ich nutze:
C-Control Pro Mega32, CC-Pro 32 Application Board
> > > Hallo hier mal ein teil eines programms, bin am verzweifeln.
> > >  es zeigt mir zwar den wert der tastetur an wenn ich 1 drück
> > > aber die if schleife wird nicht ausgeführt.
> > >
> > > bitte helft mir....
> > >
> > >
> > > Lab menu '#########################-Menü-#######################################
> > >
> > >  zeile_1="FIRST CHARGE 1"
> > >  zeile_2="CAP CHECK    2"
> > >  zeile_3="FINAL CHARGE 3"
> > >  zeile_3="UEBERWACHUNG 4"
> > >
> > >  LCD_Start()
> > >  LCD_Locate(1,1)
> > >  LCD_WriteText(zeile_1)
> > >  LCD_Locate(2,1)
> > >  LCD_WriteChar(eingelesenASCII)
> > >  'LCD_Locate(3,1)
> > >  'LCD_WriteText(zeile_3)
> > >  'LCD_Locate(4,1)
> > >  'LCD_WriteText(zeile_4)
> > >  AbsDelay(2000)
> > >
> > >     Key_Init()
> > >
> > >     eingelesen=Key_Scan()
> > >     If eingelesen<>0 Then
> > >     eingelesenASCII=Key_TranslateKey(eingelesen)
> > >      End If
> > > '###########################-First Charge-#####################################
> > >     If eingelesenASCII=1 Then
> > >       LCD_Start()
> > >        '***********************************************************************
> > >          ADC_Set(0xC0,ADC1)       'adc F0 initialisieren (zellen)
> > >          Uges=0XC0/1023*ADC_Read()
> > >          'ACHTUNG Spannungsteiler einfügen für gesammtspannung
> > >          ADC_Disable()
> > >            If Uges<20 Then                 'programm überprüft den messdeckel
> > >                 zeile_1="BitteMessplatte" 'wenn nicht angebracht sprung zurück
> > >                 zeile_2="  anbringen"      'ins menü
> > >
> > >                 LCD_Start()
> > >                 LCD_Locate(1,1)
> > >                 LCD_WriteText(zeile_1)
> > >                 LCD_Locate(2,1)
> > >                 LCD_WriteText(zeile_2)
> > >                 AbsDelay(3000)
> > >                 LCD_ClearLCD()
> > >                Goto menu
> > >             End If
> > >          '**********************************************************************
> > >      First_Charge()
> > >        
> > >  
> > Hallo Vitty,
> >
> > Du wandelst mit Key_TranslateKey deine Eins in ASCII um. Wenn mich nicht alles
> > täuscht ist die 1 in ASCII 49. Versuche doch mal  If eingelesenASCII=49 Then.
> > Habe es selbst nicht ausprobiert, könnte aber gehen.
> >
> > Grü�e
> > Jürgen
> >
>
>
> Dankeschön ich schau immer in der tabelle in der
>  ersten reihe garnicht gesen das da noch ein
> ziffernfeld ist.
>
> hab mal noch ne frage kann des sein das augenge invertiert sind?
>
> und zwar nach dem code, is es klar aber wenn ich es ausführe ist pC0 on und pC1 off
> und der pc3 der auch nur kurz an sein dürfte ist immer an.
> Kann mal jemand den code ansehen u mir sagen was ich diesmal
> falsch gemacht hab.....
>
> Sub First_Charge()  'funktion zur messung der zellen
>       i=1
>       For i=1 To 20
>
>            Port_DataDir(cport,0xff)
>            
>          If i=1 Then
>             Port_WriteBit(19,PORT_ON) 'register löschen
>             AbsDelay(500)
>             Port_WriteBit(19,PORT_OFF)'
>             Port_WriteBit(16,PORT_ON)'register port a on wenn i=1
>          Else
>             Port_WriteBit(16,PORT_OFF)'register port a off
>          End If
>            If i>1 Then
>             'Port_WriteBit(23,PORT_OFF)'register port a off
>            End If
>       Port_WriteBit(17,PORT_ON)   'portC6 register b
>       Port_WriteBit(18,PORT_ON)   'portC5 register clk
>       AbsDelay(500)
>       Port_WriteBit(18,PORT_OFF)   'off clk register
>
>       AbsDelay(200)
>
>       ADC_Set(0xC0,ADC0)       'adc F0 initialisieren (zellen)
>       ADC_Read()
>
>       zellen(i)=0XC0/1023*ADC_Read()' Spannung ausrechnen
>
>
>         zeile_1="ZELLE"
>                                    'ausgabe der zellenwerte
>         LCD_Start()                'auf dem bildschirm
>         LCD_Locate(2,1)
>         LCD_WriteText(zeile_1)
>         LCD_Locate(2,7)
>         LCD_WriteWord(i,2)
>         LCD_Locate(2,11)
>         LCD_WriteFloat(zellen(i),4)
>
>         AbsDelay(2000)
>         LCD_ClearLCD()
>
>         EEPROM_WriteFloat(i,zellen(i)) 'speichern der werte!!!!!!!
>
>
>         If i=20 Then
>             Port_WriteBit(19,PORT_ON) 'register löschen on Flanke
>             AbsDelay(500)             'verzögerung 0,5 sec.
>             Port_WriteBit(19,PORT_OFF)'Clr off
>             Port_WriteBit(17,PORT_OFF)'port b am register off.
>         End If
>
>      Next
>
>
>  End Sub
>
> Vielen dank im voraus!!!!!

Hallo Vitty,

kannst Du noch mal die Zuordnung der Portbits zu den Ports prüfen? Du scheibst 17 ... 'portC6 und
18, 'portC5!! Ich lese aus der Tabell für den 128er: Port C6-->Bit 22, Poert C5-->Bit 21. Port C3 ist
nach meiner Auffassung der Tabelle auf Bit 19 zu finden. Einer von uns beiden hat hier einen
Knick in der Optik, hoffentlich nicht ich (oder stimmen nur die Kommentare nicht?).

Grü�e
Jürgen
 


    Antwort schreiben


Antworten:

Re: Warum geht die if bedingung nicht....???? (von vitty - 28.11.2008 15:47)