找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

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

查看數(shù): 76176 | 評論數(shù): 105 | 收藏 9
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2013-5-21 02:48

正文摘要:

上一次課中,我們已經(jīng)知道,程序中的符號R7、R6是代表了一個個的RAM單元,是用來放一些數(shù)據(jù)的,下面我們再來看一下其它符號的含義。 DELAY:   MOV R7,#250   ;(6) D1:   MOV R6,#250    ...

回復(fù)

ID:866313 發(fā)表于 2024-1-6 15:54
LED閃爍程序如下:
  1. ;外設(shè)端口切換寄存器 2 的地址
  2. P_SW2   DATA    0BAH

  3. ;端口模式配置寄存器的地址
  4. P1M0    DATA    092H
  5. P1M1    DATA    091H

  6.         ORG     0000H
  7.         LJMP    MAIN
  8.         ORG     0100H

  9. ; 主程序:
  10. MAIN:
  11.     MOV SP, #5FH
  12.     ORL P_SW2,#80H ;使能訪問 XFR
  13.    
  14.     MOV P1M0, #00H
  15.     MOV P1M1, #00H
  16.    
  17.     MOV P1M0, #08H ;設(shè)置 P1.3 為推挽輸出模式
  18.     MOV P1M1, #00H
  19.    
  20.     LJMP    LOOP

  21. ; 循環(huán)
  22. LOOP:
  23.     SETB P1.3       ; (1) P1.3 口輸出高電平,點亮小燈
  24.     LCALL DELAY_1S  ; (2) 延時一段時間
  25.     CLR P1.3        ; (3) P1.3 口輸出低電平,熄滅小燈
  26.     LCALL DELAY_1S  ; (4) 延時一段時間
  27.     AJMP LOOP       ; (5) 跳轉(zhuǎn)到第一句 LOOP 處

  28. ;====================延時1秒子程序====================
  29. DELAY_1S:         ;延時子程序,12MHz晶振延時1.002035秒
  30.     MOV R4, #10   ;1指令周期
  31.    
  32. L3:
  33.     MOV R2, #200  ;1指令周期
  34.    
  35. L1:
  36.     MOV R3, #249  ;1指令周期
  37.     L2:
  38.         DJNZ R3, L2     ;2指令周期
  39.    
  40.     DJNZ R2, L1          ;2指令周期
  41.     DJNZ R4, L3          ;2指令周期
  42.    
  43.     RET                      ;2指令周期
  44. ;循環(huán)體延時時間: [(249*2+1+2)*200+1+2]*10*12/12000000=1.002032s
  45. ;加上LCALL指令和第一條MOV指令以及最后一條RET指令算出來整個函數(shù)的時間為1.002035s
  46. ;=====================================================

  47. END
復(fù)制代碼

燒錄到 STC8H8K64U 芯片中,使用的時鐘頻率是 1MHz,這個頻率是 12MHz 的 1/12

LED小燈點亮1秒鐘、熄滅1秒鐘、點亮1秒鐘、熄滅1秒鐘……閃爍

ID:1050091 發(fā)表于 2022-11-1 21:14
lixichunedu 發(fā)表于 2014-4-5 12:46
12MHZ的晶體振蕩器  意味著這個晶體振蕩器1秒鐘震蕩12000000次,也就是12000000個(高一下低一下),也就 ...

了解謝謝
ID:770193 發(fā)表于 2022-6-17 11:35
引用樓主:這種復(fù)位電路的工作原理是:通電時,電容兩端相當(dāng)于是短路,于是RST管腳上為高電平,然后電源通過電阻對電容充電,RST端電壓慢慢下降,降到一定程序,即為低電平,單片機開始正常工作。
自己理解:對電容充電,使得電容從0v-3.5v轉(zhuǎn)變,電阻上面分得的電壓從5v到1.5下降,當(dāng)5V,RST是高電平,默認開啟復(fù)位,當(dāng)小于等于1.5V默認位低電平,RST腳不能動作;
我想請問樓主,為什么是充電到3.5V?  
ID:866313 發(fā)表于 2020-12-29 16:06
從生活中的平常事入手,將單片機中的知識點和概念講解理解起來非常輕松啊,謝謝
ID:149799 發(fā)表于 2019-6-26 09:22
好貼,樓主繼續(xù)講解下一個,謝謝。
ID:380170 發(fā)表于 2019-3-22 06:37
簡單明了,初步學(xué)習(xí)好資料!感謝admin,感.
ID:400832 發(fā)表于 2018-10-10 16:06
菜菜鳥愛單片機 發(fā)表于 2014-3-20 17:16
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

一個機器周期等于12個時鐘周期,12M的時鐘周期等于1/12微秒,所以12M的機器周期等于1微秒
ID:401204 發(fā)表于 2018-9-23 17:26
樓主寫程序時最好寫完整的程序比如頭文件等,因為只寫一段程序初學(xué)者會誤解的,自己寫的時候照你的抄結(jié)果搞半天搞不出
ID:379308 發(fā)表于 2018-8-29 20:39
請問設(shè)計100ms的延時單元中的數(shù)分配法則是啥啊
ID:330769 發(fā)表于 2018-7-1 15:07
非常感想,講的很通俗,一下子就看懂了
ID:93625 發(fā)表于 2018-6-25 15:55
除了主貼的內(nèi)容,下面回復(fù)的內(nèi)容也有助于理解主貼的內(nèi)容。
ID:327434 發(fā)表于 2018-5-21 17:31
有點懵
ID:335016 發(fā)表于 2018-5-21 16:56
很給力!
ID:313192 發(fā)表于 2018-4-21 20:42
第五課,又學(xué)習(xí)了
ID:249545 發(fā)表于 2018-4-15 10:10
感謝老師詳講延時時序.
ID:305511 發(fā)表于 2018-4-12 23:11
前面哪里有講啦R6和R7是什么?
ID:252798 發(fā)表于 2018-3-14 19:49
菜菜鳥愛單片機 發(fā)表于 2014-3-20 17:16
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

