久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2303|回復: 16
打印 上一主題 下一主題
收起左側

自學單片機遇到一些程序問題,求分析解決

[復制鏈接]
回帖獎勵 90 黑幣 回復本帖可獲得 5 黑幣獎勵! 每人限 1 次
跳轉到指定樓層
樓主
最近在自學STC89C52單片機,也看了許多的老師的講解,有些問題沒有弄明白,向大家求教一下。

外部中斷,我明白有兩種觸發方式,一種電平觸發,一種下降沿觸發,也看了單片機的原理圖。

我理解的外部中斷,電平觸發就是一個按鍵或是什么東西,在單片機引腳上輸入了一個電平,這個電平一直存在使其一直保持中斷,松開按鍵就外部中斷停止了,
下沿觸發像是在引腳上輸入一個電平的信號,就像一個波形一樣,觸發不需要保持住,單片機檢測到這個波形了就觸發外部中斷。

就一點不明白,外部中斷一定要接在INT0,INT1引腳上才可以嗎?別的端口不可以嗎?那如果需要用傳感器控制的外部中斷多幾個,好像局限性很大
我在想,
比如用P2.0引腳
讓單片機一直掃描P2.0引腳的狀態,有電平變化了就停止程序,沒變化繼續執行程序。這樣好像也和INT0,INT1這些引腳功能一樣!
不知道我說的對不對,剛剛接觸單片機,以前的知識早忘完了。

還有定時器,感覺怎么這么復雜,可以一會語句循環,一會定時器控制,都不知道到底該用哪種了。
到現在定時器都沒弄懂。

程序方面,看了許多的例程,里面的代碼,最后感覺有很多的相似,就好像有固定的框框,寫程序的時候只需要朝里面套自己的東西一樣。
但還是許多代碼看不明白,有的頭文件我抄上來,編譯直接出錯,把它刪掉就行了,單片機也照樣的執行,搞不明白是為什么。

最后希望各位大佬幫個忙,這兩天在做個小車,程序老是寫不好。不是這里出錯就是那里出錯。希望有大佬幫幫忙,幫我寫一下,這樣我能根據我自己的情況,明白的更快一點。

我自己寫的哪個錯漏百出的程序就不貼上來給大家獻丑了

下邊是我定義的一些引腳,如果有不對的請大佬們幫忙指出來,謝謝

我按照我想要的程序的流程寫出來,請大佬們幫忙填充一下,如果可能請釋義一下,越詳細越好,以給我們這些小白一些啟示,謝謝。

