Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Assembler » Hilfe bei Ampel Kreuzung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.05.2004, 15:57 Uhr
xxyy



Hallo Leute,

und zwar wollte ich zunächst nur "ganz einfach" eine Ampelsteuerung für eine Kreuzung simmulieren (ohne Fussgängerampel).
Nur ich habe ein Problem damit das zu automatisieren.

Hier mal mein Quellcode bisher.


Code:


include Reg_51.PDF

EAL bit 0AFh
B_freq equ 305  //Die Zustandsänderung nach 2 Sec., deshalb Wert 305

cseg at 0
jmp init

org 0BH
Time_int0:
call loop
reti

init:
mov r2,#B_freq
setb IT0
setb EX0
setb EAL
setb ET0
mov TMOD,#00000001b
mov TCON,#00010000b



Loop:     MOV DPTR,#tab    
    PUSH 0E0h
    MOVC a,@A+DPTR    
    MOV P1,a              
    POP  0E0h
            
             djnz r2,back


back: cjne r2,#0,loop
        mov r2,#b_freq
         inc a
         sjmp loop
        
                          
      tab: db 00100001b, 00110010b, 00001100b
      
      
      
end    




Ich erläutere jetzt mal einfach kurz was die Zustände bedeuten sollen.
Also der erste Zustand ist ja "00100001". Die ersten drei Bits "001" sind für die eine Straße der Kreuzung und "100" für die andere.
Also bei "001" ist diese grün und die andere hat bei "100" rot.

Der Quellcode den ich hier angegeben habe, führt einfach die Zustandsänderungen nach 2 Sekunden durch. Ich hoffe dass er bis dahin richtig ist.

Nun zu meinem Problem.

Ich will das so machen, dass "00100001" so lange der Zustand ist bis z.B. am Port 3.2 ein Interrupt ausgelöst wird (also z.B. wenn P 3.2 auf 1 gesetzt wird)und dann erst diese Zustandsänderungen durchgeführt werden.

Und wenn diese durchgeführt wurden (nun hat die andere Straße rot und die andere grün), dann soll auf einen "Interrupt" am Port P 3.3 gewartet werden. Wenn das Signal am P 3.3 eintrifft, dann soll der Zustand (dieser ist nicht in der Wertetabelle abgespeichert) "010110" erfolgen und eben nach 2 Sekunden wieder das ganze Programm von neu laufen.

Denn bei "010110" bekommt die eine die nun grün hatte Rot-Gelb und die anderen Gelb. Und dann soll eben wieder das alles von neu laufen, also gewartet werden bis am P 3.2 ein Interrupt ausgelöst wird.

Ich hoffe das ist verständlich ausgedrückt.

Ich würde mich über Hilfe sehr sehr freuen!!
Danke!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.05.2004, 16:59 Uhr
Bruder Leif
dances with systems
(Operator)


Uffala... das ist 8051-Assembler, da sind meine Kenntnisse unter aller Sau. Hast Du die Doku zum 8x51? Da sollten die Interruptvektoren aufgeführt sein...
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ Assembler ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: