|
發布時間: 2020-3-10 22:09
正文摘要:大佬看看是不是代碼有問題,已經卡這快一個星期了, #include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char sbit trig=P1^0; sbit echo=P2^0; ... |
| 程序看上去沒有明顯錯誤,確定硬件也沒有問題嗎,接線也都是正確的? |
1145421628 發表于 2020-3-11 19:40 小車不走肯定是程序死在某個地方了,安照你的代碼問題應該出在ceju上面 示例代碼可能有把ECHO初始化,然后超聲波返回時對其進行改變,或者在中斷中將其變化 看不到你得硬件很難分析;你的P20腳的電平必須在ceju();時01變化 sbit trig=P1^0; sbit echo=P2^0; //觸發控制信號輸入 sbit pwm=P2^6; //回響信號輸出 你得這些接的什么腳?可能是硬件接法問題 你得分析P20腳的電平到底怎么變的 |
|
sbit echo=P2^0; //觸發控制信號輸入 void ceju(void) { while(!echo); //當echo為零時等待 TR0=1; //開啟計數 while(echo); //當echo為1計數并等待 TR0=0; time=TH0*256+TL0; TH0=0; TL0=0; s=(time*1.7)/100; //單位cm } P2^0腳的模式是怎樣的 后面沒看到echo 的變化 這里兩個while 如果echo 值沒有一直01變化 就必然會產生一個while(1)的死循環;程序就會死在這里 |
| 我寫了個小車移動的程序,里面沒有關于超聲波舵機的相關程序,只要插上超聲波trig小車就不走,拔了走,求原因 |