www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Hilfe bei programmieren mit Basic [für Matrixanzeige]


Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,
ich habe folgende Schaltung erfolgreich aufgebaut und programmiert:
[eine Matrixanzeige]
http://www.dieelektronikerseite.de/uC%20Ecke/Lecti...

Das Programm:

$regfile "m8def.dat"
$crystal = 1000000

'### Variablendefination für Zeichengenerator
Dim Dispcol As Byte
Dim Dispcnt As Byte
Dim Bitbld As Byte
Dim Chradr As Word
Dim Charnr As Byte


'### Konfiguration für Display
Config Portd = Output
Config Portc = Output


Dispcnt = 0 : Dispcol = 1 : Charnr = 65

'### Hauptprogramm: Zeichenanzeige
Do
  Chradr = Charnr - 32 : Chradr = Chradr * 5 : Chradr = Chradr + Dispcnt
  Bitbld = Lookup(chradr , Chartab)
  Portc = Dispcol : Portd = Bitbld : Waitms 1
  Incr Dispcnt : Dispcnt = Dispcnt Mod 5
  Shift Dispcol , Left : If Dispcol = 32 Then Dispcol = 1
Loop


'### Zeichensatztabelle
Chartab:
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 ' 
32=spc
Data &B00000000 , &B00000000 , &B01011111 , &B00000000 , &B00000000 ' 
33=!
Data &B00000000 , &B00000011 , &B00000000 , &B00000011 , &B00000000 ' 
34=Bracket
Data &B00010100 , &B01111111 , &B00010100 , &B01111111 , &B00010100 ' 
35=#

u.s.w...

Ich möchte durch einen Input festlegen welches Zeichen angezeigt wird. 
Ich dachte mir Port B als Input zu benutzen. Leider Kann ich nicht 
selbst programme schreiben, weil ich keine Programmiersprache kann. Ich 
weiß auch nicht welche spannung ich an port b dann als signal anlegen 
soll. Wäre super wenn mir jemand sagt wie die Schaltung dazu aussehen 
soll und mir das Programm schreiben könnte ;D
MFG Iron

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das hab ich noch vergessen...
ich dachte mir das zeichen durch ein 7stelligen code festzulegen. um ein 
ausrufezeichen darzustellen müsste man an port B also 0100001 anlegen. 
Also immer nach dem ascii-code. wenn ich das richtig verstanden habe ist 
Chradr der wert der das zeichen definiert. Man müsste dem 
microcontroller also iwie sagen wie er von 0100001 auf 33 kommt. Ich 
hoffe ihr versteht was ich meine. Aber da ich wirklich nur mit 
vorgegebenen Programmen arbeiten kann wäre es super wenn mir jemadn das 
Programm schreiben kann. Vielen Dank ;D

MFG Iron

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Da brauchst Du gar nichts zu machen denn 0100001 sind 33

Der Port benötigt 5V-Pegel.

Otto

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Antwort!
also reicht es, wenn ich das schreibe?
Do
  For Charnr = 32 To 127
    For Cnt = 0 To 500
      Chradr = Portb
      Bitbld = Lookup(chradr , Chartab)
      Portc = Dispcol : Portd = Bitbld : Waitms 1
      Incr Dispcnt : Dispcnt = Dispcnt Mod 5
      Shift Dispcol , Left : If Dispcol = 32 Then Dispcol = 1
    Next Cnt
  Next Charnr
Loop

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erkläre mir bitte den Sinn der 2 Schleifen (Charnr und Cnt) - Du mußt 
nur mit dem vom Port eingelesenen ASCII-Wert auf Deine Lookup-Table 
zugreifen.

Oder hast Du mehrere Displays, welche Du ansteuern möchtest ?

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nun ja ... deswegen frag ich ja ob mir jemand das programm schreiben 
kann^^ ich weiß zu wenig von Microcontrollern und Programmiersprachen. 
Ich bin 9te Klasse auf dem Gymnasium ;D Aber ich kann meinen Atmega8 
flaschen und schaltungen aufbauen =)

Ich habe nur eine Matrixanzeige und möchte ein Zeichen durch den input 
vorgeben und dieser soll dann dargestellt werden. Alles gemäß dem assci 
code. Momentan versuche ich das Programm aus dem Tutorial von der seite 
oben so zu verändern,dass es meinem Wunsch entspricht, aber das klappt 
leider nicht. Ich bitte weiter um Hilfe

