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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 75781|回復: 107
收起左側(cè)

5課:單片機延時程序分析

  [復制鏈接]
ID:1 發(fā)表于 2013-5-21 02:48 | 顯示全部樓層 |閱讀模式
上一次課中,我們已經(jīng)知道,程序中的符號R7、R6是代表了一個個的RAM單元,是用來放一些數(shù)據(jù)的,下面我們再來看一下其它符號的含義。
DELAY:   MOV R7,#250   ;(6)
D1:   MOV R6,#250      ;(7)
D2:   DJNZ R6,D2      ;(8)
DJNZ R7,D1            ;(9)   
RET                ;(10)
20078164068818364.gif
〈單片機延時程序〉
  MOV:這是一條指令,意思是傳遞數(shù)據(jù)。說到傳遞,我們都很清楚,傳東西要從一本人的手上傳到另一本人的手上,也就是說要有一個接受者,一個傳遞者和一樣東西。從指令MOV R7,#250中來分析,R7是一個接受者,250是被傳遞的數(shù),傳遞者在這條指令中被省略了(注意:并不是每一條傳遞指令都會省的,事實上大部份數(shù)據(jù)傳遞指令都會有傳遞者)。它的意義也很明顯:將數(shù)據(jù)250送到R7中去,因此執(zhí)行完這條指令后,R7單元中的值就應當是250。在250前面有個#號,這又是什么意思呢?這個#就是用來說明250就是一個被傳遞的東西本身,而不是傳遞者。那么MOV R6,#250是什么意思,應當不用分析了吧。
  DJNZ:這是另一條指令,我們來看一下這條指令后面跟著的兩個東西,一個是R6,一個是D2,R6我們當然已知是什么了,查一下D2是什么。D2在本行的前面,我們已學過,這稱之為標號。標號的用途是什么呢?就是給本行起一個名字。DJNZ指令的執(zhí)行過程是這樣的,它將其后面的第一個參數(shù)中的值減1,然后看一下,這個值是否等于0,如果等于0,就往下執(zhí)行,如果不等于0,就轉(zhuǎn)移,轉(zhuǎn)到什么地方去呢?可能大家已猜到了,轉(zhuǎn)到第二個參數(shù)所指定的地方去(請大家用自已的話講一下這條語句是怎樣執(zhí)行的)。本條指令的最終執(zhí)行結(jié)果就是,在原地轉(zhuǎn)圈250次。
  執(zhí)行完了DJNZ R6,D2之后(也就是R6的值等于0之后),就會去執(zhí)行下面一行,也就是DJNZ R7,D1,請大家自行分析一下這句話執(zhí)行的結(jié)果。(轉(zhuǎn)去執(zhí)行MOV R6,#250,同時R7中的值減1),最終DJNZ R6,D2這句話將被執(zhí)行250*250=62500次,執(zhí)行這么多次同一條指令干嗎?就是為了延時。
一個問題:如果在R6中放入0,會有什么樣的結(jié)果。
二、時序分析:
  前面我們介紹了延時程序,但這還不完善,因為,我們只知道DJNZ R6,D2這句話會被執(zhí)行62500次,但是執(zhí)行這么多次需要多長時間呢?是否滿足我們的要求呢?我們還不知道,所以下面要來解決這個問題。
  先提一個問題:我們學校里什么是最重要的。(鈴聲)校長能出差,老師能休息,但學校一日無鈴聲必定大亂。整個學校就是在鈴聲的統(tǒng)一指揮下,步調(diào)一致,統(tǒng)一協(xié)調(diào)地工作著。這個鈴是按一定的時間安排來響的,我們能稱之為“時序��時間的次序”。一個由人組成的單位尚且要有一定的時序,計算機當然更要有嚴格的時序。事實上,計算機更象一個大鐘,什么時候分針動,什么時候秒針動,什么時候時針動,都有嚴格的規(guī)定,一點也不能亂。計算機要完成的事更復雜,所以它的時序也更復雜。
  我們已知,計算機工作時,是一條一條地從ROM中取指令,然后一步一步地執(zhí)行,我們規(guī)定:計算機訪問一次存儲器的時間,稱之為一個機器周期。這是一個時間基準,好象我們?nèi)擞谩懊搿弊鳛槲覀兊臅r間基準一樣,為什么不干脆用“秒”,多好,很習慣,學下去我們就會知道用“秒”反而不習慣。
