已经参考了的,但TA与TB还是存在一些关键差异的:即定时器B无输入信号锁存功能(无SCCI);是否可通过CCI位来判断输入电平;
如下附上中断接收发送代码,劳烦各位帮忙看看,非常感谢啊:
#if __VER__ < 200
interrupt[TIMERB0_VECTOR] void Timer_B (void)
#else
#pragma vector=TIMERB1_VECTOR
__interrupt void TIMERB1_ISR (void)
#endif
{
// RX(接收字节)
if ( TBCCTL2 & CCIFG ) // RX on CCI2A?(如果CCI2A是捕获输入引脚)
{
TBCCR2 += Bitime; // Add Offset to CCR2(下一定时时间为1位时间)
if( TBCCTL2 & CAP ) // Capture mode = start bit edge(如果是在捕获模式,则是在等待起始位)
{
TBCCTL2 &= ~ CAP; // Switch from capture to compare mode(得到起始位后改为比较模式)
TBCCR2 += Bitime_5; //定时位置改到位的中间位置(加半个位的时间)
}
else
{
RX_DATA = RX_DATA >> 1; //先收到的是低位
if (TBCCTL2 & CCI) // Get bit waiting in receive latch,TIMREB 无SSCI锁存位
RX_DATA |= 0x80; //CCI中锁存的是比较相等时的输入引脚上的信号
BitCnt --; // All bits RXed? //位计数减1
if ( BitCnt == 0) //接收完一个字节?
//>>>>>>>>>> Decode of Received Byte Here