目的:方便程序的調試,提供效率,減少工作累,可以不在線調試編程時顯示實時數據,特別產品不帶顯示的或者MCU是OPT的,有很大的幫助。
過程:將要看的數據發送出來,另一個板(一個帶有顯示的就OK了,顯示就看個人的了,我之前用12864顯示,後面壞了,就用4位數碼管了)接收顯示出來。
資源:通訊口只要2個IO(接收一個,發送一個),定時器2個(接收一個,發送一個)。
以下是發送模塊:
//carry_pin 為發送IO,設置為輸出
void send_ird(void) { static uint8 tx_ram2=0,tx_ram1=0,tx_ram0=0,us100_timer=0,bits_count=0; ++us100_timer; if(send_enable_flag)//100ms更新一次數據 { if(!f_endcode)//=0********=1發完數據 { if(bits_count<1) { if(us100_timer<30) { carry_pin=0; } else { if(us100_timer>=45) { us100_timer=0; ++bits_count; carry_pin=0; } else { carry_pin=1; } } } else { if(us100_timer<3)//前導 { carry_pin=0; } else { if(tx_ram0&0x01) { if(us100_timer<12)//位為1 { carry_pin=1; } else B_nextbit=1; //{goto judge_bit;} } else { if(us100_timer<6)//位為0 { carry_pin=1; } else B_nextbit=1; //{goto judge_bit;} } } } } else//發完數據 { if(us100_timer>=3) { send_enable_flag=0; f_endcode=0; carry_pin=1; } else { carry_pin=0; } } } else//准備發送數據 { tx_ram1=Ad_val1/256; tx_ram2=Ad_val1%256; tx_ram0=Ad_val1%256; us100_timer=0; bits_count=0; carry_pin=1; } if(B_nextbit) { B_nextbit=0; us100_timer=0; temp=tx_ram2&0x01; tx_ram2=tx_ram2>>1; temp1=tx_ram1&0x01; tx_ram1=tx_ram1>>1; tx_ram0=tx_ram0>>1; temp=temp<<7; tx_ram1|=temp; temp1=temp1<<7; tx_ram0|=temp1; ++bits_count; if(bits_count>25) { f_endcode=1; } carry_pin=0; } }