我用STC8H8K64U-TSSOP20,内部IRC 主时钟 24000000L。
用楼主的void WS2812_bit(bit data_bit),
时序好像不太准确,因为测试的结果与楼主的不一样。
不知道为什么,我有空再用逻辑分析仪测一下脉冲宽度。
- //====================================================================
- //发送 0,1码时序,此时序由逻辑分析仪拉波形得出,时间上准确无误
- //复位 300ns以上
- //1码 高电平750ns-1.6us 低电平220ns-420ns (0.85us,0.4us)
- //0码 高电平220ns-420ns 低电平750ns-1.6us (0.4us,0.85us)
- //====================================================================
- void WS2812_bit(bit data_bit)
- {
- if(data_bit)//0.85,0.4us
- {
- ws2812b_IO=1;
- _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
- _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
- ws2812b_IO=0;
- }
- else//0.4,0.85
- {
- ws2812b_IO=1;
- _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
- ws2812b_IO=0;
- _nop_();_nop_();_nop_();_nop_();
- }
- }
复制代码
|