一個機器周期包括12個時鐘周期。下面讓我們算一下一個機器周期是多長時間吧。設一個單片機工作于12M晶體震蕩器,它的時鐘周期是1/12(微秒)。它的一個機器周期是12*(1/12)也就是1微秒。(請計算一個工作于6M晶體震蕩器的單片機,它的機器周期是多少)。
  MCS-51單片機的所有指令中,有一些完成得比較快,只要一個機器周期就行了,有一些完成得比較慢,得要2個機器周期,還有兩條指令要4個機器周期才行。這也不難再解,不是嗎?我讓你掃地的執(zhí)行要完成總得比要你完成擦黑板的指令時間要長。為了恒量指令執(zhí)行時間的長短,又引入一個新的概念:指令周期。所謂指令周期就是指執(zhí)行一條指令的時間。INTEL對每一條指令都給出了它的指令周期數(shù),這些數(shù)據(jù),大部份不需要我們?nèi)ビ洃,但是有一些指令是需要記住的,如DJNZ指令是雙周期指令。
  下面讓我們來計算剛才的延時。首先必須要知道晶體震蕩器的頻率,我們設所用晶體震蕩器為12M,則一個機器周期就是1微秒。而DJNZ指令是雙周期指令,所以執(zhí)行一次要2個微秒。一共執(zhí)行62500次,正好125000微秒,也就是125毫秒。
如果你對上面幾句還是不懂請看這里的詳解:http://m.zg4o1577.cn/mcu/1247.html
關于用C語言寫延時函數(shù)的詳解請看這:http://m.zg4o1577.cn/mcu/710.html
練習:設計一個延時100毫秒的延時程序。
要點分析:1、一個單元中的數(shù)是否能超過255。2、如何分配兩個數(shù)。
三、復位電路
一、復位方式
⒈ 復位條件
        RST引腳保持2個機器周期以上的高電平。
⒉ 復位電路
2007792047918750.jpg
〈單片機復位電路〉
⒊ 復位后CPU狀態(tài)
       PC:  0000H         TMOD: 00H
       Acc: 00H           TCON: 00H
       B:   00H           TH0:  00H
       PSW: 00H           TL0:  00H
       SP:  07H           TH1:  00H
       DPTR:0000H         TL1:  00H
       P0~P3:FFH         SCON: 00H
       IP:×××00000B    SBUF: 不定
       IE:0××00000B     PCON: 0×××0000B
  任何單片機在工作之前都要有個復位的過程,復位是什么意思呢?它就象是我們上課之前打的預備鈴。預備鈴一響,大家就自動地從操場、其它地方進入教室了,在這一段時間里,是沒有老師干預的,對單片機來說,是程序還沒有開始執(zhí)行,是在做準備工作。顯然,準備工作不需要太長的時間,復位只需要5ms的時間就能了。如何進行復位呢?只要在單片機的RST管腳上加上高電平,就能了,按上面所說,時間不少于5ms。為了達到這個要求,能用很多種辦法,這里供給一種供參考,見圖1。實際上,我們在上一次實驗的圖中已見到過了。
  這種復位電路的工作原理是:通電時,電容兩端相當于是短路,于是RST管腳上為高電平,然后電源通過電阻對電容充電,RST端電壓慢慢下降,降到一定程序,即為低電平,單片機開始正常工作。

下一課:6課:單片機并行口結(jié)構(gòu)

評分

參與人數(shù) 6黑幣 +33 收起 理由
zbfdyw + 8 簡單明了,初步學習好資料!感謝admin,感.
水木易安 + 5 贊一個!
yida1698 + 5 贊一個!
路神 + 5 很給力!
么么小輝 + 5 很給力!
chen_zhouge + 5 很給力!

查看全部評分

回復

使用道具 舉報

ID:49404 發(fā)表于 2013-5-25 21:46 | 顯示全部樓層

