Well the problem is the communications protocol, at the moment i can
only read in a switch value After Moving some number to the Accumulator
something like "MOV A, 07H", and masking any unused Bits. but from
there i get stucked...a code to read in all three switches and enable
them light their corresponding LEDs would be appreciated...Thanks
---
The hardware, all switches SPSTNO:
Vcc>------+-----+-----+
| | |
[10K] [10K] [10K]
S3___ | | |
+---O O--+ | |
| S2___ | | |
+---O O--------+ |
| S1___ | | |
+---O O--------------+
| | | |
GND +--+-----+-----+--+
|PRTA2 PRTA1 PRTA0|
| | TX
|PRTA5 PRTA4 PRTA3| MC68XX
+--+-----+-----+--+
| | |
. . .
. . .
. . .
. . .
. . . Vcc
. . . |
| | | +------+------+
+--+-----+-----+--+ | | |
|PRTA2 PRTA1 PRTA0| [150] [150] [150]
| | RX |A |A |A
|PRTA5 PRTA4 PRTA3| MC68XX [LED1] [LED2] [LED3]
+--+-----+-----+--+ | | |
| | | C | |
| | +-------[2200]---B NPN | |
| | E C |
| +-------------[2200]----|-----B NPN |
| | E C
+-------------------[2200]----|------|-----B NPN
| | E
| | |
+------+------+
|
GND
One example of code in Motorola (Freescale) 6800 assembler for the
transmitter:
start: lda #$f8 ;1111 1000
sta ddra ;set up the port a ddr
lda #$07 ;0000 0111
sta prta ;set up port a
loopa: jsr t100ms ;100ms timer
brclr 0,prta on1 ;branch if S1 is made
bclr 3,prta ;else clear port a bit 3 (prta3)
brclr 1,prta on2 ;branch if S2 is made
bclr 4,prta ;else clear prta4
brclr 2,prta on3 ;branch if S3 is made
bclr 5,prta ;else clear prta5
bra loopa ;loop back for another try
on1: bset 3,prta ;set prta3
bra loopa ;loop back for another try
on2: bset 4,prta ;set prta4
bra loopa ;loop back for another try
on3: bset 5,prta ;set prta5
bra loopa ;loop back for another try
t100ms: code for timer ;generate 100 millisecond delay
rts ;return
And for the receiver:
start: lda #$f8 ;1111 1000
sta ddra ;set up the port a ddr
clr prta ;set up port a
loopa: brset 0,prta on1 ;branch if prta0 is set
bclr 3,prta ;else clear prta3 to turn off LED1
brset 1,prta on2 ;branch if prta1 is set
bclr 3,prta ;else clear prta4 to turn off LED2
brset 2,prta on3 ;branch if prta2 is set
bclr 3,prta ;else clear prta5 to turn off LED2
bra loopa ;loop back for another try
on1: bset 3,prta ;set prta3 to turn on LED1
bra loopa ;loop back for another try
on2: bset 4,prta ;set prta4 to turn on LED2
bra loopa ;loop back for another try
on3: bset 5,prta ;set prta5 to turn on LED3
bra loopa ;loop back for another try
This code will only allow one LED at a time to be lit, and that LED
will correspond to:
S3 S2 S1 LED3 LED2 LED1