| 
				打卡等级:以坛为家I打卡总天数:216最近打卡:2025-10-31 11:24:48 超级版主 
 
	积分14622 
 | 
 
 发表于 2024-1-8 10:06:06
|
显示全部楼层 
| 有的,最简单的就是直接IO输出,STC8系列这种1T单片机,都要加延时才行。下面是24MHz主频的程序,超简单:
 void        Send_1us(void)
 {
 NOP(16);        // 6+16T  @24MHz
 }
 
 sbit        DIN = P0^0;
 void        Send_byte(u8 color)        // 发送一个字节
 {
 u8        i;
 i = 8;
 do
 {
 EA = 0;        //发送时禁止中断
 if((color & 0x80) != 0)                //数据1
 {
 DIN = 1;
 Send_1us();
 DIN = 0;
 EA = 1;                //发送完一个位数据后允许中断, 但任何中断处理时间要小于RES的50us.
 NOP(6);                        // 6T @24MHz,
 }
 else                //数据0
 {
 DIN = 1;
 NOP(6);                        // 7T @24MHz,
 DIN = 0;
 EA = 1;                //发送完一个位数据后允许中断, 但任何中断处理时间要小于RES的50us.
 Send_1us();
 }
 color <<= 1;
 }
 while(--i != 0);
 }
 
 void        Send_GRB(u8 g, u8 r, u8 b)
 {
 Send_byte(g);
 Send_byte(r);
 Send_byte(b);
 }
 | 
 |