sending serial data, bit by bit, to a specific pin in pasm
Yes, I know this is a beginner question, but my brain locked up
in pasm, I have a long with various bits
test_bit_mask long %10101010_11110001_11110000_11110001
and I want to send this to a specific pin on the prop1 (in pasm), which happens to be what I am using, one bit at a time, shifting right to left
so the output to the pin would go
1,0,1,0,1,0,10,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,1
say for example my pin that I want to send the data to is pin 15,
:Pin_looper xor outa, pin_15 'toggle pin 15
djnz pin_length, #:Pin_looper 'return to caller pin_length is set to 32, the xor simply toggles the pin
but if I want to send a random set of bits to the pin, I don't know
it would be something like: (in c ish)
array_of_bits long {1,0,1,0,1,0,10,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,1}
for (int i= 0;i<32;i++)
pin15 = array_of_bits[i]
I'm thinking it has something to do with
test pinMask, ina wc
rcl readbit,#1
any help would be appreciated, if this has already been done a million times, a link would be fine.
thank you
Jeff
Comments
I may have explained this wrong, the output of the above bitmask (1,0,1,0,1,0,1,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,1)
would be on the pin as
High,low,high,low,high,low,high,low,high,high,high,high,low,low,low,low,high,high,high,high,low,low,low,high
currently it looks like this, (since it is xor'ed)
Jeff
This can be done with the help of the Carry flag. The shift instructions can shift the bits into the Carry, and there is the MUXC instruction to set specific bits in a register to the state of the Carry. If this register is OUTA, you set port bits.
Andy
works nicely, thanks
Here is the data:
test_bit_mask long %10000001_01111110_11110001_11001100