12MHZ 即12M次1秒,12次為1US,一個機器周期為12個時鐘周期,所以一個機器周期為1US。
ID:286876 發(fā)表于 2018-3-2 11:09
需要學(xué)習(xí)
ID:276348 發(fā)表于 2018-1-16 20:19
這節(jié)講的命令對于相應(yīng)引腳的作用和復(fù)位過程。
ID:263209 發(fā)表于 2017-12-26 18:41
練習(xí)
DELAY: MOV R7 #199;
D1: MOV R6 #245;
D2:DJNZ R6,D2;
DJNZ R7,D1;
RET
ID:263209 發(fā)表于 2017-12-26 18:37
練習(xí):DELAY: MOV R7 #199
ID:259811 發(fā)表于 2017-12-12 16:54
Soar_C 發(fā)表于 2014-12-10 16:04
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

怎么算從5V降到3V所需要的時間?
ID:247636 發(fā)表于 2017-11-16 11:49
謝謝樓主分享的資料
ID:243806 發(fā)表于 2017-10-29 00:14
很詳細

很詳細
ID:68875 發(fā)表于 2017-10-22 23:27
不錯!很好
ID:237917 發(fā)表于 2017-10-9 13:24
如果在R6中放入0,會有什么樣的結(jié)果。 就是執(zhí)行250次
ID:237917 發(fā)表于 2017-10-9 13:22
請大家用自已的話講一下這條語句是怎樣執(zhí)行的:第(8)句就是,R6=250,執(zhí)行減1,等于249,不等于0,轉(zhuǎn)移到D2;此時的D2里的R6=249,減1,等于248,不等于0,轉(zhuǎn)移到D2……如此以往,到底250次,R6=0,執(zhí)行下一行也就是(9),而(9)也是同樣的原理,轉(zhuǎn)移到D1再執(zhí)行D2,最終結(jié)果就是原地轉(zhuǎn)圈250(R7由250每次減1減到0) x 250(R由250每次減1減到0)次
ID:165330 發(fā)表于 2017-10-8 20:15
不錯
ID:165330 發(fā)表于 2017-10-8 20:14
牛逼。。。。
ID:231625 發(fā)表于 2017-9-20 16:13
70樓應(yīng)該是正解,按70樓講解能多少明白點,為什么一上電就是高電平;41樓解釋了程序恢復(fù)后的理解,就是當(dāng)電流不動時,又恢復(fù)低電平
ID:231625 發(fā)表于 2017-9-20 15:02

單片機上電是直流5v電壓,電容不是隔直通交嗎?為什么一上電電容就短路了?當(dāng)電容充完電之后不用放電嗎,放電如何確定正負極,
ID:216466 發(fā)表于 2017-8-19 10:40
ivmmcu 發(fā)表于 2014-4-18 11:47
單片機上電是直流5v電壓,電容不是隔直通交嗎?為什么一上電電容就短路了?當(dāng)電容充完電之后不用放電嗎?復(fù) ...

電容元件的特征就是 先有電流再有電壓,電容加載電源時,理論電流無限大電壓零。
跟電感元件的特征剛好相反。
ID:223571 發(fā)表于 2017-8-16 11:39
     RST引腳保持2個機器周期以上的高電平可以復(fù)位,是不是頻率不同的晶振,這2個周期的時間也不一樣呀?
ID:223571 發(fā)表于 2017-8-16 10:16
一個問題:如果在R6中放入0,會有什么樣的結(jié)果。結(jié)果是該程序只執(zhí)行250次
ID:209085 發(fā)表于 2017-6-8 09:55
thanks for sharing
ID:198528 發(fā)表于 2017-5-9 11:01
什么叫一個單元中的數(shù)...
ID:196530 發(fā)表于 2017-5-4 16:21
ivmmcu 發(fā)表于 2014-4-18 11:47
單片機上電是直流5v電壓,電容不是隔直通交嗎?為什么一上電電容就短路了?當(dāng)電容充完電之后不用放電嗎?復(fù) ...

單片機上電瞬間相當(dāng)于是交流電,頻率為無窮大,根據(jù)隔直通交,上電瞬間電容導(dǎo)通,約等于電容短路,復(fù)位端出現(xiàn)高電平。電路后續(xù)通過串聯(lián)電阻放電使復(fù)位端回到低電平。
ID:196530 發(fā)表于 2017-5-4 16:11
復(fù)位電路的電容大小是如何確定的?是否跟電路的時間常數(shù)有關(guān)系?
ID:153611 發(fā)表于 2017-5-3 18:00
C2作用是什么?
ID:139165 發(fā)表于 2017-4-1 14:12
li hai

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

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

快速回復(fù) 返回頂部 返回列表