Iron

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Originalprogramm zeigt Dir ein "A" an, welches durch "Charnr = 65" 
vorgegeben wurde.

- Konfiguriere Port B als Input
- Lies in der "DO"-Schleife Deinen Port B ein
- Setze Charnr = Portb (oder heißt das in Basic auch Pinb?)

Achtung: ich programmiere nicht in Basic - die Feinheiten musst Du 
ausknobeln.

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hört sich ja einfach an ^^ aber es klappt nicht könnte mir vl jemand das 
programm dem entsprechend umschreiben? ich würde mich echt sehr freuen . 
Danke ;D

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du mal: Charnr = Pinb eingefügt ?

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> aber es klappt nicht

ist ein bischen dünn:

- was klappt nicht ?
- was hast Du gemacht ?
- was ist passiert ?

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe jetzt mehrmals versucht eine art Befehl wie Charnr=PORTB 
zu finden. Außerdem habe ich "Config PORTB=input" hingeschrieben.
->auf atmega übertragen
->sinnloses gewusel auf der Matrixanzeige
->spannung auf portb.6 gegeben
->keine veränderung

ich habe das auch mit einem interrupt versucht

$regfile "m8def.dat"
$crystal = 1000000

'### Variablendefination für Zeichengenerator
Dim Dispcol As Byte
Dim Dispcnt As Byte
Dim Bitbld As Byte
Dim Chradr As Word
Dim Charnr As Byte


'### Variablendefination für Hauptprogramm
Dim Cnt As Byte

Dispcnt = 0 : Dispcol = 1



MFG Iron

'### Konfiguration für Display
Config Portd = Output
Config Portc = Output


'### Timersteuerung für Multiplexansteuerung konfigurieren
Config Timer0 = Timer , Prescale = 8
Enable Timer0

On Timer0 Refresh_display
Enable Interrupts


'### Hauptprogramm: Zeichenanzeige
Config Portb = Input


Charnr = portb





'### Interrupt-Routine: Multiplexsteuerung des Displays
Refresh_display:
  Chradr = Charnr - 32 : Chradr = Chradr * 5 : Chradr = Chradr + Dispcnt
  Bitbld = Lookup(chradr , Chartab)
  Portc = Dispcol : Portd = Bitbld
  Incr Dispcnt : Dispcnt = Dispcnt Mod 5
  Shift Dispcol , Left : If Dispcol = 32 Then Dispcol = 1
Return


'### Zeichensatztabelle
Chartab:
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 
' 32=spc
Data &B00000000 , &B00000000 , &B01011111 , &B00000000 , &B00000000 
' 33=!
Data &B00000000 , &B00000011 , &B00000000 , &B00000011 , &B00000000 
' 34=Bracket

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann ein wildes Blinken sehn  aber es scheint ein wenig darauf zu 
reagieren. Je nachdem ob mein ein signal an einen Port anlegt leuchten 
ein paar leds mehr oder weniger auf.
Iron

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zuerst einmal brauchst Du einen Input nicht zu definieren, wie ich 
mittlerweile las.

Weiterhin solltest Du das Eingangs genannte Programm dahingehend 
modifizieren, dass Du den Port einliest - das müsste mit Charnr = Pinb 
funktionieren - ansonsten sieh in der BASCOM-Hilfe nach.

Drittens musst Du sicherstellen, dass am Eingang auch wirklich das 
gewünschte Muster anliegt - es reicht nicht, zwei Leitungen für "33" 
daran zu basteln, sondern Du musst sicherstellen, dass alle Leitungen 
des Ports definierte Pegel (also "0" oder "1") haben - ggf. 
Pull-down-Widerstände einsetzen.

Wildes ausprobieren bringt nichts ausser Zeitverlust - nimm das Programm 
aus Deinem 1. Post und lies den Port ein - das war es.

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Do

  Charnr = Pinb

  Chradr = Charnr - 32 : Chradr = Chradr * 5 : Chradr = Chradr + Dispcnt
  Bitbld = Lookup(chradr , Chartab)
  Portc = Dispcol : Portd = Bitbld : Waitms 1
  Incr Dispcnt : Dispcnt = Dispcnt Mod 5
  Shift Dispcol , Left : If Dispcol = 32 Then Dispcol = 1
