|
// 初始化SPI硬件
U0CTL = SWRST; // **Put state machine in reset**
ME1 |= USPIE0; // 通过 MEx SFRs (USPIEx) 启用 USART 模块
U0CTL = CHAR + SYNC + MM + SWRST; // 8-bit SPI master
U0TCTL = CKPH + SSEL1 + STC; // 相位,时钟,3-pin
U0BR1 = 0; // 设置波特率分频系数,U0BR1:U0BR0>=2
U0BR0 = 2;
U0MCTL = 0; // SPI 模式应被设置到 00h
U0CTL &= ~SWRST; // **Initialize USCI state machine**
//刷新数据...
U0TXBUF = DIG_MASK[DigitronIndexCur]; // 发送新位
while( !(IFG1 & UTXIFG0)); //等待发送缓存空...
U0TXBUF = temp; // 发送新段
while( !(TXEPT & U0TCTL)); //这里必须是等待发送器发送完毕,才能够更新RCLK,否则数据乱码....
RCLK_SET();// 更新显示
RCLK_RESET();
采用硬件发送595数据,发送两次,只需要大约65个CLK,
如果再优化一下的话,应该50个CLK就能够发送完毕....
而软件模拟的话,需要接近600个CLK,
CPU占用率能够降低到10% |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|