下面有两段代码和反汇编结果对比: UINT8Color
[] = {0x0, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x10};
// WS2812B发送1字节数据
void WS_SendByte(UINT8 buffer)
{
UINT8 i; // 代码段一
//sta
tic UINT8 i; // 代码段二
for(i=8;i;--i)
{
if (buffer & 0x80)
{
LED = 1;
++SAFE_MOD;
++SAFE_MOD;
++SAFE_MOD;
}
否则LED = 1;
++SAFE_MOD;
++SAFE_MOD;
LED = 0;
MOD <<= 1;// 没有高空( }空
} { UINT8} SA_MOD = 0x55;// 0 安全解锁模式 SAFE_MOD = 0xAA; 时钟_CFG = 0x86; // 系统时钟分频器4分频=24MHz while (1) {
mDelayuS(1000); // WS_S 观察信号
= 0 观察信号 for; i++i 字节(颜色);
}
}
代码段一反汇编:
注:两段代码唯一的一个关键字关键字
实际使用检测_LED代码段,9次WSSendByte()调用循环,比代码段测长5us。
这个结果的对比比较显示的时间,并没有很短的发现我的查询结果,并没有发现DJNZ会比JNZ明显的多幅相似的时间。
所以希望WCH官方能提出这个疑问。
![](https://www.wch.cn/assets/js/UEditor/dialogs/attachment/fileTypeImages/icon_pdf.gif)
CH55X指令周期.PDF