Loop

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK vielen Dank ich werds gleich ausprobieren
ich poste dann das ergebniss

Iron

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aus dem tutorial : "Die beiden Taster werden wieder gegen Null 
geschaltet, damit wir die AVR-eigenen Pullup-Widerstände verwenden 
können."

was ist mit gegen Null schalten gemeint? heißt das ich brauche keine 
widerstände? Da Portb 8bits hat und ich nur 7bits brauche, was mache ich 
dann mit dem übrigen?
Iron

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du möchtest das anzuzeigende Zeichen mit Tastern anzeigen ?

Bitte beschreibe genau, mit wieviel Tastern und wie das genau 
funktionieren soll.

Die Pull-Up des Controllers nimmt man, um externe Widerstände zu sparen.

Wie genau soll das funktionieren - Du müsstest die Taster ja dann gemäß 
ASCII-Tabelle betätigen - bis zu 7 gleichzeitig.

Wenn Du nur 7 bit auswerten müchtest, kannst Du das 8. ausmaskieren, 
indem Du z. B. "Charnr" mit 127 (= 0111 1111) verundest.

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe mir ein Lochstreifenlesegerät gebastelt. Das ganze dient nur 
der veranschaulichung, d.h. ich stelle nur einen kleinen Lochstreifen 
her. Das ein langer lochstreifen zu aufwändig ist ist mir klar ;)

Ich beschäftige mich damit, weil wir grade die codes in Informatik 
behandeln.

Ein problem könnte sein, wenn der lochstreifen beim durchziehen ein 
sinnloses Signal durchgibt, dass die anzeige dann spinnt. Also habe ich 
die Chartabelle um 31 stellen erweitert und das "-32" bei chradr 
weggelassen:

Do

  Charnr = Pinb

  Chradr = Charnr : Chradr = Chradr * 5 : Chradr = Chradr + Dispcnt
  Bitbld = Lookup(chradr , Chartab)
  Portc = Dispcol : Portd = Bitbld : Waitms 1
  Incr Dispcnt : Dispcnt = Dispcnt Mod 5
  Shift Dispcol , Left : If Dispcol = 32 Then Dispcol = 1
Loop


'### Zeichensatztabelle
Chartab:
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000001
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000010
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000011
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000100
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000101
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000110


usw.


MFG Ironkekz

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn der Lochstreifenleser ein ordnungsgemäßes TTL-Signal ausgibt, 
sollte das funktionieren - wichtig ist nur, dass Du das Signal 
"zwischenspeicherst", bis der nächste gültige Wert gelesen wurde.....

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Ein problem könnte sein, wenn der lochstreifen beim durchziehen ein
>sinnloses Signal durchgibt, dass die anzeige dann spinnt. Also habe ich
>die Chartabelle um 31 stellen erweitert und das "-32" bei chradr
>weggelassen:

Hättest du dir mit einem einfachen 'if Charnr >=32...' ersparen können.

MfG Spess

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hatte ich auch vor aber bascom hatt dann immer ne fehlermeldung 
geschickt. Wie gesagt ich hab keine ahnung vom Programmieren. Aber du 
könntest mir ja sagen wie es weiter gehen könnte nach if charnr <32...

Iron

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich denke, dass Dein Ziel ist das Programmieren zu lernen - oder ?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Wie gesagt ich hab keine ahnung vom Programmieren.

Und ich eigentlich keine Ahnung von BASCOM.

>hatte ich auch vor aber bascom hatt dann immer ne fehlermeldung
>geschickt.

Welche? Eine if-Anweisung sieht immer so aus:

if <Bedingung> then
 Code
end if

>Aber du könntest mir ja sagen wie es weiter gehen könnte nach
>if charnr <32...

Rate mal, warum ich 'if Charnr >=32...' angeraten habe? Da gibt es etwas 
zu tun. Bei deiner nicht.

MfG Spess

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eigentlich dürfte die anzeige, wenn kein signal anliegt doch auch nichts 
anzeigen. Stattdessen leuhten abwechelnd alle LEDs ein @ oder ein ?. Das 
ist zwar lustig aber nicht beabsichtig. Warum ist das so. wie kann ich 
das verhindern?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>eigentlich dürfte die anzeige, wenn kein signal anliegt doch auch nichts
>anzeigen.

