序效率大比拼,位翻转程序
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 第七个程序:来自ourdev论坛的网友 #include reg52.h> void main() //cost 26 machine cycle 完成位交换需要 26 个时钟周期 ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 第八个程序:来自ourdev网友 #includeAT89X51.H> Program Size: data=9.0 xdata=0 code=66
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;
}
{
while(1)
{
P1=invertir_byte(0x33);
}
}
//Program Size: data=9.0 xdata=0 code=63
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);
}
}
完成位交换需要 37 个时钟周期
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)