- 打卡等级:偶尔看看I
- 打卡总天数:10
- 最近打卡:2025-08-04 11:06:19
金牌会员
- 积分
- 1095
|
发表于 2025-8-3 21:11:48
|
显示全部楼层
volatile uint8_t aIn[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
uint8_t *ptr8;
uint16_t *ptr16;
uint32_t *ptr32;
//16bit
P42 = 0;
ptr16[7] <<= 1;
if (ptr8[13] & 0x80)
{
ptr16[7] |= 0x1;
}
else
{
ptr16[7] &= 0xfffe;
}
ptr16[6] <<= 1;
if (ptr8[11] & 0x80)
{
ptr16[6] |= 0x1;
}
else
{
ptr16[6] &= 0xfffe;
}
ptr16[5] <<= 1;
if (ptr8[9] & 0x80)
{
ptr16[5] |= 0x1;
}
else
{
ptr16[5] &= 0xfffe;
}
ptr16[4] <<= 1;
if (ptr8[7] & 0x80)
{
ptr16[4] |= 0x1;
}
else
{
ptr16[4] &= 0xfffe;
}
ptr16[3] <<= 1;
if (ptr8[5] & 0x80)
{
ptr16[3] |= 0x1;
}
else
{
ptr16[3] &= 0xfffe;
}
ptr16[2] <<= 1;
if (ptr8[3] & 0x80)
{
ptr16[2] |= 0x1;
}
else
{
ptr16[2] &= 0xfffe;
}
ptr16[1] <<= 1;
if (ptr8[1] & 0x80)
{
ptr16[1] |= 0x1;
}
else
{
ptr16[1] &= 0xfffe;
}
ptr16[0] <<= 1;
P42 = 1;
//32bit
P42 = 0;
ptr32[3] <<= 1;
if (ptr8[11] & 0x80)
{
ptr32[3] |= 0x1;
}
else
{
ptr32[3] &= 0xfffffffe;
}
ptr32[2] <<= 1;
if (ptr8[7] & 0x80)
{
ptr32[2] |= 0x1;
}
else
{
ptr32[2] &= 0xfffffffe;
}
ptr32[1] <<= 1;
if (ptr8[3] & 0x80)
{
ptr32[1] |= 0x1;
}
else
{
ptr32[1] &= 0xfffe;
}
ptr32[0] <<= 1;
P42 = 1;
我用上面的程序来测试移位速度,通过分析仪观察P42信号,发现32bit的速度比较快,执行时间约为1.6us@40M,高手帮忙看看怎么编程可以更快些。
|
|