微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 序效率大比拼,位翻转程序

序效率大比拼,位翻转程序

时间:10-24 来源:互联网 点击:

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

第七个程序:来自ourdev论坛的网友

#include reg52.h>
unsigned char code tab[16]={0x00,0x08,0x04,0x0c,0x02,0x0a,0x06,0x0e,
0x01,0x09,0x05,0x0d,0x03,0x0b,0x07,0x0f};
unsigned char invertir_byte (unsigned char dat)
{
dat = tab[(dat 0xf0)>>4] | (tab[dat 0x0f]4);
return dat;
}

void main()
{
while(1)
{
P1=invertir_byte(0x33);
}
}

//cost 26 machine cycle
//Program Size: data=9.0 xdata=0 code=63

完成位交换需要 26 个时钟周期

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

第八个程序:来自ourdev网友

#includeAT89X51.H>
unsigned char byte_bit_swap(unsigned char a)
{
a = ((a 0x0F) 4) | ((a 0xF0) >> 4);
a = ((a 2) 0xcc) | ((a>> 2) 0x33);
a = ((a 1) 0xaa) | ((a>> 1) 0x55);
return(a);
}
void main(void)
{
while(1)
{
P1=byte_bit_swap(0x33);
}
}

Program Size: data=9.0 xdata=0 code=66
完成位交换需要 37 个时钟周期

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top