Wenn die Pins offen sind, fangen sie sich alle möglichen Pegel ein. 
Dagegen helfen Pull-Up- oder Pull-Down-Widerstände. Im einfachsten Fall 
dir internen Pull-Ups aktivieren:  'PortB=$FF'.

MfG Spess

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich hab ihn jetzt so programmiert dass er wenn ein wert unter 32 
anliegt, er diesen also binärcode darstellen müsste. trotzdem danke ;)
Frage: Wie kommt der Atmega8 von der Binärzahl zur Dezimalzahl?
wenn pinb.0 = 1
pinb.1 = 1
und alles andere 0 ist müstte da doch 3 rauskommen ja?
Ich vertehe nicht warum die anzeige bei keinem Signal wie oben genannt 
reagiert. Ab welcher spannung zählt das signal als 1? Vielleicht fließt 
irgendein Schwachstrom?!?

MFG Iron

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok Danke Spess ;)
habs zu spät gelesen

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Also ich hab ihn jetzt so programmiert dass er wenn ein wert unter 32
>anliegt, er diesen also binärcode darstellen müsste.

Wie?

>Frage: Wie kommt der Atmega8 von der Binärzahl zur Dezimalzahl?
>wenn pinb.0 = 1
>pinb.1 = 1
>und alles andere 0

Ergibt Binär 0b00000011. Und das ist 3.

>...ist müstte da doch 3 rauskommen ja?

Siehe oben.

MfG Spess

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also hier nochmal das Programm

$regfile "m8def.dat"
$crystal = 1000000

'### Variablendefination für Zeichengenerator
Dim Dispcol As Byte
Dim Dispcnt As Byte
Dim Bitbld As Byte
Dim Chradr As Word
Dim Charnr As Byte


'### Variablendefination für Hauptprogramm
Dim Cnt As Byte

Dispcnt = 0 : Dispcol = 1


'### Konfiguration für Display
Config Portd = Output
Config Portc = Output
Portb = $ff


Do

  Charnr = Pinb

  Chradr = Charnr : Chradr = Chradr * 5 : Chradr = Chradr + Dispcnt
  Bitbld = Lookup(chradr , Chartab)
  Portc = Dispcol : Portd = Bitbld : Waitms 1
  Incr Dispcnt : Dispcnt = Dispcnt Mod 5
  Shift Dispcol , Left : If Dispcol = 32 Then Dispcol = 1
Loop


'### Zeichensatztabelle
Chartab:
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000001
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000010
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000011
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000100
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000101
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000110
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000111
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00001000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00001001
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00001010
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00001011
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00001100
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00001101
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00001110
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00001111
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00010000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00010001
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00010010
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00010011
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00010100
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00010101
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00010111
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00011000
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00011001
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00011010
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00011011
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00011100
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00011101
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00011110
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00011111
Data &B00000000 , &B00000000 , &B00000000 , &B00000000 , &B00000000 
' 32=spc
Data &B00000000 , &B00000000 , &B01011111 , &B00000000 , &B00000000 
' 33=!
Data &B00000000 , &B00000011 , &B00000000 , &B00000011 , &B00000000 
' 34=Bracket
Data &B00010100 , &B01111111 , &B00010100 , &B01111111 , &B00010100 
' 35=#
Data &B00100110 , &B01001001 , &B01111111 , &B01001001 , &B00110010 
' 36=$
Data &B00100011 , &B00010011 , &B00001000 , &B01100100 , &B01100010 
' 37=%
Data &B00110010 , &B01001101 , &B01010010 , &B00100000 , &B00010000 
' 38=&




Nun leuchten alle LEDs wenn kein signal anliegt....


also nur noch mal zur Sicherheit

Portb.0=1 heißt 00000001
Portb.1=1 heißt 00000010
Portb.2=1 heißt 00000100
Portb.3=1 heißt 00001000
Portb.4=1 heißt 00010000
Portb.5=1 heißt 00100000
Portb.6=1 heißt 01000000
Portb.7=1 heißt 10000000

und die ports sind dort wie auf diesem bild beschriben: 
http://www.rn-wissen.de/index.php/Bild:Pinbelegungmega8.gif



