重溫51單片機
時鐘
本文引用地址:http://www.ex-cimer.com/article/201611/321965.htm片內(nèi)時鐘模式;由XTAL1和XTAL2外接石英晶體和震蕩電容
片外時鐘模式;對于普通的8051,外部時鐘由XTAL2直接送到單片機內(nèi)部,XTAL1應(yīng)直接接地,而且XTAL2引腳的邏輯電平不是TTL電平,應(yīng)外接上拉電阻。對于CMOS型單片機,其時鐘發(fā)生器的信號取自于反相放大器的輸入端,因此,外部時鐘信號應(yīng)該從XTAL1引腳輸入,而XTAL2需要懸空。
特殊功能寄存器區(qū),如果某個特殊功能寄存器的地址可以被8整除,那么這個寄存器便可以進行位尋址。在位尋址指令中,可以用“寄存器名.位”“字節(jié)地址.位”“位地址”“位名稱”
如“B.5”表示寄存器B的第五位。其中引腳p0,p1,p2,p3等都可以位尋址。
單片機的指令時序
拍;振蕩脈沖的周期,為51系列的最小時序單元。時鐘周期;時鐘周期是單片機CPU中的最基本的時間單元在一個時間周期內(nèi),CPU僅完成一個最基本的動作,拍經(jīng)過二分頻,便可得到單片機的時鐘信號,由于是二分頻,因此一個時鐘周期包含兩個拍。
機器周期;一個機器周期由6個時鐘周期構(gòu)成,也就是12個拍組成。指令周期;指令周期執(zhí)行一條指令所需要的時間,不同指令需要不同的指令周期。
掉電保護;
1當(dāng)檢測到電源下降時,觸發(fā)外部中斷2在中斷服務(wù)子程序中將外部的RAM中的有用數(shù)據(jù)送到內(nèi)部的RAM中保護,然后對電源控制寄存器PCON進行設(shè)置3切換備用電源,備用電源只為單片機內(nèi)部RAM和專用寄存器提供維持電流,是這些重要數(shù)據(jù)不丟失,而整個外部電路因為電源的中斷而停止工作,時鐘電路停止震蕩,CPU也停止工作。4當(dāng)電源恢復(fù)時,備用電源也要繼續(xù)工作10ms左右,以保證外部電路達到穩(wěn)定狀態(tài)。
專用寄存器
程序計數(shù)器PC
相當(dāng)于一個搬運工,用來不斷的將指令搬運過來執(zhí)行,由16個觸發(fā)器構(gòu)成,是一個16位二進制的程序地址寄存器,程序計數(shù)器PC的編碼范圍是0000H~FFFFH,尋址范圍為64KB.
累加器A
寄存器B
程序狀態(tài)寄存器PSW
數(shù)據(jù)指針DPTR用于數(shù)據(jù)存儲器的操作,由8位寄存器DPH和DPL組合而成,是一個典型的16位寄存器。DPH為數(shù)據(jù)指針的高8位,DPL為數(shù)據(jù)指針的低8位。
匯編語言;
起始偽指令ORG格式:[標(biāo)號:] ORG 16位地址
在這,16位地址便是匯編程序塊或者數(shù)據(jù)塊存放的起始地址,如果省略O(shè)RG偽指令,則單片機程序代碼從默認的0000H單元塊開始存放。
字節(jié)保存?zhèn)沃噶頓B格式[標(biāo)號:] DB
字節(jié)數(shù)據(jù)將從1100H地址進行保存字節(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
格式[標(biāo)號:]
其中可以是一個或者多個字節(jié)數(shù)據(jù)、字符串或者表達式。在數(shù)據(jù)表中各項用‘,’分隔,一個數(shù)據(jù)項占一個存儲單元,所有的數(shù)據(jù)項從標(biāo)號指定的地址單元開始,將數(shù)據(jù)表中的字節(jié)數(shù)據(jù)按順序依次保存。需要注意的是,16位數(shù)據(jù)要占用兩個單元的存儲器,高8位數(shù)據(jù)存儲到低地址字節(jié),低八位數(shù)據(jù)存入到高地址字節(jié)。例如;
DATA1:DW
字節(jié)數(shù)據(jù)從1000H地址開始保存字數(shù)據(jù)。
內(nèi)存單元 | 內(nèi)容 | 內(nèi)存單元 | 內(nèi)容 |
1000H | 21H | 1002H | 00H |
1001H | AEH | 1003H | 5CH |
空間預(yù)留偽指令DS
BUF:
即從地址1100H開始劃分出8個內(nèi)存單元,從1108H之后的單元才可以進行其他操作。
位變量偽指令
字符名稱BIT位地址
如;P1
在這里,位地址P2.4和P2.6賦給P1和P2 ,此后,遇到P1,P2的地方,就相當(dāng)于使用P2.4和P2.6。
單片機指令的尋址方式
立即尋址直接尋址寄存器尋址寄存器間接尋址變址尋址相對尋址和位尋址
立即尋址
十六進制結(jié)尾用H
典型尋址
MOV
MOV
直接尋址就是將操作數(shù)存放的地址告訴指令
例如
MOV
這里,“2EH”就是直接尋址的地址,該指令的操作碼是E5H,功能是把內(nèi)部RAM地址為2EH中的內(nèi)容傳給累加器A。
寄存器尋址
MOV
寄存器間接尋址相當(dāng)于繞了一個大彎,此時數(shù)據(jù)存放到RAM中,而該RAM的地址放在寄存器中,這樣通過訪問寄存器來獲得RAM中的操作數(shù)的尋址方式就是寄存器間接尋址。
單片機可以利用此方式尋址的空間:
1片內(nèi)RAM的低128字節(jié)單元,此時需要R0,R1作為間接尋址的寄存器
2片外RA M,如果用R0,R1作為間接尋址的寄存器,可以尋址256個單元。如果采用16位的DPTR作為間接尋址的寄存器,可以尋完整個外部RAM 64KB地址空間。
在尋址指令中,尋址的寄存器錢需要加“@”標(biāo)示符,這樣就和寄存器尋址區(qū)分開。
變址尋址提供了16位地址的尋址能力,它采用基址寄存器加變址寄存器方式來尋址,其中基址寄存器為DPTR或者PC,變址寄存器為累加器A,用于存放地址偏移量。
變址尋址的兩種形式;
MOV
MOV
相對尋址
例如
位尋址
在51單片機中,可以位尋址的區(qū)域;
1片內(nèi)RAM的20H~2FH單元,共16*8=128位,可以直接使用位地址來表示,例如,20H單元的0~7位的位地址是00H~07H,也可以使用RAM地址加序位號表示,例如2AH.1表示2AH單元的D1位。
2可位尋址的特殊功能寄存器相應(yīng)位,這些為均有特定的名稱,因此可以直接采用位名稱來表示,或者采用寄存器符號加位序號表示,例如PSW.3表示PSW寄存器中的D3位。
典型表示;
MOV
評論