單片機源程序如下:
  1. #include<reg52.h>       //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
  2. #define uchar unsigned char    //這兩句的具體意思還沒有搞懂,但知道是有關函數的
  3. #define uint  unsigned int
  4. sbit YB = P2^5;        //   定義遙控器 B 鍵的引腳,B鍵為-正啟動-按鍵,輸入高電平
  5. sbit YC = P2^6;       //    定義遙控器 C 鍵的引腳, C鍵為-倒啟動-按鍵,輸入高電平
  6. sbit YD = P3^2;       //    定義遙控器 D 鍵的引腳, D鍵為-緊急停止,     輸入高電平
  7.                              //     遙控器為自鎖模式,按下按鍵之后,遙控器接收板持續輸出高電平
  8.                             //      再次按下遙控器相應按鍵,停止輸出高電平
  9.                                     
  10.              //這個遙控器接收板只能輸出高電平,                                                 //如果這幾個引腳的位置不行那么應該用哪幾個引腳?                     
  11.          //或者有什么辦法能夠轉換一下這個電平信號,把它從高轉到低

  12. sbit JDQ1 = P1^1; //  定義繼電器 1號 的引腳。   |  低電平  觸發
  13. sbit JDQ2 = P1^2;  //  定義繼電器 2號 的引腳。  |
  14. sbit JDQ3 = P1^3;  //  定義繼電器 3號 的引腳。  
  15. sbit JDQ4 = P1^4   //  定義繼電器 4號 的引腳。   
  16. sbit JDQ5 = P1^5;  //  定義繼電器 5號 的引腳。
  17. sbit JDQ6 = P1^6;  //   定義繼電器 6號 的引腳。
  18. sbit JDQ7 = P2^0;   //  定義繼電器 7號 的引腳。
  19. sbit JDQ8 = P2^1;   //  定義繼電器 8號 的引腳。
  20. sbit NPN1 = P2^2;      //定義NPN開關 1號 的信號輸入引腳。輸入低電平有效
  21. sbit NPN2 = P2^3;    //定義NPN開關 2號 的信號輸入引腳。輸入低電平有效
  22.                               //NPN開關為 常開,
  23.                               //NPN接近傳感器---無障礙物--無檢測信號時輸出高電平,
  24.                              //NPN接近傳感器---有障礙物--有檢測信號時輸出低電平。
  25. sbit HW = P2^4;          //定義紅外避障開關的信號輸入引腳。
  26.                                  //紅外避障開關--無障礙物---無檢測信號時輸出高電平,
  27.                                 //紅外避障開關--有障礙物---有檢測信號時輸出低電平。
  28.                               //      首先我想應該是將各個引腳的初始狀態置高或低吧?
  29.                              //       這樣以便引腳輸出相應的狀態
  30.                              //                            程序流程       正序
  31.                            //   1               P2^5    接收    高電平    信號輸入,開始進入程序      
  32.                          //   2                P1^1  , P1^4  輸出低電平信號--小車跑4秒 --停止,
  33.                              //                      停頓2秒
  34.                        //    3                P1^2  , P1^3  輸出低電平信號 --小車跑18秒---停止,
  35.                           //                         停頓2秒
  36.                     //     4                 P1^2  , P1^4 , P1^5 輸出低電平信號--小車跑2秒--停止,
  37.                         //                          停頓2秒
  38.                    //     5                   P1^2 ,  P1^3 輸出低電平信號---小車跑10秒---停止,
  39.                       //                          停頓2秒
  40.                 //     6                   P2^0 輸出低電平信號-------P2^2  NPN輸入低電平--停止。
  41.                      //                           停頓2秒
  42.                //     7       P1^2  , P1^3  輸出低電平信號-----P2^4紅外避障輸入低電平,停止。
  43.              //                                 完
  44.                                 
  45.              //這里邊的P3^2起到中斷的作用,按下遙控器D,P3^2引腳接收高電平
  46.              //程序暫停,因為接收板為自鎖,所以會持續的輸出高電平,直到再次按下,                                                        //P3^2不再輸入高電平,程序從暫停之前那一步繼續執行下去.
  47.                            
  48.            //           程序流程         倒序    按下C鍵 P2^6  倒序
  49.            //因為是程序固定的所以倒序也就是把程序倒個方向,不知道這個算不算兩個程序,
復制代碼

     這個小車的效果,就是按下遙控器B ,小車會沿著固定的一條框框道路行走,然后小車上邊的一個小電機會做一些動作。按下遙控器C小車就會倒著走回來,這個對于各位大佬應該非常容易,請幫幫我,最好能給我釋義一下,你們是怎么定的時間,時間是怎么樣計算出來的   ,  怎么外部中斷的,特別是這兩個,非常重要,希望能夠在大佬們的幫助下弄懂這兩個的用法

萬分感謝,

從上個月才開始自己學習單片機,因為時間的關系,之前學習過的一些知識都已經忘記完了,但現在慢慢的看一些視頻,各位老師的講解。各位大佬的發帖,回復,給了我很多的啟發和幫助。也開始覺的單片機挺有趣,這幾天老是想著程序該怎么設計,需要哪些東西,等等,感覺有點入迷了,不知道快入門了吧。

非常感謝有51黑這樣一個大平臺,讓大家能夠互相幫助著在自己喜歡或者賴以生活的道路上走著。
愿大家永遠不忘初心,繼續前行。

設置有回復獎勵喲,希望各位大佬們贈人玫瑰,手有余香。

附上我用的89C52RC單片機單片機的原理圖

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:310519 發表于 2019-4-16 20:49 | 只看該作者
中斷和定時正是單片機的“精要”啊。

回復

使用道具 舉報

板凳
ID:164602 發表于 2019-4-17 08:12 | 只看該作者
只說一點:外部中斷的IO口