Ich bin ratlos...

MFG Iron

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Link oben geht scheinbar nicht.
http://www.rn-wissen.de/index.php/ATMega8

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist jetzt genau das Problem ?

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
verienfacht gesagt die anzeige zeigt nicht an was sie soll. es scheint 
als sei der richtige charnr-Wert nich mit dem richtigen zeichen 
verknüpft...

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also für "3" hast Du in Deiner Tabelle auch kein Muster definiert - oder 
?

Eine Binärzahl ist eine Dezimalzahl - es ist nur eine andere Art der 
Darstellung.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Nun leuchten alle LEDs wenn kein signal anliegt....

Wenn kein Signal anliegt und die internen Pull-Ups eingeschaltet sind 
ist das Eingangssignal $FF. Dafür existiert aber kein Eintrag in deiner 
Tabelle.

Evtl. hilft das:

Charnr = Pinb and $7F

MfG Spess

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe das jetzt mal mit dem IF befehl geschrieben:

'### Konfiguration für Display
Config Portd = Output
Config Portc = Output
Portb = $ff


Do
  If Pinb > 32 Then
  Charnr = Pinb and $7F
  End If

  If Pinb < 32 Then
  Charnr = 32
  End If

  Chradr = Charnr -32 : Chradr = Chradr * 5 : Chradr = Chradr + Dispcnt
  Bitbld = Lookup(chradr , Chartab)
  Portc = Dispcol : Portd = Bitbld : Waitms 1
  Incr Dispcnt : Dispcnt = Dispcnt Mod 5
  Shift Dispcol , Left : If Dispcol = 32 Then Dispcol = 1
Loop


und die Tabbelle beginnt wieder erst beim 32ten Eintrag. Meinst du das 
könnte klappen?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>  If Pinb > 32 Then
>  Charnr = Pinb and $7F
>  End If

>  If Pinb < 32 Then
>  Charnr = 32
>  End If

Eine IF-Anweisung kann auch einen Else-Zweig enthalten.

if <Bedingung> then
 Code für den die Bedingung zutrifft
else
 Code für den die Bedingung nicht zutrifft
end if

MfG Spess

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Och ich bin soo blöd ^^
es unktioniert eigentlich alles. ich habe nich daran geadacht , dass der 
port mit signal, 0 ist und nicht 1. und die ports ohne signal 1 
sind^^.... das lag jetzt an den Pull-Ups oder? kann ich das auch um 
gekehrt machen? es soll bei jedem signal auch eins am port heißen. sind 
das dann Pull-downs?. weißt du auch wie ich die aktivieren kann?
Vielen Dank - Ironkekz

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

AVRs besitzen nur interne Pull-Ups. Pull-Downs müssen extern sein. Also 
von jedem Portpin ein Widerstand (z.B. 10k) nach Masse.

MfG Spess

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok vielen Dank
Ich denke soweit klappt dann alles ;D

MFG Iron

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
könnte man nich einen mathematischen trick nehmen um die umgekehrten 
signale zu bekommen? so etwas wie
charn r= Pinb *(-1) and $7F
MFG Iron

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
charn r = not pinb
charn r = char r and $7f

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Damit machst Du aber sicher nicht aus einem "pull-up" einen 
"pull-down".....

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber wie dann? es muss doch eine Möglichkeit geben!

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Widerstände (oder ein 9-poliges Widerstandsnetzwerk) zwischen den 
Portpins von Port B und GND einlöten.

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
würde es nicht reichen die chartabelle von hinten nach vorne 
aufzuschreiben?

Autor: Otto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst die "Pull-Downs" nicht durch Software ersetzen - das geht 
einfach nicht.

Autor: Ironkekz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So das war es jetzt wirklich ;)
Indem man bei der tabelle unten und oben vertauscht (quasi gespiegelt) 
hat, konnte man die pull-ups benutzen. ist eigentlich ganz logisch wenn 
man weiß wie die buchstaben erzeugt werden. Ich habe noch 32 einträge 
mit dem entsprechendem wer als binärzahl, der tabelle hinzugefügt und 
dann die "-32" weggelassen. Nun Funktioniert alles einwandfrei.

Vielen Dank für eure Hilfe.

MFG IronKekz

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.