關于單片機I/O口輸出的疑問。P0口外接1K上拉電阻,在弄DS18BB20溫度測量讀取資料的時候
用示波器發現I/O輸出0后的延時程序中,并沒有保持0。
然后寫了程式如下:
#include <STC12C5A60S2.h>
sbit DQ = P0^3;
void delay1s(void) //誤差 -0.000000000227us
{
unsigned char a,b,c;
for(c=13;c>0;c--)
for(b=247;b>0;b--)
for(a=142;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
main()
{
DQ=0;
delay1s();
DQ=1;
delay1s();
}
用示波器測量DQ波形,發現在輸出0后的延時程序中,并沒有保持0,只是拉低瞬間為0。
請問我是不是上拉電阻值不正確。
uj5u.com熱心網友回復:
while(1) { xxxxx }uj5u.com熱心網友回復:
void delay1s(void) //誤差 -0.000000000227us
{
unsigned char a,b,c;
for(c=13;c>0;c--)
for(b=247;b>0;b--)
for(a=142;a>0;a--)/*;*/
_nop_(); //if Keil,require use intrins.h
}
uj5u.com熱心網友回復:
1K上拉電阻可以,不過主函式沒寫運行回圈的話就得靠看門狗重新啟動了。是用模擬軟體示波器看還是儀器看的?
通常先用軟體觀察波形也很方便。
如這樣除錯觀察波形。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/268573.html
標籤:單片機/工控
上一篇:stm32軟中斷開啟失敗