外部中斷的IO口,只能是P32、P33,不能是其它的。因為這是由單片機的內部硬件電路決定的,不是由軟件可以決定的。
如果你使用中斷,就只能是對應的IO口。
另外,中斷源也是由單片機電路決定的,看手冊就知道。
回復

使用道具 舉報

地板
ID:451718 發表于 2019-4-17 08:51 | 只看該作者
定時器是單片機內部的硬件,而中斷只是單片機的一種機制,在使用計時器的時候,你可以用中斷機制,也可以不用。 有個教程推薦給你, 用一天的時間就可以讀完這個教程,一定對你有很大的幫助。
下載地址:http://www.zg4o1577.cn/bbs/dpj-26246-1.html
回復

使用道具 舉報

5#
ID:149799 發表于 2019-4-17 09:41 | 只看該作者
總工講解的很詳細了
回復

使用道具 舉報

6#
ID:123289 發表于 2019-4-17 11:02 | 只看該作者
“我理解的外部中斷,電平觸發就是一個按鍵或是什么東西,在單片機引腳上輸入了一個電平,這個電平一直存在使其一直保持中斷,松開按鍵就外部中斷停止了,
下沿觸發像是在引腳上輸入一個電平的信號,就像一個波形一樣,觸發不需要保持住,單片機檢測到這個波形了就觸發外部中斷!
你說對了一半:準確地說,不是“就中斷了”,而是產生中斷申請標記位了,離中斷還差一步:你讓不讓它中斷!
回復

使用道具 舉報

7#
ID:123289 發表于 2019-4-17 11:05 | 只看該作者
“就一點不明白,外部中斷一定要接在INT0,INT1引腳上才可以嗎?別的端口不可以嗎?那如果需要用傳感器控制的外部中斷多幾個,好像局限性很大”
你的想法,設計大師們已經考慮到了:后期改進型51計算機的確可以在別的端口中斷,如P2.0。STC的機型就是你想像的。傳統51沒有。
回復

使用道具 舉報

8#
ID:505803 發表于 2019-4-17 11:18 | 只看該作者
那想是有3 個4個的中斷源怎么辦?換板子嗎?
回復

使用道具 舉報

9#
ID:505803 發表于 2019-4-17 11:25 | 只看該作者
robinsonlin 發表于 2019-4-17 08:51
定時器是單片機內部的硬件,而中斷只是單片機的一種機制,在使用計時器的時候,你可以用中斷機制,也可以不 ...

這個視頻就是我正在看的,宋老師講的很好,我也在認真學習,有的視頻會反反復復的看,了解他講的一些知識點。
另外,大哥我想問一下,我想一步一步的把我上邊的這個程序給推敲出來,這樣更能加深我的理解,
就是單片機怎么接受高電平的輸入,現在這個遙控接收表只能輸出高電平,有什么辦法在程序上調整或者是硬件上加什么東西,
謝謝大哥的回復
回復

使用道具 舉報

10#
ID:123289 發表于 2019-4-17 11:29 | 只看該作者
“還有定時器,感覺怎么這么復雜,可以一會語句循環,一會定時器控制,都不知道到底該用哪種了。
到現在定時器都沒弄懂。”
它就是個計數器,即然是計數器就有以下:
1、輸入時鐘脈沖CLK,來一個計一次。如果CLK間隔很準時(來自晶振),自然就可以用來“定時”,這時可以美其名曰“定時器”了;如果間隔很隨機(來自引腳的外接脈沖),就只能數數脈沖的個數,就只能是“計數器”了。如果切斷(TR=0)它,當然就停止計數了;如果接通它(TR=1),就又計數了。這樣說不就知道“定時”、“計數”、“起動”、“停止”了嗎。
2、是計數器就有位數限制,計滿會發生什么?會輸出一個脈沖至中斷標記位。這就是“定時器中斷”的道理。
3、這個計數器是可以預置轉數的,在任何時候你都可以預置數,你瞎置它就瞎數,為了有規律,你通常會選擇一個特定的時刻置數,當然最有特點的時刻就是它計滿的時候!例如:65536計滿,計滿后你置數據60000,這樣它就每計5536次發出一次中斷申請。如果你不置數,它就每65536次發出一次中斷申請。
4、中斷申請發出后,如果沒有被清除(用其它方式清除),那么再次申請就沒有意義了。這就是中斷響應后為什么要復位中斷標記的道理,當然有些機型是硬件復位的,即一響應就自動清除它,也就不要你操心了。
回復

