Something else popped into my head. The time between the start of each byte is exactly 1,250uS. The time it takes to transmit the total packet is 20mS, which means there are 16 digits. Can I do all of this manually? To be more specific, can I use GOSUB's for each number and just specify exactly how long I need the pulses to be? The data is predictable and I'm not seeing anything that doesn't look strange. There are only numbers transmitted and they are 0-9. My thought is something like this:
Code:
MAINLOOP:
'GATHER NUMBERS TO BE TRANSMITTED
SELECT CASE D0
CASE 0
GOSUB ZERO
CASE 1
GOSUB ONE
END SELECT
SELECT CASE D1
CASE 0
GOSUB ZERO
CASE 1
GOSUB ONE
END SELECT
SELECT CASE D2
CASE 0
GOSUB ZERO
CASE 1
GOSUB ONE
END SELECT
......
SELECT CASE D15
CASE 0
GOSUB ZERO
CASE 1
GOSUB ONE
END SELECT
PAUSE 5
GOTO MAINLOOP
.....
ZERO:
DO3=1
PAUSEUS 550
DO3=0
PAUSEUS 75
DO3=1
PAUSEUS 50
DO3=0
PAUSEUS 575
RETURN
ONE:
DO3=1
PAUSEUS 50
DO3=0
PAUSEUS 75
DO3=1
PAUSEUS 175
DO3=0
PAUSEUS 300
DO3=1
PAUSEUS 50
DO3=0
PAUSEUS 600
RETURN
TWO:
DO3=1
PAUSEUS 250
DO3=0
PAUSEUS 75
DO3=1
PAUSEUS 150
DO3=0
PAUSEUS 75
DO3=1
PAUSEUS 250
DO3=0
PAUSEUS 450
RETURN
THREE:
DO3=1
PAUSEUS 400
DO3=0
PAUSEUS 150
DO3=1
PAUSEUS 250
DO3=0
PAUSEUS 450
RETURN
FOUR:
DO3=1
PAUSEUS 75
DO3=0
PAUSEUS 75
DO3=1
PAUSEUS 150
DO3=0
PAUSEUS 150
DO3=1
PAUSEUS 250
DO3=0
PAUSEUS 550
RETURN
FIVE:
DO3=1
PAUSEUS 150
DO3=0
PAUSEUS 75
DO3=1
PAUSEUS 150
DO3=0
PAUSEUS 75
DO3=1
PAUSEUS 325
DO3=0
PAUSEUS 475
RETURN
SIX:
DO3=1
PAUSEUS 150
DO3=0
PAUSEUS 75
DO3=1
PAUSEUS 475
DO3=0
PAUSEUS 550
RETURN
SEVEN:
DO3=1
PAUSEUS 325
DO3=0
PAUSEUS 300
DO3=1
PAUSEUS 150
DO3=0
PAUSEUS 475
RETURN
EIGHT:
DO3=1
PAUSEUS 800
DO3=0
PAUSEUS 450
RETURN
NINE:
DO3=1
PAUSEUS 325
DO3=0
PAUSEUS 150
DO3=1
PAUSEUS 325
DO3=0
PAUSEUS 450
RETURN
Bookmarks