CPU包括運(yùn)算器和控制器,運(yùn)算器主要包括算術(shù)運(yùn)算、邏輯運(yùn)算和位運(yùn)算,控制邏輯包括定時(shí)和控制、指令寄存器、譯碼器、地址指針和程序計(jì)數(shù)器PC。
CPU外還有時(shí)鐘電路、ROM、RAM、定時(shí)/計(jì)數(shù)器、并行IO、串行接口、中斷系統(tǒng)。
1.IO口相關(guān)知識(shí)
這些IO口實(shí)際上就是GPIO,它是單片機(jī)內(nèi)的特殊功能寄存器SFR里面的4個(gè)8bit的寄存器。
IO可以作為輸出或輸入。
IO作為輸出時(shí)自帶鎖存功能,也就是寫(xiě)1后,輸出一直是1(鎖存器上的值),引腳上可能被外部電路影響而不是1了。
單片機(jī)4組IO口,P0輸出時(shí)需要上拉;P1/P2/P3是準(zhǔn)雙向口。
有些口還可以作為數(shù)據(jù)或地址輸入輸出口。P1只能作為雙向口,P0擴(kuò)展數(shù)據(jù)和地址,P2擴(kuò)展地址高8位,P3有第二特殊功能。
注意讀引腳和讀鎖存器的區(qū)別:因?yàn)橛袝r(shí)候輸出設(shè)定為1,但是可能被外部電路鉗制到低電平,所以當(dāng)設(shè)置P0=1時(shí)想再設(shè)定P0=2時(shí),就用讀鎖存器,這樣就是1+1,不然就是讀引腳可能就會(huì)變成0+1.常見(jiàn)的讀鎖存器的指令是:在使用ANL、ORL、XRL、CLR、SETB等位操作指令對(duì)I/O口進(jìn)行按位修改時(shí),單片機(jī)將首先讀回端口鎖存器的值,送入ALU進(jìn)行相應(yīng)位修改,再寫(xiě)回端口寄存器,通過(guò)驅(qū)動(dòng)電路輸出給外圍電路。
讀引腳時(shí)需要先想端口寫(xiě)1,把T2截止,這樣讀到才是外部真實(shí)電平。
雙向IO口/準(zhǔn)雙向IO口的區(qū)別
標(biāo)準(zhǔn)雙向IO口的特點(diǎn)有兩條:
1、在輸出模式下,可以輸出高低電平;
2、在輸入模式下,如果沒(méi)有接外部電路,應(yīng)呈現(xiàn)高阻態(tài)。
對(duì)于51單片機(jī)的P1、P2、P3口,由于有內(nèi)部上拉電阻,輸入模式下不可能出現(xiàn)高阻態(tài),所以稱之為準(zhǔn)雙向IO口。而P0口作為IO口工作時(shí),如果不加上拉電阻就無(wú)法輸出高電平;而加了上拉電阻,輸入時(shí)又不會(huì)出現(xiàn)高阻態(tài),所以也是準(zhǔn)雙向IO口。
單片機(jī)的P0口如果工作在第二功能狀態(tài)下,則是雙向IO口。當(dāng)P0口工作在第二功能狀態(tài)下,兩個(gè)晶體管都可以工作。如果上面的晶體管斷開(kāi),下面的導(dǎo)通,就輸出低電平;反之上面的導(dǎo)通下面的斷開(kāi),就輸出高電平并且不需要上拉電阻;如果兩個(gè)晶體管都斷開(kāi),則可以作為輸入,并且在沒(méi)有外界電路時(shí)呈現(xiàn)高阻態(tài)。所以是雙向IO口。
注:灌電流比拉電流能通過(guò)更大的電流;點(diǎn)亮LED一般用灌電流方式。
參考:
2.中斷
常用術(shù)語(yǔ):內(nèi)部中斷、外部中斷、中斷響應(yīng)、中斷服務(wù)程序、中斷優(yōu)先級(jí)、中斷嵌套、中斷源、中斷矢量。
中斷作用:①快速的CPU和慢速外部設(shè)備的速度配合;②實(shí)現(xiàn)實(shí)時(shí)控制;③實(shí)時(shí)故障發(fā)現(xiàn)和處理;④實(shí)時(shí)干預(yù)計(jì)算機(jī)工作。
單片機(jī)六個(gè)中斷源:外部0、外部1、定時(shí)器0/1/2、串口。
外部中斷可以設(shè)置為電平觸發(fā)或邊沿觸發(fā)。
四個(gè)與中斷有關(guān)的寄存器:TCON、SCON、IP、IE.
串行中斷標(biāo)志需要軟件清除。
若是外部中斷用電平觸發(fā),若是電平觸發(fā)不撤銷(xiāo),跳出中斷程序后會(huì)再次進(jìn)入中斷程序。
中斷響應(yīng)受阻斷:正在執(zhí)行RETI或訪問(wèn)IE、IP,必須執(zhí)行完該指令,并執(zhí)行下一條指令后才能響應(yīng)中斷(如強(qiáng)一行,電平觸發(fā)會(huì)每次執(zhí)行一條主程序)。
3.定時(shí)器和計(jì)數(shù)器
51是兩個(gè)寄存器,52是三個(gè)寄存器,都是16位的。
工作方式寄存器TMOD、控制寄存器TCON
4.存儲(chǔ)資源
內(nèi)部RAM,一般為128B,其中包括了可為尋址的16B,用C 語(yǔ)言時(shí)都是編譯器在幫忙分配。RAM是用于存放運(yùn)行時(shí)臨時(shí)數(shù)據(jù)的。
內(nèi)部ROM,一般是4KB,用于存放程序的,也就是keil編譯出來(lái)的bin文件需要存儲(chǔ)到單片機(jī)里面。
外部存儲(chǔ)器,通過(guò)IO口,可以擴(kuò)展外部RAM最大64KB,外部ROM最大64KB。
評(píng)論
查看更多