使用道具 舉報

11#
ID:286252 發表于 2019-4-17 11:32 | 只看該作者
51單片機就是這樣,它只有兩個外部中斷輸入口,如果你中斷輸入口不夠,你可以使用與非門連接(將普通的IO口連接在門電路的輸入口,門電路的輸出口接單片機中斷口)。
回復

使用道具 舉報

12#
ID:123289 發表于 2019-4-17 11:35 | 只看該作者
“程序方面,看了許多的例程,里面的代碼,最后感覺有很多的相似,就好像有固定的框框,寫程序的時候只需要朝里面套自己的東西一樣!
寫程序很容易,就那么幾個句子抄抄。但架構程序,是需要相當的智慧!!腦子不太好使用的,不好學這一行。你必須學會構建程序,第一步就是必須會畫流程圖,流程圖說得通道理,達得成目的。再依流程圖寫程序,余下的就是抄抄句子了。
看別人的程序,要點是了解它的構思、目的、達成目的所采用的方式。語句不重要!
回復

使用道具 舉報

13#
ID:123289 發表于 2019-4-17 11:39 | 只看該作者
你留的不是程序,只是定義接口接的是什么東西。
回復

使用道具 舉報

14#
ID:123289 發表于 2019-4-17 11:41 | 只看該作者
我的分很多,你就留著用吧,不別給我了。不夠用我可以贊助你一點。
回復

使用道具 舉報

15#
ID:123289 發表于 2019-4-17 11:49 | 只看該作者
你的原理圖上可以省去四個元件:D1、C3、C7、Y1。
D1省去后:短接。
C3、C7、Y1省去后,從U2-8引一條線至OSCIN。不過CPU的主頻就統一成12M了,這一點軟件上是可以克服的(相關時序的參數調整一下)。
回復

使用道具 舉報

16#
ID:123289 發表于 2019-4-17 11:50 | 只看該作者
如果離我近,不出一周教會你單片機。
回復

使用道具 舉報

17#
ID:505803 發表于 2019-4-17 15:05 | 只看該作者
yzwzfyz 發表于 2019-4-17 11:29
“還有定時器,感覺怎么這么復雜,可以一會語句循環,一會定時器控制,都不知道到底該用哪種了。
到現在定 ...

大哥您好
這個定時器,聽了一些視頻資料的講解,大概知道它是什么原理,但就是具體的該怎么用還不太清楚。
程序方面流程圖畫的有,都說的通。就是不知道該如何下手。
看一些例程,自己分析,就是先,頭文件,定義引腳,然后程序的流程。引用的函數。等。自己寫的時候就完全不知道該怎么寫了。之前也按照流程寫過了,當時想的是。我需要的程序就和點亮LED燈一樣,不過是時間不一樣,但就是時間不知道該如何計算,怎么樣才能一會定時4秒 一會定時10秒,
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99re视频精品 | 91视频久久 | 国产高清一区二区三区 | 最新国产精品 | 人人干人人爽 | 91精品在线看 | 免费在线一区二区三区 | 干干干日日日 | 免费在线观看av网址 | 狠狠久| 一区二区三区四区国产 | 中文字幕91 | 午夜丰满少妇一级毛片 | 国产黄色在线观看 | 久久久久久久av | 高清18麻豆 | 在线观看视频h | 日韩欧美一区二区三区在线播放 | 国产精品欧美一区二区 | 日韩欧美精品在线 | 一区二区视频在线 | 日本精品一区二区 | 精品国产aⅴ | 日韩一区二区在线免费观看 | 91在线网站| 亚洲理论在线观看电影 | 亚洲瑟瑟 | 日韩久久精品视频 | 国产精品美女久久久久久免费 | 日韩欧美中文 | 亚洲啊v在线 | 国产精品视频久久 | 亚洲精品亚洲人成人网 | 色眯眯视频在线观看 | 婷婷丁香在线视频 | 久草视 | 亚洲精品成人网 | 网址黄 | 黄色一级毛片 | 国产一区二区三区四区五区加勒比 | 亚洲一区二区在线视频 |