回帖獎勵 +2

延時怎么不計算跟精確一點?更精確是125751us
回復

使用道具 舉報

ID:53820 發(fā)表于 2013-8-31 09:25 | 顯示全部樓層
謝謝分享!!!。
回復

使用道具 舉報

ID:46675 發(fā)表于 2013-11-20 16:33 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:58052 發(fā)表于 2013-12-19 22:54 | 顯示全部樓層
不錯!很好
回復

使用道具 舉報

ID:58513 發(fā)表于 2014-1-3 19:58 | 顯示全部樓層
很詳細,很全面,有匯編,有C語言,但有點轉(zhuǎn)不過來(原因 要學匯編,要學C 語言)
回復

使用道具 舉報

ID:56867 發(fā)表于 2014-3-6 19:43 | 顯示全部樓層
對我的論文寫作很有幫助。
回復

使用道具 舉報

ID:59837 發(fā)表于 2014-3-20 17:16 | 顯示全部樓層
我們設所用晶體震蕩器為12M,則一個機器周期就是1微秒      這個·怎么算??
回復

使用道具 舉報

ID:59853 發(fā)表于 2014-3-20 21:26 | 顯示全部樓層
厲害厲害
回復

使用道具 舉報

ID:59987 發(fā)表于 2014-4-5 12:46 | 顯示全部樓層
菜菜鳥愛單片機 發(fā)表于 2014-3-20 17:16
我們設所用晶體震蕩器為12M,則一個機器周期就是1微秒      這個·怎么算??

12MHZ的晶體振蕩器  意味著這個晶體振蕩器1秒鐘震蕩12000000次,也就是12000000個(高一下低一下),也就是脈沖。震蕩1次消耗的時間(也就是時鐘周期,其實就是換了個名稱)是
(1秒)/12000000=0.0000000833333333(秒),
一個機器周期=12個時鐘周期(規(guī)定的)
一個機器周期=12*0.000000083333333(秒)=0.000001(秒)=1(微秒)。
實際上計算不是這么復雜的。
樓主說 6MHZ的晶振的機器周期是多少?
我是這么計算的
12*(1/6)       =   2us.
         M 的倒數(shù)  = us 微
其實 單位量綱中的 兆(M)和 微(us)互為倒數(shù)的原因。
我說的不好的地方,希望大家批評指正。
回復

使用道具 舉報

ID:59987 發(fā)表于 2014-4-5 13:53 | 顯示全部樓層
復位電路不是很清楚
回復

使用道具 舉報

ID:60228 發(fā)表于 2014-4-18 11:47 | 顯示全部樓層
單片機上電是直流5v電壓,電容不是隔直通交嗎?為什么一上電電容就短路了?當電容充完電之后不用放電嗎?復位電路還是有點不懂,希望樓主能給點建議,謝謝。
回復

使用道具 舉報

ID:64206 發(fā)表于 2014-7-22 10:27 | 顯示全部樓層
感謝樓主
回復

使用道具 舉報

ID:64543 發(fā)表于 2014-7-29 20:15 | 顯示全部樓層
謝謝分享。。。。
回復

使用道具 舉報

ID:64634 發(fā)表于 2014-8-6 23:49 | 顯示全部樓層
不太懂
回復

使用道具 舉報

ID:64634 發(fā)表于 2014-8-7 12:48 | 顯示全部樓層
不太懂
回復

使用道具 舉報

ID:69838 發(fā)表于 2014-12-3 20:14 | 顯示全部樓層
lixichunedu 發(fā)表于 2014-4-5 12:46
12MHZ的晶體振蕩器  意味著這個晶體振蕩器1秒鐘震蕩12000000次,也就是12000000個(高一下低一下),也就 ...

你這么一解釋,我就明白了
回復

使用道具 舉報

ID:70004 發(fā)表于 2014-12-5 21:17 | 顯示全部樓層
大師的深入淺出的講解
回復

使用道具 舉報

