|
實(shí)現(xiàn)的方法很幾種 不需要精準(zhǔn)的話做個(gè)簡(jiǎn)易的延時(shí)函數(shù)就可以了,需要精準(zhǔn)的時(shí)間 就用定時(shí)器做一個(gè)時(shí)間出來(lái)。
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
_nop_();
_nop_();
i = 22;
j = 3;
k = 227;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
這段代碼就可以延時(shí)500ms,在11.0592M的頻率下
邏輯的話,設(shè)置1個(gè)標(biāo)志位
檢測(cè)到有高電平而且標(biāo)志位沒有置位,7腳輸出,將標(biāo)志位置位,然后延時(shí)500ms,再停止輸出
因?yàn)橛袠?biāo)志位,所以只會(huì)導(dǎo)通一次
建議用定時(shí)器做,這樣你的單片機(jī)就還可以做其他的事情。
第二種邏輯 不使用標(biāo)志位
檢測(cè)到有高電平,7腳輸出,,然后延時(shí)500ms,再停止輸出,接一個(gè)死循環(huán)while(1);
因?yàn)槭莻(gè)死循環(huán),所以整個(gè)代碼只會(huì)執(zhí)行一次,這樣的方式 你這個(gè)電路可以使用,你是直接斷掉單片機(jī)的電了,每次開門相當(dāng)以重啟單片機(jī),單片機(jī)啟動(dòng)后只能執(zhí)行一次 |
|