• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      簡(jiǎn)析80C51單片機(jī)的數(shù)據(jù)傳送類指令

      2020-01-08 18:15:47許一洲
      通信電源技術(shù) 2020年9期
      關(guān)鍵詞:累加器字節(jié)寄存器

      許一洲

      (西北民族大學(xué) 電氣工程學(xué)院,甘肅 蘭州730106)

      0 引 言

      80C51單片機(jī)指令系統(tǒng)共有111條指令,由操作碼和操作數(shù)兩部分構(gòu)成[1]。這些指令包括數(shù)據(jù)傳送類指令、算術(shù)運(yùn)算類指令、邏輯運(yùn)算類指令、控制轉(zhuǎn)移類指令和位操作類指令[2]。其中,數(shù)據(jù)傳送類指令在單片機(jī)中使用頻繁,除了一般傳送指令外,還有4類特殊傳送指令。

      1 一般傳送類指令

      一般傳送類指令都是采用MOV操作符,可以分為16位傳送和8位傳送。

      16位傳送指令僅僅只有一條,功能是將源操作數(shù)data16送入目的操作數(shù)DPTR中,如:

      MOV DPTR,#data16;

      當(dāng)源操作數(shù)data16為3456H時(shí),執(zhí)行以上操作后,(DPH)=34H,(DPL)=56H。這條指令一般用于給DPTR賦予ROM中的數(shù)據(jù)表的表頭地址,也可以是某一片外RAM緩沖區(qū)的首地址或者是擴(kuò)展的片外接口地址。

      8位傳送指令能夠?qū)⒃醋止?jié)的內(nèi)容拷貝至目的字節(jié),且源字節(jié)的內(nèi)容不會(huì)變化,屬于字節(jié)傳送。目的字節(jié)可以是累加器A、寄存器Rn或Ri、片內(nèi)RAM單元地址及SFR地址direct。源字節(jié)中除了上述4類以外,8位立即數(shù)#data也可以作為源字節(jié)。以目的字節(jié)為準(zhǔn),將8位傳送指令分成4類。

      1.1 以累加器A為目的字節(jié)

      以累加器A為目的操作數(shù)的指令使用最頻繁,其指令可以構(gòu)造成以下4種,如:

      MOV A,Rn;

      MOV A,direct;

      MOV A,@Ri;

      MOV A,#data;

      累加器A作為目的字節(jié),執(zhí)行后源字節(jié)即可送入累加器A。

      1.2 以Rn為目的

      由于目的字節(jié)為工作寄存器,因此源字節(jié)不能采用工作寄存器及其間址方式尋址。它的指令有以下3種,如:

      MOV Rn,A;

      MOV Rn,direct;

      MOV Rn,#data;

      指令執(zhí)行后,源字節(jié)即可送入到工作寄存器Rn中。

      1.3 以direct為目的

      由于direct也可以作為源字節(jié)(這里用direct1表示),因此其構(gòu)造有5種方式,如:

      MOV direct,A;

      MOV direct,Rn;

      MOV direct,direct1;

      MOV direct,@Ri;

      MOV direct,#data;

      執(zhí)行指令后,源字節(jié)即可送入direct中。

      1.4 以@Ri為目的

      由于目的字節(jié)采用寄存器間址,因此源字節(jié)不能采用寄存器及其間址尋址,如:

      MOV @Ri,A;

      MOV @Ri,direct;

      MOV @Ri,data;

      2 特殊傳送指令

      由于操作符不同,將其他不是MOV操作符指令稱為特殊傳送指令,如MOVC、MOVX、PUSH、POP、XCH、XCHD以及SWAP??蓪⑦@些特殊傳送指令分為ROM查表、外部RAM讀/寫、堆棧操作和交換指令4種。

      2.1 讀取ROM中常數(shù)表的表項(xiàng)指令MOVC

      ROM中通常存放兩類內(nèi)容:一是單片機(jī)執(zhí)行的程序代碼;二是固定不變的常數(shù)。因此,訪問(wèn)ROM實(shí)際上指的是讀取ROM中的常數(shù)表的表項(xiàng),簡(jiǎn)稱查表,需經(jīng)過(guò)累加器來(lái)完成。使用MOVC指令,可以由DPTR或PC內(nèi)容為基址。

      (1)以DPTR內(nèi)容做基址時(shí),如:

      MOVC A,@A+DPTR;

      需要注意,在執(zhí)行指令時(shí),需要使累加器A的內(nèi)容與DPTR的內(nèi)容16位無(wú)符號(hào)數(shù)相加,作為16位要訪問(wèn)的ROM地址,最后將該地址單元的內(nèi)容送到累加器A中。例如,(DPTR)=3000H、(A)=40H時(shí),最終結(jié)果A為3040H。

      (2)以PC內(nèi)容為基址時(shí),如:

      MOVC A,@A+PC;

      執(zhí)行該指令的時(shí)候,要注意PC內(nèi)容會(huì)自動(dòng)加1,然后與累加器A的16位無(wú)符號(hào)數(shù)相加,作為訪問(wèn)的16位ROM地址,最后送入累加器A。當(dāng)上訴指令所在地址為1000H且(A)=30H時(shí),執(zhí)行后會(huì)將1031H單元內(nèi)容送入累加器A。

      2.2 讀寫片外RAM及接口單元數(shù)據(jù)的指令MOVX

      單片機(jī)的片外RAM或接口會(huì)經(jīng)常存放一些中間數(shù)據(jù),在訪問(wèn)片外RAM或接口操作時(shí)可以有讀和寫兩類,這時(shí)需要利用MOVX指令通過(guò)累加器來(lái)完成。

      (1)做讀操作時(shí),可以將DPTR、R0或R1作為間址尋址器讀片外RAM空間,如:

      MOVX A,@DPTR;

      MOVX A,@Ri;

      若間址寄存器內(nèi)容為3000H,(3000H)=30H,執(zhí)行指令后(A)=30H。

      (2)做寫操作時(shí),同樣可將DPTR、R0或R1作為間址寄存器寫外部RAM。與讀操作的區(qū)別僅僅在于傳輸方向不同,如:

      MOVX @DPTR,A

      MOVX @Ri,A;

      需要注意,片外擴(kuò)展的I/O口也要通過(guò)MOVX進(jìn)行數(shù)據(jù)輸入輸出。

      2.3 堆棧指令PUSH和POP

      堆棧是通過(guò)“后進(jìn)先出”的原則在片內(nèi)RAM中的一片存儲(chǔ)區(qū),固定的一端稱為棧底,活動(dòng)的一端稱為棧頂,利用指針SP指向棧頂位置。

      PUSH指令會(huì)先將SP的內(nèi)容加1,之后將直接地址操作數(shù)送入SP所指的單元,如:

      PUSH direct;

      若(SP)=07H,(40H)=88H, 執(zhí) 行“PUSH 40H”指令后,(SP)=08H,(08H)=88H。

      POP指令是先將SP所指向的單元送入指令中的直接地址單元,然后再將SP內(nèi)容減1,如:

      POP direct;

      若(SP)=5FH,(5FH)=90H, 執(zhí) 行“POP 70H”指令后,(70H)=90H,(SP)=5EH。

      2.4 數(shù)據(jù)交換指令XCH、XCHD和SWAP

      MOV類指令傳送只是將數(shù)據(jù)從源字節(jié)復(fù)制到目的字節(jié)的單向傳送。當(dāng)需要兩字節(jié)或兩半字節(jié)的雙向交換時(shí),需要利用數(shù)據(jù)交換指令,包括XCH、XCHD和SWAP。

      (1)XCH作為字節(jié)交換指令,具有以下3種構(gòu)造方式:

      XCH A,Rn;

      XCH A,direct;

      XCH A,@Ri;

      這3條指令均能實(shí)現(xiàn)操作數(shù)與累加器A內(nèi)容的互換,如執(zhí)行“XCH A,R0”,若(R0)=80H,(A)=20H,執(zhí)行后(A)=80H,(R0)=20H。

      (2)XCHD屬于半字節(jié)交換,功能是間址操作數(shù)的低半字節(jié)與累加器A的低半字節(jié)內(nèi)容互換如:

      XCHD A,@Ri;

      若(R0)=30H,(30H)=67H,(A)=20H,執(zhí)行“XCHD A,@R0”指令后,(A)=27H,(30H)=60H。

      (3)SWAP同樣屬于半字節(jié)交換,與XCHD不同的是,它是將累加器的高低4位互換,如:

      SWAP A;

      若(A)=31H,執(zhí)行以上指令后,(A)=03H。

      3 結(jié) 論

      現(xiàn)階段,單片機(jī)已被廣泛運(yùn)用于生產(chǎn)和生活中的各個(gè)領(lǐng)域。要熟練掌握單片機(jī),必須要熟悉單片機(jī)的操作指令。數(shù)據(jù)交換指令是單片機(jī)操作指令的一個(gè)重要組成部分,對(duì)其深入學(xué)習(xí),有助于進(jìn)一步使用和發(fā)展單片機(jī)技術(shù)。

      猜你喜歡
      累加器字節(jié)寄存器
      格上身份基簡(jiǎn)短關(guān)聯(lián)環(huán)簽名及其電子投票應(yīng)用
      密碼累加器研究進(jìn)展及應(yīng)用
      No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
      Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
      No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
      簡(jiǎn)談MC7字節(jié)碼
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      基于霍夫變換的工位點(diǎn)識(shí)別算法設(shè)計(jì)與實(shí)現(xiàn)
      用于時(shí)間延遲積分型圖像傳感器的流水采樣列級(jí)運(yùn)放共享累加器*
      高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
      城口县| 花垣县| 西乡县| 长治县| 太湖县| 大余县| 光泽县| 景洪市| 牡丹江市| 芷江| 祁东县| 丰原市| 淮阳县| 新宾| 博湖县| 桑日县| 凌云县| 济阳县| 宁安市| 大安市| 靖州| 太仓市| 金平| 德江县| 新郑市| 庆安县| 灵丘县| 县级市| 岱山县| 祁连县| 黄冈市| 四子王旗| 且末县| 庆阳市| 莲花县| 黄大仙区| 静宁县| 房山区| 永嘉县| 仁寿县| 大埔区|