最近在自學STC89C52單片機,也看了許多的老師的講解,有些問題沒有弄明白,向大家求教一下。
外部中斷,我明白有兩種觸發方式,一種電平觸發,一種下降沿觸發,也看了單片機的原理圖。
我理解的外部中斷,電平觸發就是一個按鍵或是什么東西,在單片機引腳上輸入了一個電平,這個電平一直存在使其一直保持中斷,松開按鍵就外部中斷停止了,
下沿觸發像是在引腳上輸入一個電平的信號,就像一個波形一樣,觸發不需要保持住,單片機檢測到這個波形了就觸發外部中斷。
就一點不明白,外部中斷一定要接在INT0,INT1引腳上才可以嗎?別的端口不可以嗎?那如果需要用傳感器控制的外部中斷多幾個,好像局限性很大
我在想,
比如用P2.0引腳
讓單片機一直掃描P2.0引腳的狀態,有電平變化了就停止程序,沒變化繼續執行程序。這樣好像也和INT0,INT1這些引腳功能一樣!
不知道我說的對不對,剛剛接觸單片機,以前的知識早忘完了。
還有定時器,感覺怎么這么復雜,可以一會語句循環,一會定時器控制,都不知道到底該用哪種了。
到現在定時器都沒弄懂。
程序方面,看了許多的例程,里面的代碼,最后感覺有很多的相似,就好像有固定的框框,寫程序的時候只需要朝里面套自己的東西一樣。
但還是許多代碼看不明白,有的頭文件我抄上來,編譯直接出錯,把它刪掉就行了,單片機也照樣的執行,搞不明白是為什么。
最后希望各位大佬幫個忙,這兩天在做個小車,程序老是寫不好。不是這里出錯就是那里出錯。希望有大佬幫幫忙,幫我寫一下,這樣我能根據我自己的情況,明白的更快一點。
我自己寫的哪個錯漏百出的程序就不貼上來給大家獻丑了
下邊是我定義的一些引腳,如果有不對的請大佬們幫忙指出來,謝謝
我按照我想要的程序的流程寫出來,請大佬們幫忙填充一下,如果可能請釋義一下,越詳細越好,以給我們這些小白一些啟示,謝謝。
單片機源程序如下:
- #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
- #define uchar unsigned char //這兩句的具體意思還沒有搞懂,但知道是有關函數的
- #define uint unsigned int
- sbit YB = P2^5; // 定義遙控器 B 鍵的引腳,B鍵為-正啟動-按鍵,輸入高電平
- sbit YC = P2^6; // 定義遙控器 C 鍵的引腳, C鍵為-倒啟動-按鍵,輸入高電平
- sbit YD = P3^2; // 定義遙控器 D 鍵的引腳, D鍵為-緊急停止, 輸入高電平
- // 遙控器為自鎖模式,按下按鍵之后,遙控器接收板持續輸出高電平
- // 再次按下遙控器相應按鍵,停止輸出高電平
-
- //這個遙控器接收板只能輸出高電平, //如果這幾個引腳的位置不行那么應該用哪幾個引腳?
- //或者有什么辦法能夠轉換一下這個電平信號,把它從高轉到低
- sbit JDQ1 = P1^1; // 定義繼電器 1號 的引腳。 | 低電平 觸發
- sbit JDQ2 = P1^2; // 定義繼電器 2號 的引腳。 |
- sbit JDQ3 = P1^3; // 定義繼電器 3號 的引腳。
- sbit JDQ4 = P1^4 // 定義繼電器 4號 的引腳。
- sbit JDQ5 = P1^5; // 定義繼電器 5號 的引腳。
- sbit JDQ6 = P1^6; // 定義繼電器 6號 的引腳。
- sbit JDQ7 = P2^0; // 定義繼電器 7號 的引腳。
- sbit JDQ8 = P2^1; // 定義繼電器 8號 的引腳。
- sbit NPN1 = P2^2; //定義NPN開關 1號 的信號輸入引腳。輸入低電平有效
- sbit NPN2 = P2^3; //定義NPN開關 2號 的信號輸入引腳。輸入低電平有效
- //NPN開關為 常開,
- //NPN接近傳感器---無障礙物--無檢測信號時輸出高電平,
- //NPN接近傳感器---有障礙物--有檢測信號時輸出低電平。
- sbit HW = P2^4; //定義紅外避障開關的信號輸入引腳。
- //紅外避障開關--無障礙物---無檢測信號時輸出高電平,
- //紅外避障開關--有障礙物---有檢測信號時輸出低電平。
- // 首先我想應該是將各個引腳的初始狀態置高或低吧?
- // 這樣以便引腳輸出相應的狀態
- // 程序流程 正序
- // 1 P2^5 接收 高電平 信號輸入,開始進入程序
- // 2 P1^1 , P1^4 輸出低電平信號--小車跑4秒 --停止,
- // 停頓2秒
- // 3 P1^2 , P1^3 輸出低電平信號 --小車跑18秒---停止,
- // 停頓2秒
- // 4 P1^2 , P1^4 , P1^5 輸出低電平信號--小車跑2秒--停止,
- // 停頓2秒
- // 5 P1^2 , P1^3 輸出低電平信號---小車跑10秒---停止,
- // 停頓2秒
- // 6 P2^0 輸出低電平信號-------P2^2 NPN輸入低電平--停止。
- // 停頓2秒
- // 7 P1^2 , P1^3 輸出低電平信號-----P2^4紅外避障輸入低電平,停止。
- // 完
-
- //這里邊的P3^2起到中斷的作用,按下遙控器D,P3^2引腳接收高電平
- //程序暫停,因為接收板為自鎖,所以會持續的輸出高電平,直到再次按下, //P3^2不再輸入高電平,程序從暫停之前那一步繼續執行下去.
-
- // 程序流程 倒序 按下C鍵 P2^6 倒序
- //因為是程序固定的所以倒序也就是把程序倒個方向,不知道這個算不算兩個程序,
復制代碼
這個小車的效果,就是按下遙控器B ,小車會沿著固定的一條框框道路行走,然后小車上邊的一個小電機會做一些動作。按下遙控器C小車就會倒著走回來,這個對于各位大佬應該非常容易,請幫幫我,最好能給我釋義一下,你們是怎么定的時間,時間是怎么樣計算出來的 , 怎么外部中斷的,特別是這兩個,非常重要,希望能夠在大佬們的幫助下弄懂這兩個的用法
萬分感謝,
從上個月才開始自己學習單片機,因為時間的關系,之前學習過的一些知識都已經忘記完了,但現在慢慢的看一些視頻,各位老師的講解。各位大佬的發帖,回復,給了我很多的啟發和幫助。也開始覺的單片機挺有趣,這幾天老是想著程序該怎么設計,需要哪些東西,等等,感覺有點入迷了,不知道快入門了吧。
非常感謝有51黑這樣一個大平臺,讓大家能夠互相幫助著在自己喜歡或者賴以生活的道路上走著。
愿大家永遠不忘初心,繼續前行。  
設置有回復獎勵喲,希望各位大佬們贈人玫瑰,手有余香。
附上我用的89C52RC單片機單片機的原理圖
2222222.PNG (59.13 KB, 下載次數: 52)
下載附件
2019-4-16 17:58 上傳
4444444.PNG (48.94 KB, 下載次數: 55)
下載附件
2019-4-16 17:58 上傳
11111111.PNG (94 KB, 下載次數: 56)
下載附件
2019-4-16 17:58 上傳
333333.PNG (40.6 KB, 下載次數: 59)
下載附件
2019-4-16 17:58 上傳
|