|
實現(xiàn)的方法很幾種 不需要精準(zhǔn)的話做個簡易的延時函數(shù)就可以了,需要精準(zhǔn)的時間 就用定時器做一個時間出來。
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);
}
這段代碼就可以延時500ms,在11.0592M的頻率下
邏輯的話,設(shè)置1個標(biāo)志位
檢測到有高電平而且標(biāo)志位沒有置位,7腳輸出,將標(biāo)志位置位,然后延時500ms,再停止輸出
因為有標(biāo)志位,所以只會導(dǎo)通一次
建議用定時器做,這樣你的單片機就還可以做其他的事情。
第二種邏輯 不使用標(biāo)志位
檢測到有高電平,7腳輸出,,然后延時500ms,再停止輸出,接一個死循環(huán)while(1);
因為是個死循環(huán),所以整個代碼只會執(zhí)行一次,這樣的方式 你這個電路可以使用,你是直接斷掉單片機的電了,每次開門相當(dāng)以重啟單片機,單片機啟動后只能執(zhí)行一次 |
|