任何時候單片機只做一件事情,在處理內部數據的時候,senddata不會執行,定時器是獨立工作的物理器件,在程序把它設置好后,它自己運行,程序當中可以判斷它的定時時間到的標志,從而做相應的事情,在程序當中一般不會用while(busy)這樣的語句,這是個循環語句,一直在查busy ,如果busy是1,它一直查直到busy是0,程序才往下執行,而發送電路已經啟動了發送工作,發送需要一段時間,完成后才把busy清零,在這段時間內單片機傻傻的就空循環,是個浪費
loop:
if(!busy) //如果busy是1 ,表示數據還沒發完,就跳到下邊do 其他事情1 等,如果是0表示已經發送
{ //完了,就執行下邊的sengdata,啟動新的發送,senddata()執行完了,執行busy=1,然后
Senddata();//又可以做其他事情了
busy=1;
}
do 其他事情1
do 其他事情2
。。。
do 其他事情N
goto loop;
} |