ID:70249 發(fā)表于 2014-12-10 16:04 | 顯示全部樓層
ivmmcu 發(fā)表于 2014-4-18 11:47
單片機上電是直流5v電壓,電容不是隔直通交嗎?為什么一上電電容就短路了?當電容充完電之后不用放電嗎?復 ...

學過電路原理大家就知道,圖示電容的兩端電壓是逐漸從0V慢慢增長到穩(wěn)定狀態(tài)時的電壓5V的,而不是直接躍變到5v。也就是說RST引腳的電壓是從5V逐漸降到0v的。假設單片機認為大于3V為高電平,也就是只要使RST引腳從5V降到3V的時間大于兩個機器周期的話,單片機就復位。右邊的圖同理。因為這個時間與電阻、電容大小有關,所以復位電路中電阻值、電容值要精心選擇。
回復

使用道具 舉報

ID:70294 發(fā)表于 2014-12-12 13:24 | 顯示全部樓層
Soar_C 發(fā)表于 2014-12-10 16:04
學過電路原理大家就知道,圖示電容的兩端電壓是逐漸從0V慢慢增長到穩(wěn)定狀態(tài)時的電壓5V的,而不是直接躍變 ...

還是不明白,RST引腳上的5V電壓是哪里來的?
回復

使用道具 舉報

ID:67837 發(fā)表于 2014-12-16 21:08 | 顯示全部樓層
努力學習中
回復

使用道具 舉報

ID:70525 發(fā)表于 2014-12-18 20:01 | 顯示全部樓層
初學者                 
回復

使用道具 舉報

ID:70104 發(fā)表于 2014-12-20 12:28 | 顯示全部樓層
學習了
回復

使用道具 舉報

ID:71621 發(fā)表于 2015-1-16 22:07 來自觸屏版 | 顯示全部樓層
我覺得這個教程講解得深入淺出!贊一個!
回復

使用道具 舉報

ID:71621 發(fā)表于 2015-1-16 22:07 來自觸屏版 | 顯示全部樓層
多好的教程,相見恨晚!
回復

使用道具 舉報

ID:72479 發(fā)表于 2015-1-20 17:07 | 顯示全部樓層
本帖最后由 我就要飛刀 于 2015-1-20 17:15 編輯

DELAY:   MOV R7,#250   ;(6)
D1:   MOV R6,#250      ;(7)
D2:   DJNZ R6,D2      ;(8)
DJNZ R7,D1            ;(9)   
RE
按老師提示,我把這段改了一下
DELAY: MOV R7,#250 ;(6)
D1: MOV R6,#0   ;(7)
D2: DJNZ R6,D2     ;(8)
       DJNZ R7,D1  ;(9)
  好象看起來變化不大
再改成這樣:
DELAY: MOV R7,#1 ;(6)
D1: MOV R6,#250  ;(7)
D2: DJNZ R6,D2     ;(8)
       DJNZ R7,D1

明顯閃爍慢了很多。


回復

使用道具 舉報

ID:75710 發(fā)表于 2015-3-30 20:30 | 顯示全部樓層
對于正在學單片機的我來說,幫助很大,謝謝分享~\(≧▽≦)/~。。
回復

使用道具 舉報

ID:75791 發(fā)表于 2015-4-1 10:21 | 顯示全部樓層
感謝分享!
回復

使用道具 舉報

ID:77323 發(fā)表于 2015-4-18 10:38 | 顯示全部樓層
我就要飛刀 發(fā)表于 2015-1-20 17:07
DELAY:   MOV R7,#250   ;(6)
D1:   MOV R6,#250      ;(7)
D2:   DJNZ R6,D2      ;(8)

滿了嗎?
回復

使用道具 舉報

ID:77323 發(fā)表于 2015-4-18 10:38 | 顯示全部樓層
真的很好,真心的
回復

使用道具 舉報

ID:78174 發(fā)表于 2015-4-29 22:49 | 顯示全部樓層
謝謝分享
回復

使用道具 舉報

ID:78483 發(fā)表于 2015-5-5 16:57 | 顯示全部樓層
ivmmcu 發(fā)表于 2014-4-18 11:47
單片機上電是直流5v電壓,電容不是隔直通交嗎?為什么一上電電容就短路了?當電容充完電之后不用放電嗎?復 ...

