Ist es möglich unter Bascom einen 2313 dem A.1 einen virtuellen D.7 zuzuweisen um ihn gemeinsam mit den anderen D´s anzusprechen?
Fetti schrieb: > Ist es möglich unter Bascom einen 2313 dem A.1 einen virtuellen D.7 > zuzuweisen um ihn gemeinsam mit den anderen D´s anzusprechen? Ich weiß nicht, ob ich es richtig verstanden habe. Als Beispiel habe ich ein Variable namens "Alfred" vom Typ Byte angelegt. Darin kann ich jedes Bit einzeln dem Inhalt des Port B zuweisen. Ich habe auch noch eine Bitvariable namens "D7" erstellt und der den Wert von PortB.3 zugewiesen. Das geht tadellos. Ich benutze das, um mir aus diversen Variablen einzelne Bits zu holen und sie dann neu zusammenzusetzen. Das erspart mir einen Haufen Ver-Undungen oder Ver-Oderungen. $regfile = "m8def.dat" 'ATmega8 $crystal = 8000000 $ '8 MHz $hwstack = 40 $swstack = 40 $framesize = 40 $baud = 19200 Dim Alfred As Byte Dim D7 As Bit Config Portb = Output Alfred.0 = Portb.0 Alfred.1 = Portb.1 Alfred.2 = Portb.2 D7 = Portb.3
Thomas der Bastler schrieb: > was sagt der Compiler ? Was soll der sagen? Nichts -denn es ist ja syntaktisch richtig. ´Wenn Du nicht so bequem wärest, hättest Du das selbst ausprobieren können! Paul
Mein Probblem ist folgendes:
Habe folgendes vom 8515 portiert, eine dot matrix.
funktioniert super, nur den A.1 kriege ich nicht integriert, wobei er
separat angesprochen (sprich columns über porta) durchaus funktioniert.
Daher schwebte mir etwas wie portd.7 alias porta.1 vor.
läßt sich compilieren, hat aber keinen effekt.
'-----------------------------------------------------------------------
------------------
'copyright : (c) 2008-2007, AVRprojects.info
'purpose : Dot Matrix
'-----------------------------------------------------------------------
------------------
$regfile = "attiny2313.dat" ' specify
the used micro
$crystal = 8000000 ' used
crystal frequency
Declare Sub Load_data
Declare Sub Swift_data
Rows Alias Portb
Cols Alias Portd
Config Rows = Output
Config Cols = Output
Config Timer0 = Timer , Prescale = 8
Dim A As Integer
Dim Temp As Byte
Temp = 0
Dim Tdata1 As Byte
Dim Tdata2 As Byte
Dim Tdata3 As Byte
Dim Tdata4 As Byte
Dim Tdata5 As Byte
Dim Tdata6 As Byte
Dim Tdata7 As Byte
Dim Tdata8 As Byte
On Timer0 Disps:
Enable Interrupts
Enable Timer0
Do
Restore Happy
Load_data
Waitms 300
Restore Happy2
Load_data
Waitms 100
Restore Happy3
Load_data
Waitms 100
Restore Happy2
Load_data
Waitms 300
Restore Moshpit
Load_data
For A = 1 To 64
Swift_data
Waitms 300
Next
Loop
Disps:
Temp = Temp + 1
Select Case Temp
Case 1 :
Rows = Tdata1
Cols = &H01
Case 2 :
Rows = Tdata2
Cols = &H02
Case 3 :
Rows = Tdata3
Cols = &H04
Case 4 :
Rows = Tdata4
Cols = &H08
Case 5 :
Rows = Tdata5
Cols = &H10
Case 6 :
Rows = Tdata6
Cols = &H20
Case 7 :
Rows = Tdata7
Cols = &H40
Case 8 :
Rows = Tdata8
Cols = &H80
Temp = 0
End Select
Return
Sub Load_data()
Read Tdata1
Read Tdata2
Read Tdata3
Read Tdata4
Read Tdata5
Read Tdata6
Read Tdata7
Read Tdata8
End Sub
Sub Swift_data()
Tdata1 = Tdata2
Tdata2 = Tdata3
Tdata3 = Tdata4
Tdata4 = Tdata5
Tdata5 = Tdata6
Tdata6 = Tdata7
Tdata7 = Tdata8
Read Tdata8
End Sub
End
Happy:
Data &B10100000 , &B01010000 , &B00101100 , &B11010010 , &B00010010 ,
&B00001100 , &B00000001 , &B00000000 , &B00000000 ,
Happy2:
Data &B10100000 , &B01010110 , &B00101001 , &B11001001 , &B00000110 ,
&B00000010 , &B00000001 , &B00000000 , &B00000000 ,
Happy3:
Data &B10100000 , &B01010000 , &B00100000 , &B11011000 , &B00100100 ,
&B00100100 , &B00011001 , &B00000000 , &B00000000 ,
Moshpit:
Data &B11111111 , &B11111111 , &B00000111 , &B00001110 , &B00001110 ,
&B00000111 , &B11111111 , &B11111111 , &B00000000
Data &B00111100 , &B01111110 , &B11100111 , &B11000011 , &B11000011 ,
&B11100111 , &B01111110 , &B00111100 , &B00000000
Data &B11001110 , &B11011111 , &B11011011 , &B11011011 , &B11011011 ,
&B11011011 , &B11111011 , &B01110011 , &B00000000
Data &B11111111 , &B11111111 , &B00011000 , &B00011000 , &B00011000 ,
&B00011000 , &B11111111 , &B11111111 , &B00000000
Data &B11111111 , &B11111111 , &B00011011 , &B00011011 , &B00011011 ,
&B00011011 , &B00011111 , &B00001110 , &B00000000
Data &B11000011 , &B11000011 , &B11000011 , &B11111111 , &B11111111 ,
&B11000011 , &B11000011 , &B11000011 , &B00000000
Data &B00000011 , &B00000011 , &B00000011 , &B11111111 , &B11111111 ,
&B00000011 , &B00000011 , &B00000011 , &B00000000
DATA &B00000000, &B00000000, &B00000000, &B00000000, &B00000000,
&B00000000, &B00000000, &B00000000, &B00000000
Port A.1 ist doch der Quarzanschluß. Hast Du da einen Quarz dran, oder ist der frei? Wenn er frei ist, dann mußt Du nur den PortA.1 als Output deklarieren: Config PortA.1 = Output Und dann noch PortD.7 (der ja leider nicht nach draußen gelangt) auf PortA.1 rausjagen: PortA.1 = PortD.7 Kompilieren läßt sich das: $regfile = "attiny2313.dat" $crystal = 8000000 $ '8 MHz $hwstack = 40 $swstack = 40 $framesize = 40 $baud = 19200 Dim Alfred As Byte Dim D7 As Bit Config Portb = Output Config Portd = Output Config Porta.1 = Output Alfred.0 = Portb.0 Alfred.1 = Portb.1 Alfred.2 = Portb.2 D7 = Portb.3 Porta.1 = Portd.7 Ich kann es nicht in Natura ausprobieren, weil ich nicht da bin, wo das freundliche Steckbrett ist, bin aber sicher, das schon so gemacht zu haben. mfG Paul
Hab klar keinen Quarz dran, hab es jetzt folgendermaßen (ohne Effekt) Porta.0 ist der betreffende, mein Fehler Verstehe nicht, wie ich die Alfreds in meine Columns integrieren soll. Rows Alias Portb Cols Alias Portd Config Rows = Output Config Porta.0 = Output Config Cols = Output Config Timer0 = Timer , Prescale = 8 Porta.0 = Portd.7 Dim A As Integer Dim Temp As Byte Temp = 0 Dim Tdata1 As Byte Dim Tdata2 As Byte Dim Tdata3 As Byte Dim Tdata4 As Byte Dim Tdata5 As Byte Dim Tdata6 As Byte Dim Tdata7 As Byte Dim Tdata8 As Byte
Fetti schrieb: > Verstehe nicht, wie ich die Alfreds in meine Columns integrieren soll. Das war nur ein Beispiel, weil nicht genau erkennbar war, wie es werden sollte. Das muß mit in die Schleife rein, nicht oben bei der Initialisierung: Porta.0 = Portd.7 Probier das aml aus. mfG Paul
Hallo, Fetti schrieb: > Disps: > Temp = Temp + 1 > > Select Case Temp > Case 1 : > Rows = Tdata1 > Cols = &H01 > Case 2 : > Rows = Tdata2 > Cols = &H02 > Case 3 : > Rows = Tdata3 > Cols = &H04 > Case 4 : > Rows = Tdata4 > Cols = &H08 > Case 5 : > Rows = Tdata5 > Cols = &H10 > Case 6 : > Rows = Tdata6 > Cols = &H20 > Case 7 : > Rows = Tdata7 > Cols = &H40 > Case 8 : > Rows = Tdata8 > Cols = &H80 > Temp = 0 > End Select > Return Cols gibt ja nur Daten an PortD aus (Cols alias PortD). Ändere mal die Timer0 ISR Case 8 : Rows=Tdata8 PortA.0=&H01 Temp=0 End select Da in Cols bei &H80 ja nur das 7. Bit gesetzt ist, weist du das jetzt dem Pin PA.0 zu. "Versuch macht kluch" ! deka65
Dann kommt ein storebit error. Irgendwie scheint die Verknüpfung zwischen a.0 und den Columns noch zu fehlen. Kann man das alias der Columns noch irgendwie ausweiten?
Hallo,
Sorry :((
Pin A.0 kann ja nur ein Bit sein. Also PortA.0=1
Da aber beim nächsten Interrupt der Pin wieder 0 sein
muß, ist es besser eine If - Then Anweisung zu machen.
Beisp.
Temp=Temp + 1
if Temp < 8 Then
portA.0=0
endif
Case = 1
.
.
.
case = 8
"Versuch macht kluch " !
deka65
Detlef Kahrmann schrieb: > Temp=Temp + 1 > if Temp < 8 Then > portA.0=0 > endif > > Case = 1 > . > . > . > case = 8 Warum so kompliziert? Im Case 8 setzt man PA0 und in Case 1 wieder zurück.
Hallo, MWS schrieb: > Warum so kompliziert? Im Case 8 setzt man PA0 und in Case 1 wieder > zurück. und warum fällt dir das erst jetzt ein ? das hättest du auch 4 Beiträge vorher schreiben können. hast aber Recht ,das ist dann finetuning. deka65
Jo, klappt beides. Beides hat leider auch geringfüfige Verzerrungen bei Laufschriften zur Folge. Liegt das an der unterschiedl. Beschaffenheit der Ausgänge?
Detlef Kahrmann schrieb: > und warum fällt dir das erst jetzt ein ? > das hättest du auch 4 Beiträge vorher schreiben können. Das liegt daran, dass ich nicht wie Schnappi hier sitze, um neue Threads umgehend zu beantworten. Ich würd's auch nicht als Feintuning bezeichnen, in diesem Fall einfach als logische Konsequenz, um nicht überflüssigen Code zu erzeugen.
Fetti schrieb: > Jo, klappt beides. Beides hat leider auch geringfüfige > Verzerrungen bei > Laufschriften zur Folge. Liegt das an der unterschiedl. Beschaffenheit > der Ausgänge? Du musst in Case 8 die Cols auf 0 setzen, das ist Dir schon klar?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.