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