We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
elegante inversion.
/*------------------------------------------------------------------------------ INVERSION DE BYTE 8 BIT, LSB -> MSB ------------------------------------------------------------------------------*/ unsigned char mr; unsigned char invertir_byte (mr) { mr = (mr & 0x0F) << 4 | (mr & 0xF0) >> 4; mr = (mr & 0x33) << 2 | (mr & 0xCC) >> 2; mr = (mr & 0x55) << 1 | (mr & 0xAA) >> 1; return (mr); }
#include <reg52.h> unsigned char bdata src; sbit S0=src^0; sbit S1=src^1; sbit S2=src^2; sbit S3=src^3; sbit S4=src^4; sbit S5=src^5; sbit S6=src^6; sbit S7=src^7; unsigned char bdata dst; sbit D0=dst^0; sbit D1=dst^1; sbit D2=dst^2; sbit D3=dst^3; sbit D4=dst^4; sbit D5=dst^5; sbit D6=dst^6; sbit D7=dst^7; unsigned char invertir_byte (unsigned char mr) { src=mr; D0=S7; D1=S6; D2=S5; D3=S4; D4=S3; D5=S2; D6=S1; D7=S0; return(dst); } void main() { while(1) { P1=invertir_byte(0x33); } }
//cost 35 machine cycle //Program Size: data=11.0 xdata=0 code=61