新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機匯編延時程序的理解

        單片機匯編延時程序的理解

        作者: 時間:2012-08-20 來源:網絡 收藏

        這樣,我們就可以算算這個子累計進行了多少個周期,然后乘以1微秒,就算出它占用的時間,也就是的時長了!

        第一句:DELAY: MOV R7,#250 ;執行了一次,沒有任何語句跳轉給它,單周期。1

        第二句:D1: MOV R6,#250 ;執行了250次,全部是第四句跳過來的,單周期。250

        第三句:D2: DJNZ R6,D2 ;原地執行了250次,從第二句順延(第二句執行完,沒有其它跳轉的話肯定要執行第三句)過來250次,也就是250*250=62500次,雙周期*2。125000

        第四句:DJNZ R7,D1 ; 從第三句順延過來250次,雙周期*2。500

        總計:1+250+125000+500=1257501次,乘以1微秒,換算約為0.13秒。

        我們可以通過調整R6、R7的數值來調整的長度。事實上,8位計算機中,R6之類的工作寄存器地址最大只能放下255的十進制數值,因此要通過上述達到更長的是辦不到的。

        那怎么辦呢?

        我們可以再增加一個R4,讓上述的最多可以循環255遍,這樣,0.13秒的200多倍就是30秒上下了,不夠的話再增加循環,又可以擴大200多倍,當然,工作寄存器的數量是有限的,因此這個延時程序也是有限的,如果還不夠用怎么辦呢,就目前我所學的知識,只能在母程序里面設置循環了,也就是讓這個子程序在母程序里面繼續循環


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 南皮县| 浏阳市| 崇明县| 蒲城县| 监利县| 万盛区| 沙雅县| 鲁甸县| 宣武区| 乌什县| 类乌齐县| 邹城市| 嘉峪关市| 晋州市| 昌邑市| 静安区| 正定县| 凉山| 清涧县| 福海县| 通江县| 德惠市| 共和县| 攀枝花市| 齐河县| 海门市| 广南县| 建阳市| 东城区| 庆云县| 宁南县| 桦甸市| 合水县| 樟树市| 武山县| 阿拉善盟| 广德县| 大渡口区| 海盐县| 临湘市| 长宁县|