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