日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

當(dāng)前位置:電子發(fā)燒友網(wǎng) > 圖書頻道 > 電子 > 《單片機(jī)原理與應(yīng)用》 > 第4章 匯編語(yǔ)言程序設(shè)計(jì)

第1節(jié) 單片機(jī)計(jì)數(shù)

  4.1.1 硬件電路

  1. 硬件電路

  硬件電路如圖4.1所示,555振蕩電路產(chǎn)生約4HZ的脈沖信號(hào),經(jīng)S3點(diǎn)接到單片機(jī)P3.4輸入端,注意應(yīng)將跳線JP1下面的兩個(gè)端子(M與R)短接。

  圖4.1 單片機(jī)計(jì)數(shù)電路原理圖

  2. 工作原理

  MCS-51單片機(jī)內(nèi)部有兩個(gè)16位的定時(shí)/計(jì)數(shù)器,都可以用于對(duì)外部事件進(jìn)行計(jì)數(shù)。外部計(jì)數(shù)脈沖從P3.4或P3.5端口輸人,程序設(shè)置定時(shí)/計(jì)數(shù)器工作在計(jì)數(shù)狀態(tài)即可以對(duì)外部事件進(jìn)行計(jì)數(shù)。

  4.1.2 程序設(shè)計(jì)

  ORG 0000H

  LJMP MAIN

  ORG 0030H

  MAIN: MOV TMOD,#06H

  MOV TH0,#0F6H

  MOV TL0,#0F6H

  SETB TR0

  MOV A,#0FEH

  LOOP: MOV P1,A

  JBC TF0,MLOOP

  SJMP LOOP

  MLOOP:RL A

  SJMP LOOP

  END

  4.1.3 源程序的編輯、編譯、下載

  打開“偉福”模擬仿真軟件進(jìn)行程序的編輯、編譯。

  打開“ISP下載軟件”將目標(biāo)文件下載到ISP-4實(shí)驗(yàn)開發(fā)板上的AT89S51單片機(jī)芯片,觀察程序運(yùn)行結(jié)果。

  4.1.4 相關(guān)知識(shí)

  在前面的程序中,我們經(jīng)常可以看到ORG、END這樣的東西,但是從我們已經(jīng)學(xué)完了51單片機(jī)的基本指令中,根本找不到它們。它們到底是什么呢?原來(lái)在單片機(jī)中,除了指令外還有偽指令。

  1. 什么是偽指令?有哪些常用偽指令?

  隨著單片機(jī)的廣泛應(yīng)用和開發(fā)以裝置功能的不斷完善與發(fā)展,匯編語(yǔ)言源程序都借助系統(tǒng)機(jī)(PC等)進(jìn)行編輯、匯編和調(diào)試。因此,在編制匯編語(yǔ)言源程序時(shí),常需應(yīng)用偽指令。偽指令又稱匯編程序控制譯碼指令,屬說(shuō)明性匯編指令。“偽”字體現(xiàn)在匯編時(shí)不產(chǎn)生機(jī)器指令代碼,不影響程序的執(zhí)行,僅產(chǎn)生供匯編時(shí)用的某些命令,在匯編時(shí)執(zhí)行某些特殊操作。

  不同的單片機(jī)及其開發(fā)裝置所定義的偽指令不全相同。下面介紹幾種常用的偽指令。

  (1) 為標(biāo)號(hào)賦值偽指令

 ?、佟?biāo)號(hào)等值偽指令——EQU

  格式:〈標(biāo)號(hào):〉EQU〈表達(dá)式〉

  指令的含義為本語(yǔ)句的標(biāo)號(hào)等值于表達(dá)式,亦即將表達(dá)式值賦予標(biāo)號(hào)。這里的標(biāo)號(hào)和表達(dá)式是必不可少的。

  例如:

  TTY: EQU 1080H

  本語(yǔ)句向匯編程序指明,標(biāo)號(hào)TTY已于前句賦值為1080H,則相當(dāng)于TTY=1080H。用EOU語(yǔ)句給一個(gè)標(biāo)號(hào)賦值以后,在整個(gè)源程序中該標(biāo)號(hào)的值是固定而不能更改的。

  ② 定義標(biāo)號(hào)值偽指令——DATA

  格式:〈標(biāo)號(hào):〉DATA〈表達(dá)式〉

  其含義是定義該標(biāo)號(hào)的值為表達(dá)式值,同樣,標(biāo)號(hào)和表達(dá)式是不可缺少的。

  例如:

  COUNT1: DATA 2300H   ;定義COUNT1=2300H

  COUNT2: DATA COUNT1+1  ;定義COUNT2=2300H+1

  由上可見,DATA和EQU的功能都是將表達(dá)成值賦給標(biāo)號(hào),但兩者有區(qū)別,用DATA語(yǔ)句賦值的標(biāo)號(hào)可以先用后定義,而用EQU語(yǔ)句賦值的標(biāo)號(hào),必須先定義后使用。

  (2) 數(shù)據(jù)存儲(chǔ)說(shuō)明偽指令

  數(shù)據(jù)存儲(chǔ)說(shuō)明偽指令的作用是將數(shù)據(jù)存儲(chǔ)在程序存儲(chǔ)器單元中。

 ?、佟《x字節(jié)數(shù)據(jù)偽指令——DB或DEGB

  格式:〈標(biāo)號(hào):〉DB〈表達(dá)式或表達(dá)式串〉

  式中表達(dá)式或表達(dá)式串是指一個(gè)字節(jié)或用逗號(hào)隔開的一個(gè)字節(jié)數(shù)據(jù)。其含義是將表達(dá)式或表達(dá)式串所指定的字節(jié)數(shù)據(jù)存入從標(biāo)號(hào)開始的連續(xù)存儲(chǔ)單元中。標(biāo)號(hào)為可選項(xiàng),它表示數(shù)據(jù)存入程序存儲(chǔ)器的起始地址。例如:

  HERE:DB 56H ;將數(shù)據(jù)56H存入HERE所指示的單元中

  DB OA7H

  再如:

  SECON:DB02H,36H,74H,0B4H,OFFH,…

  上述語(yǔ)句表示將字節(jié)數(shù)據(jù)串按順序存篇幅 標(biāo)號(hào)SECON所指示的地址為起始順序存儲(chǔ)單元中。

  作為本語(yǔ)句操作數(shù)控部分的表達(dá)式或表達(dá)式串,可以是數(shù)據(jù)表達(dá)式、ASCII碼字符串、字節(jié)數(shù)據(jù),字節(jié)數(shù)據(jù)串(其字節(jié)串長(zhǎng)度限制在80B的數(shù)據(jù)內(nèi))。

 ?、凇《x字?jǐn)?shù)據(jù)偽指令——DW或DEFW

  格式:〈標(biāo)號(hào):〉DW〈表達(dá)式或表達(dá)式串〉

  本語(yǔ)句的含義是將作為操作部分的字?jǐn)?shù)據(jù)(2B)或字?jǐn)?shù)據(jù)串存入由標(biāo)號(hào)指定的首地址按順序連續(xù)單元中,定義字為為雙字節(jié)的數(shù)據(jù)。在執(zhí)行匯編時(shí),計(jì)算機(jī)會(huì)自動(dòng)按高位字節(jié)在前、低位字節(jié)在后的順序格式存入程序存儲(chǔ)器單元中,例如:

  ABC:DW 1234H,4567H,0A5C4H,…

  匯編執(zhí)行時(shí)第一個(gè)字節(jié)的12H存入標(biāo)號(hào)ABC所指示的存儲(chǔ)單元,34H存入(ABC)+1單元中,其余按此順序?qū)⒑罄m(xù)字節(jié)數(shù)據(jù)存入對(duì)應(yīng)的存儲(chǔ)單元中,如標(biāo)號(hào)ABC定義為1000H,則上例匯編后:(1000H)=12H,(1001H)=34H,(1002H)=45H,…。

  (3) 存儲(chǔ)區(qū)說(shuō)明偽指令——DS

  格式:〈標(biāo)號(hào):〉DS〈表達(dá)式〉

  其含義是以標(biāo)號(hào)的值為首地址保留表達(dá)式所指定的若干存儲(chǔ)單元空間作為備用。例如:

  BASE:DS 0100H

  匯編后,程序存儲(chǔ)器從標(biāo)號(hào)BASE為首地址開始,空出256個(gè)存儲(chǔ)單元,以備另用。

  (4) 程序起始地址偽指令——ORG

  格式:ORG〈表達(dá)式〉

  其含義是指定下面目標(biāo)程序的起始地址為表達(dá)式值。表達(dá)式常為一個(gè)雙字節(jié)地址數(shù)。

  例如:

  ORG 0100H

  START: MOV A,#00H

  匯編號(hào),從START開始的目標(biāo)程序,其起始地址從0100H開始。由于表達(dá)式0100H是立即型地址碼所以隱含地指明該程序段屬絕對(duì)地址段。

  一個(gè)源程序中,可能有多處設(shè)置程序段起始地址,因此定義地址空間應(yīng)從低地址端向高地址設(shè)置,不能重疊,否則將出錯(cuò)。若程序段前無(wú)ORG偽指令,則匯編后的目標(biāo)程序?qū)?000H地址開始或緊接前段程序后。若表達(dá)式為浮動(dòng)程序段中定義過(guò)的標(biāo)號(hào),則由該標(biāo)號(hào)定義的目標(biāo)程序段首地址也將之浮動(dòng)。

  (5) 匯編結(jié)束偽指令——END

  END偽指令是匯編語(yǔ)言源程序結(jié)束為標(biāo)志。源程序在匯編過(guò)程中執(zhí)行完END偽指令,即結(jié)束偽指令,為調(diào)試方便,可根據(jù)調(diào)試需要而設(shè)置。它有兩種格式:

  格式1:〈標(biāo)號(hào):〉END〈表達(dá)式〉

  格式2:〈標(biāo)號(hào):〉END

  或者 END

  其中標(biāo)號(hào)不是必需的,有無(wú)表達(dá)式的區(qū)別在于前者在匯編結(jié)束后立即轉(zhuǎn)向由表達(dá)式指定的起始地址開始執(zhí)行程序。因此,只需在程序運(yùn)行的入口處和END后的表達(dá)式以同一個(gè)標(biāo)號(hào)設(shè)置,當(dāng)匯編完源程序后就自動(dòng)轉(zhuǎn)向由標(biāo)號(hào)指定的入口處開始執(zhí)行。表達(dá)式也可以入口入的絕對(duì)地址,后者則匯編結(jié)束后立即停機(jī)。

?
赤城县| 略阳县| 万州区| 锡林郭勒盟| 青岛市| 宜都市| 广汉市| 全南县| 新安县| 西华县| 靖边县| 寿阳县| 商城县| 鄂托克前旗| 和田县| 新巴尔虎右旗| 兴化市| 岢岚县| 陆河县| 滨州市| 民和| 清镇市| 新乡县| 丘北县| 卢氏县| 安乡县| 砀山县| 车致| 建始县| 巴青县| 庄河市| 宁阳县| 东源县| 兴海县| 利辛县| 中阳县| 从化市| 海原县| 百色市| 伊通| 石林|