新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > MCS51匯編精確延時(shí)程序分析

        MCS51匯編精確延時(shí)程序分析

        作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
        將以12MHZ晶振為例,詳細(xì)講解MCS-51單片機(jī)匯編程序延時(shí)的精確算法。

        指令周期、機(jī)器周期與時(shí)鐘周期
        時(shí)鐘周期:也稱為振蕩周期,一個(gè)時(shí)鐘周期 = 晶振的倒數(shù)。
        若干個(gè)時(shí)鐘周期組成一個(gè)機(jī)器周期,用來完成一個(gè)基本操作。機(jī)器/總線周期是CPU通過總線與外部邏輯(存儲(chǔ)器或I/O端口)進(jìn)行一次通訊所需的時(shí)間。
        指令周期由若干個(gè)機(jī)器周期組成,CPU執(zhí)行一條指令所需的時(shí)間。指令不同,所需的機(jī)器周期也不同。

        MCS-51單片機(jī)的一個(gè)機(jī)器周期 = 6個(gè)狀態(tài)周期 = 12個(gè)時(shí)鐘周期。
        MCS-51單片機(jī)的指令有單字節(jié)、雙字節(jié)和三字節(jié)的,它們的指令周期不盡相同,一個(gè)單周期指令包含一個(gè)機(jī)器周期,即12個(gè)時(shí)鐘周期,所以一條單周期指令被執(zhí)行所占時(shí)間為12*(1/12000000)=1μs。

        1秒延時(shí)程序:
        DEL:
        MOV R7,#10
        DEL1:
        MOV R6,#200
        DEL2:
        MOV R5,#248
        NOP
        DJNZ R5,$
        DJNZ R6,DEL2
        DJNZ R7,DEL1
        RET
        延時(shí)機(jī)器周期數(shù) = [(2*第一層循環(huán)+3)*第二層循環(huán)+3]*第三層循環(huán)+3
        其中3,其一是MOV R7,#10貢獻(xiàn)的,其二是RET貢獻(xiàn)的。
        第一層循環(huán)為最內(nèi)循環(huán)。
        未考調(diào)用時(shí)間,單片機(jī)小精靈里認(rèn)為調(diào)用時(shí)間固定為2個(gè)機(jī)器周期。
        NOP機(jī)器周期數(shù) = 第一層循環(huán) * 第二層循環(huán)
        結(jié)果為1000031us = 1.000031s


        關(guān)鍵詞: MCS51匯編精確延

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 广灵县| 阳东县| 峡江县| 晋州市| 黔西县| 漠河县| 连南| 嘉定区| 黎平县| 宜川县| 浑源县| 公安县| 个旧市| 太白县| 水城县| 双柏县| 西林县| 贵州省| 汉源县| 邛崃市| 苍梧县| 建始县| 农安县| 山西省| 遵义县| 罗田县| 安泽县| 东方市| 四子王旗| 盐源县| 太仓市| 营山县| 云和县| 新营市| 甘洛县| 灵台县| 邵武市| 达州市| 绥江县| 天津市| 青冈县|