INTERNER RAM ( 00 - FF )
00 - 2F Register
Direkt Adr. ( 30 - 7F )
30 SerPL
31 SerPH
32 SerCNT
33 PeepCNT
50 - 7F Stack
Indirekt Adr. ( 7F - FF )
EXT. RAM ( 0000 - 7FFF ) Datensegment
0000 Age0 Alter seit Power ON ( 4 Byte )
0001 Age1
0002 Age2
0003 Age3
INTERRUPTS Codesegment
0003 Ext Int 0
000B Timer 0
0013 Ext Int 1
001B Timer 1
0023 serielle Schn.
002B Timer 2
0043 AD Wandler
004B Ext Int 2
0053 Ext Int 3
005B Ext Int 4
0063 Ext Int 5
006B Ext Int 6
PINS
P4.0 Motor Rechte Seite +
P4.1 Motor Rechte Seite -
P4.2 Motor Linke Seite +
P4.3 Motor Linke Seite -
P4.4 Peep
P5 Schalter
Hauptprogramm :
- Hundeknochen
- Schalter auslesen -> Motoren anhalten bei Kollision
-
Timer INT 0 auf 25 ms (50 ms bei 6MHz):
- Register Bank 2
- Age um 1 erhoehen
- wenn PeepCNT > 0 : PeepCNT-1 Ton an (P4.4)
BEFEHLE VOM HOST via RS232 (hex)
05 AHEAD
0A BACK
06 LEFT
09 RIGHT
0F STOP
10 Age0 Senden
42 ASCII B ; "H" senden
43 ASCII C ; AHEAD
44 ASCII D ; Motor Stop , 0.025 Sek Pepp (0.05 bei 6MHz)
49 ASCII I ; 0.8 Sek Peep (1.6 bei 6MHz)
4A ASCII J ; Schalter senden
Ser. INT :
Register Bank 1
Zeichen mit Reg. SBUF uebergeben
Nur 1 Zeichen Buffer
BOOT Vorgang :
- FLags loeschen
- PeepCNT auf 0 , Peep aus
- Ext RAM loeschen
- P5 auf FF
- RS232 auf 9600,n,8,1
- A senden
- Timer 0 auf 25ms (50ms bei 6MHz)