<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          重溫51單片機(jī)

          作者: 時(shí)間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
          今天在圖書館看來一上午的書。。把51的一點(diǎn)知識(shí)順便記了一下。。。感覺很好。。。尤其是匯編那里。。對(duì)學(xué)習(xí)STM32有幫助。。。

          時(shí)鐘

          本文引用地址:http://www.ex-cimer.com/article/201611/321965.htm

          片內(nèi)時(shí)鐘模式;由XTAL1和XTAL2外接石英晶體和震蕩電容

          片外時(shí)鐘模式;對(duì)于普通的8051,外部時(shí)鐘由XTAL2直接送到單片機(jī)內(nèi)部,XTAL1應(yīng)直接接地,而且XTAL2引腳的邏輯電平不是TTL電平,應(yīng)外接上拉電阻。對(duì)于CMOS型單片機(jī),其時(shí)鐘發(fā)生器的信號(hào)取自于反相放大器的輸入端,因此,外部時(shí)鐘信號(hào)應(yīng)該從XTAL1引腳輸入,而XTAL2需要懸空。

          特殊功能寄存器區(qū),如果某個(gè)特殊功能寄存器的地址可以被8整除,那么這個(gè)寄存器便可以進(jìn)行位尋址。在位尋址指令中,可以用“寄存器名.位”“字節(jié)地址.位”“位地址”“位名稱”

          如“B.5”表示寄存器B的第五位。其中引腳p0,p1,p2,p3等都可以位尋址。

          單片機(jī)的指令時(shí)序

          拍;振蕩脈沖的周期,為51系列的最小時(shí)序單元。時(shí)鐘周期;時(shí)鐘周期是單片機(jī)CPU中的最基本的時(shí)間單元在一個(gè)時(shí)間周期內(nèi),CPU僅完成一個(gè)最基本的動(dòng)作,拍經(jīng)過二分頻,便可得到單片機(jī)的時(shí)鐘信號(hào),由于是二分頻,因此一個(gè)時(shí)鐘周期包含兩個(gè)拍。

          機(jī)器周期;一個(gè)機(jī)器周期由6個(gè)時(shí)鐘周期構(gòu)成,也就是12個(gè)拍組成。指令周期;指令周期執(zhí)行一條指令所需要的時(shí)間,不同指令需要不同的指令周期。

          掉電保護(hù);

          1當(dāng)檢測(cè)到電源下降時(shí),觸發(fā)外部中斷2在中斷服務(wù)子程序中將外部的RAM中的有用數(shù)據(jù)送到內(nèi)部的RAM中保護(hù),然后對(duì)電源控制寄存器PCON進(jìn)行設(shè)置3切換備用電源,備用電源只為單片機(jī)內(nèi)部RAM和專用寄存器提供維持電流,是這些重要數(shù)據(jù)不丟失,而整個(gè)外部電路因?yàn)殡娫吹闹袛喽V构ぷ鳎?strong>時(shí)鐘電路停止震蕩,CPU也停止工作。4當(dāng)電源恢復(fù)時(shí),備用電源也要繼續(xù)工作10ms左右,以保證外部電路達(dá)到穩(wěn)定狀態(tài)。

          專用寄存器

          程序計(jì)數(shù)器PC

          相當(dāng)于一個(gè)搬運(yùn)工,用來不斷的將指令搬運(yùn)過來執(zhí)行,由16個(gè)觸發(fā)器構(gòu)成,是一個(gè)16位二進(jìn)制的程序地址寄存器,程序計(jì)數(shù)器PC的編碼范圍是0000H~FFFFH,尋址范圍為64KB.

          累加器A8位二進(jìn)制存儲(chǔ)器

          寄存器B8位二進(jìn)制存儲(chǔ)器一般和A一起使用,用于乘除法操作指令。

          程序狀態(tài)寄存器PSW8位存儲(chǔ)器

          數(shù)據(jù)指針DPTR用于數(shù)據(jù)存儲(chǔ)器的操作,由8位寄存器DPH和DPL組合而成,是一個(gè)典型的16位寄存器。DPH為數(shù)據(jù)指針的高8位,DPL為數(shù)據(jù)指針的低8位。

          匯編語言;

          起始偽指令ORG格式:[標(biāo)號(hào):] ORG 16位地址

          在這,16位地址便是匯編程序塊或者數(shù)據(jù)塊存放的起始地址,如果省略O(shè)RG偽指令,則單片機(jī)程序代碼從默認(rèn)的0000H單元塊開始存放。

          字節(jié)保存?zhèn)沃噶頓B格式[標(biāo)號(hào):] DB8位字節(jié)數(shù)據(jù)表其中8位字節(jié)數(shù)據(jù)表可以是一個(gè)或者多個(gè)字節(jié)數(shù)據(jù)、字符串或者表達(dá)式。在數(shù)據(jù)表中各項(xiàng)用‘,’分隔,一個(gè)數(shù)據(jù)項(xiàng)占一個(gè)存儲(chǔ)單元,所有的數(shù)據(jù)項(xiàng)從標(biāo)號(hào)指定的地址單元開始,將數(shù)據(jù)表中的字節(jié)數(shù)據(jù)按順序依次保存。數(shù)據(jù)項(xiàng)可以采用十進(jìn)制、二進(jìn)制、或者十六進(jìn)制數(shù)據(jù)表示。例如

          ORG1100H

          DATA1:DB51H,67H,61,90H

          DATA2:DB110B,‘B’

          字節(jié)數(shù)據(jù)將從1100H地址進(jìn)行保存字節(jié)數(shù)據(jù)。

          內(nèi)存單元

          內(nèi)容

          內(nèi)存單元

          內(nèi)容

          1100H

          51H

          1103H

          90H

          1101H

          67H

          1104H

          110B=06H

          1102H

          61=33H

          1105H

          ‘B’=42H

          字保存?zhèn)沃噶頓W用于單片機(jī)內(nèi)存中保存雙字節(jié)數(shù)據(jù)表,只能對(duì)程序存儲(chǔ)器進(jìn)操作。

          格式[標(biāo)號(hào):]DW16位字?jǐn)?shù)據(jù)表

          其中可以是一個(gè)或者多個(gè)字節(jié)數(shù)據(jù)、字符串或者表達(dá)式。在數(shù)據(jù)表中各項(xiàng)用‘,’分隔,一個(gè)數(shù)據(jù)項(xiàng)占一個(gè)存儲(chǔ)單元,所有的數(shù)據(jù)項(xiàng)從標(biāo)號(hào)指定的地址單元開始,將數(shù)據(jù)表中的字節(jié)數(shù)據(jù)按順序依次保存。需要注意的是,16位數(shù)據(jù)要占用兩個(gè)單元的存儲(chǔ)器,高8位數(shù)據(jù)存儲(chǔ)到低地址字節(jié),低八位數(shù)據(jù)存入到高地址字節(jié)。例如;

          ORG1000H

          DATA1:DW27AEH, 5CH

          字節(jié)數(shù)據(jù)從1000H地址開始保存字?jǐn)?shù)據(jù)。

          內(nèi)存單元

          內(nèi)容

          內(nèi)存單元

          內(nèi)容

          1000H

          21H

          1002H

          00H

          1001H

          AEH

          1003H

          5CH

          空間預(yù)留偽指令DS用于在單片機(jī)內(nèi)存中劃分出一定的存儲(chǔ)空間用作備用區(qū)域,只能對(duì)程序存儲(chǔ)器進(jìn)行操作,[標(biāo)號(hào):]DS表達(dá)式這里,表達(dá)式表達(dá)了從標(biāo)號(hào)指定的地址單元開始,保存存儲(chǔ)器單元的個(gè)數(shù)。

          ORG1100H

          BUF:DS08H

          即從地址1100H開始劃分出8個(gè)內(nèi)存單元,從1108H之后的單元才可以進(jìn)行其他操作。

          位變量偽指令BIT用于給位地址定義一個(gè)字符名稱

          字符名稱BIT位地址

          如;P1BITP2.4

          P2BITP2.6

          在這里,位地址P2.4和P2.6賦給P1和P2 ,此后,遇到P1,P2的地方,就相當(dāng)于使用P2.4和P2.6。

          單片機(jī)指令的尋址方式

          立即尋址直接尋址寄存器尋址寄存器間接尋址變址尋址相對(duì)尋址和位尋址

          立即尋址相當(dāng)于直接給出操作數(shù),此時(shí)的操作數(shù)成為立即數(shù)。前面用“#”來標(biāo)示

          十六進(jìn)制結(jié)尾用H十進(jìn)制結(jié)尾用D八進(jìn)制結(jié)尾用O二進(jìn)制結(jié)尾用B

          典型尋址

          MOVA ,#37H//把立即數(shù)37H這個(gè)數(shù)本身送到累加器A中,指令操作碼74H,操作數(shù)37H

          MOVDPTR,#1122H//其中1122H為16位立即數(shù),該指令將立即數(shù)的高8位11H送入到DPH中,將低8位22H送入到DPL中,操作碼是90H,操作數(shù)是1122H。

          直接尋址就是將操作數(shù)存放的地址告訴指令單片機(jī)中可以直接尋址的兩類存儲(chǔ)空間,1片內(nèi)RAM的低128個(gè)字節(jié)單元其地址00H~7FH.2特殊功能寄存器,其直接地址也可以用特殊功能寄存器的符號(hào)名稱表示,直接尋址是訪問特殊功能寄存器的唯一方式。

          例如

          MOVA,2EH

          這里,“2EH”就是直接尋址的地址,該指令的操作碼是E5H,功能是把內(nèi)部RAM地址為2EH中的內(nèi)容傳給累加器A。

          寄存器尋址就是告訴指令操作數(shù)所存放的寄存器,此時(shí)寄存器的內(nèi)容就是操作數(shù)。由于寄存器存位于CPU內(nèi)部,所以寄存器尋址速度比其他幾種方式快。

          MOVA,R1//就是將寄存器R1的數(shù)據(jù)傳送給累加器A

          寄存器間接尋址相當(dāng)于繞了一個(gè)大彎,此時(shí)數(shù)據(jù)存放到RAM中,而該RAM的地址放在寄存器中,這樣通過訪問寄存器來獲得RAM中的操作數(shù)的尋址方式就是寄存器間接尋址。

          單片機(jī)可以利用此方式尋址的空間:

          1片內(nèi)RAM的低128字節(jié)單元,此時(shí)需要R0,R1作為間接尋址的寄存器

          2片外RA M,如果用R0,R1作為間接尋址的寄存器,可以尋址256個(gè)單元。如果采用16位的DPTR作為間接尋址的寄存器,可以尋完整個(gè)外部RAM 64KB地址空間。

          在尋址指令中,尋址的寄存器錢需要加“@”標(biāo)示符,這樣就和寄存器尋址區(qū)分開。

          變址尋址提供了16位地址的尋址能力,它采用基址寄存器加變址寄存器方式來尋址,其中基址寄存器為DPTR或者PC,變址寄存器為累加器A,用于存放地址偏移量。

          變址尋址的兩種形式;

          MOVA,@A+DPTR//功能是將累加器A的內(nèi)容和數(shù)據(jù)指針DPTR的內(nèi)容相加形成操作數(shù)的地址,即程序存儲(chǔ)器的16位地址。

          MOVA,@A+PC//功能是將累加器A的內(nèi)容和PC的內(nèi)容相加形成操作數(shù)的地址,即程序存儲(chǔ)器的16位地址。

          相對(duì)尋址是根據(jù)指定地址的偏移量,然后從當(dāng)前PC值跳轉(zhuǎn)到偏移量所指向的地址的方式,這里的地址偏移量為帶符號(hào)的8位二進(jìn)制數(shù),其取值范圍是-128~+127,因此相對(duì)尋址可以尋址當(dāng)前的PC的-128~+127之間的某段程序存儲(chǔ)器。

          例如SJMP33H//本指令占用兩個(gè)字節(jié),因此PC指針的當(dāng)前值為PC+2.地址偏移量是33H,則程序跳轉(zhuǎn)的地址為PC+2+33H.

          位尋址是特別為位操作區(qū)域提供的尋址方式,在指令中給出位地址即可。

          51單片機(jī)中,可以位尋址的區(qū)域;

          1片內(nèi)RAM的20H~2FH單元,共16*8=128位,可以直接使用位地址來表示,例如,20H單元的0~7位的位地址是00H~07H,也可以使用RAM地址加序位號(hào)表示,例如2AH.1表示2AH單元的D1位。

          2可位尋址的特殊功能寄存器相應(yīng)位,這些為均有特定的名稱,因此可以直接采用位名稱來表示,或者采用寄存器符號(hào)加位序號(hào)表示,例如PSW.3表示PSW寄存器中的D3位。

          典型表示;

          MOVC,2AH.5//把地址2AH中的第六位D5,即2AH.5的值(0或1)傳送到位累加器CY中。



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();