任何时候单片机只做一件事情,在处理内部数据的时候,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;
} |