在直流電剛上電時,電容上是有電子移動產(chǎn)生電流的 ,當電容充電完成后相當斷路
回復

使用道具 舉報

ID:82423 發(fā)表于 2015-6-8 19:11 | 顯示全部樓層
時序邏輯電路是什么
回復

使用道具 舉報

ID:82423 發(fā)表于 2015-6-8 19:11 | 顯示全部樓層
看不懂啊怎么辦
回復

使用道具 舉報

ID:84645 發(fā)表于 2015-7-4 11:28 | 顯示全部樓層
看的我手癢癢的
回復

使用道具 舉報

ID:86884 發(fā)表于 2015-7-28 08:26 | 顯示全部樓層
贊,剛開始學習單片機借了好多書發(fā)現(xiàn)都云里霧里的,這個資料感覺棒極了,以前C語言雖然學了,但糊里糊涂的,現(xiàn)在和匯編語言放一塊感覺慢慢理解了,太棒了,謝謝樓主!!!
回復

使用道具 舉報

ID:87812 發(fā)表于 2015-8-7 13:44 | 顯示全部樓層
ouyase 發(fā)表于 2014-12-12 13:24
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

我個人覺得應該是 VCC
回復

使用道具 舉報

ID:87812 發(fā)表于 2015-8-7 13:46 | 顯示全部樓層
eject2015 發(fā)表于 2015-5-5 16:57
在直流電剛上電時,電容上是有電子移動產(chǎn)生電流的 ,當電容充電完成后相當斷路

只有在充滿電后才 斷開? 沒電的 時候 可以理解通路?
回復

使用道具 舉報

ID:88716 發(fā)表于 2015-8-22 17:34 來自觸屏版 | 顯示全部樓層
菜菜鳥愛單片機 發(fā)表于 2014-3-20 17:16
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

t=(1/12)×12=1

評分

參與人數(shù) 1威望 +5 黑幣 +5 收起 理由
美麗人生美 + 5 + 5

查看全部評分

回復

使用道具 舉報

ID:89591 發(fā)表于 2015-10-8 12:00 | 顯示全部樓層
silverdj 發(fā)表于 2015-8-7 13:46
只有在充滿電后才 斷開? 沒電的 時候 可以理解通路?

電容的特性可以理解為隔直通交,當直流電加在其兩端時,其兩端電壓會緩慢上升,直到等于輸入電壓,然后由于電容的儲能特性(相當于水缸存滿了水),假設現(xiàn)在電容兩端是上正下負,由于直流電方向不變,所以當其存滿電之后,電路中就沒有電流流動了(只能從上面加水).但交流電由于方向在不斷變化,相當于形成了通路(現(xiàn)在下面也有了口,可以放水了),所以說通交.
回復

使用道具 舉報

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精选久久 | 五月婷婷色 | 亚洲免费人成在线视频观看 | 欧美日韩精品 | 欧美极品一区二区 | 欧美日一区 | 成人午夜影院 | 亚洲欧美日韩高清 | 超碰成人在线观看 | 亚洲天天 | 日日干日日操 | 久久r久久 | 欧美综合网 | 国产精品久久久久久久久图文区 | a黄在线观看| 91久久国产 | 国产欧美精品区一区二区三区 | 亚洲乱码国产乱码精品精98午夜 | 成人国产精品久久 | 黑人中文字幕一区二区三区 | 婷婷色国产偷v国产偷v小说 | 欧美一级久久 | 一区二区三区免费 | 大象视频一区二区 | 亚洲免费在线 | 毛片视频免费观看 | 欧美一区二区三 | 日日夜夜天天久久 | 午夜在线视频一区二区三区 | 精品国产一区一区二区三亚瑟 | 免费的av网站 | 亚洲视频区 | 国产极品车模吞精高潮呻吟 | 亚洲人成一区二区三区性色 | 精品视频免费 | 久久久一区二区三区 | 精品国模一区二区三区欧美 | 亚洲精品黄色 | 九九九久久国产免费 | 国产一区在线免费 | 国产精品亚洲精品日韩已方 |