Oops, MSBit version should be:=20 portbit =3D (output_byte & 0x80) !=3D 0; (I had the parentheses wrong) ~ Bob Ammerman RAm Systems > -----Original Message----- > From: piclist-bounces@mit.edu [mailto:piclist-bounces@mit.edu] On Behalf > Of Bob Ammerman > Sent: Friday, August 28, 2015 8:18 AM > To: 'Microcontroller discussion list - Public.' > Subject: RE: [PIC] XC8 Bit Technique? >=20 > For each bit you are going to output: >=20 > If you want LSBit first: >=20 > portbit =3D output_byte & 0x01; > output_byte >>=3D 1; >=20 > For MSBit first: >=20 > portbit =3D (output_byte) & 0x80 !=3D 0; > output_byte <<=3D 1; >=20 > ~ Bob Ammerman > RAm Systems >=20 > > -----Original Message----- > > From: piclist-bounces@mit.edu [mailto:piclist-bounces@mit.edu] On > > Behalf Of Josh Koffman > > Sent: Thursday, August 27, 2015 10:10 AM > > To: Microcontroller discussion list - Public. > > Subject: [PIC] XC8 Bit Technique? > > > > Hi all, > > > > Amongst all the other things on my plate right now, I'd like to make a > small > > library to do Bit Angle Modulation on some of my projects. I made one > years > > ago in assembly, but now I'd like to do it in XC8. > > > > For reference, there are some great posts on BAM on the PicBasic > > forums > > here: > > > > http://www.picbasic.co.uk/forum/showthread.php?p=3D45597 > > http://www.picbasic.co.uk/forum/showthread.php?t=3D10564 > > > > Because the PIC will be doing many things, I am considering using a > > high priority interrupt for the BAM, but keeping my high priority ISR > > as small > as > > possible (which is probably a good idea regardless). To accomplish > > this, I > want > > to create the 8 "slices" that I will output in my main line, so that > > all > the BAM > > ISR has to do is take that variable and put it on the port. > > > > My question is, what would be the best way to handle this in C? When I > > did > it > > in assembly I used a rotate (rotate right if I remember correctly), > > then > read > > the carry bit. But then I was also doing it at the moment of > > outputting, > so > > there was no intermediate stored variable. > > > > My current thought is to define a typedef that lets me access the > individual > > bits, then a bunch of if/else statements that check the bit of the > > source value, and if it's a 1 set the bit of the corresponding "slice" variable. > This > > would result in a lot of if statements though, so I'm wondering if > > there's > a > > slicker way to do this. > > > > I'm trying to avoid dropping into ASM to do this for a few reasons. > > > > Any thoughts? > > > > Thanks! > > > > Josh > > -- > > A common mistake that people make when trying to design something > > completely foolproof is to underestimate the ingenuity of complete fools. > > -Douglas Adams > > -- > > http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive > > View/change your membership options at > > http://mailman.mit.edu/mailman/listinfo/piclist >=20 > -- > http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive > View/change your membership options at > http://mailman.mit.edu/mailman/listinfo/piclist --=20 http://www.piclist.com/techref/piclist PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist .