| 
 
| 先列出程序吧: 
 void
 void
 DoRS232 (void)
 {
 uint8_t i;
 
 for (i = 0; i < 10; ++i)
 {
 // '0'的ASCII为0x30
 uart_putchar ('0' + i);
 }
 
 }
 
 DoThing (void)
 {
 // SCL是22脚、SDA是23脚
 DoI2C();
 
 // RXD是14脚、TXD是15脚
 DoRS232();
 
 // MEGA16: SS是5脚、MOSI是6脚、MISO是7脚、SCK是8脚
 DoSPI();
 
 
 wdt_reset();
 
 }
 
 我本来以为‘0’到‘9’的字符都发送玩才会开始的做DoSPI(),但是,我用逻辑分析仪采集的数据来看,在开始发送‘8’的时候,就开始执行DoSPI函数了。不同的波特率,结果是一样的。
 
 如果说发送‘9’的时候,开始执行DoSPI还好理解:将‘9’放入发送寄存器后,CPU就不管它了,执行后续代码。问题是怎么会提早2个字符啊,难道除了发送寄存器外,还有一个缓冲的发送寄存器?
 
 哪位大侠可以为我答疑解惑。
 | 
 |