❶ 單片機中的主時鍾,輔助時鍾,子系統時鍾各有什麼作用啊
輔助時鍾ACLK用於低速外設的,可以選作外圍模塊的時鍾信號;
主時鍾MCLK用於CPU和系統;
子系統時鍾用於高速外圍模塊。
時鍾是同步單片機系統各個部件工作時序的最小時間單位,時鍾通過CPU控制,產生其他與時鍾保持一定關系的同步控制信號,協調各部件的工作時序,沒有時鍾系統就崩潰了。
如CPU與存儲器(RAM)傳輸數據,地址(A0 ~ Ax)、數據 (D0 ~ Dx)、讀/寫 (R/W) 等信號就必須按照一定的時序出現在各自的匯流排上,否則就亂套了。
(1)單片機ax擴展閱讀:
系統主時鍾比較復雜,主要有以下三部分組成單元
(1)有兩個振盪器:內部8MHz的高速RC振盪器HSI和外部高速振盪器HSE;
(2)有三個時鍾源:HIS、HSE和鎖相環PLL;
(3)有一個倍頻器PLLMUL和一個AHB分頻器。
這些單元為系統提供了很寬范圍內的選擇的可能性。
❷ 單片機寄存器的定義
寄存器中存放的機器碼是用來控制各個管腳的
因此我們常常要在寄存器中寫入初值或者在程序運行中寫入
寄存器有固定地址的(01代碼)
但是我們在用的時候不用01代碼來寫入
因為我們也記不住
所以單片機事先已經定義好了相應的可讀的代碼供我們使用
比如:在單片機中總中斷為IE中的EA
其實EA是一個寄存器單元或者說它就代表了那個單元
我們如果相對那個寄存器操作只需要對EA就行了
比如EA=1,則總中斷打開
我們不知道原始的地址01代碼究竟是多少
就算知道也沒有用
因為無論C語言還是匯編都不能在01代碼的地址上寫入值的
❸ 請教下單片機中什麼叫埠位
在單片機中!每一個埠都對應一個bit位!我們可以直接操作單片機的埠!!
例如:P1^1 = 0;就是將P1埠的第二位拉低。P1^1 = 1;就是將P1埠的第二位拉拉高。
計算機中的操作數有三類:立即數(常數)、寄存器操作數、存儲器操作數,所以定址方式就是針對這三類操作數進行的。
立即數和寄存器操作數的定址比較簡單,對應的是立即定址和寄存器定址,比較多的是存儲器定址方式,有直接定址(指令中可以看到內存的地址)、寄存器間接定址(寄存器的內容作為內存的地址),從寄存器間接定址進一步發展就有:相對寄存器定址、基址變址定址和相對基址變址定址。
定址格式中,加方括弧的是地址,沒加方括弧的是操作數,比如:2000H是立即數,[2000H]是內存的地址;BX是寄存器BX裡面的數據,[BX]是BX的數據作地址。
1、MOV ES,AX 都是寄存器定址
2、ADD DS:[12H],AL 源:寄存器定址 目的:直接定址
3、SUB BX,1200H 源:立即定址 目的:寄存器定址
4、SHR AX,1 源:立即定址 目的:寄存器定址
5、MOV CX.LAB1[BX] 源:相對寄存器定址 目的:寄存器定址
6、SBB AX,[BX] 源:寄存器間接定址 目的:寄存器定址
7、OR DX,-360H[SI] 源:相對寄存器定址 目的:寄存器定址
8、ADC VAR1,CX 源:寄存器定址 目的:直接定址
9、XOR [DI],AX 源:寄存器定址 目的:寄存器間接定址
這只是給你復習單片機使用!具體源操作數指接收的數據 包括地址等。目的操作數指結果。
❹ 匯編每天1分鍾 (4) | 寄存器 AX、BX、CX、DX
我們從前面幾篇文章了解到數據、指令大部分是存儲在內存的,那麼CPU的寄存器是充當什麼角色呢?
寄存器就是你的口袋。身上只有那麼幾個,只裝最常用或者馬上要用的東西。
內存就是你的背包。有時候拿點什麼放到口袋裡,有時候從口袋裡拿出點東西放
在背包里。 —— 來自某乎網友的回答
匯編語言中的AX、BX、CX、DX作為CPU內部的通用寄存器中的數據寄存器助記符,用來存放參與運算的數據或是存儲運算的結果。
AX:寄存器稱為累加器,常用於存放算術、邏輯運算中的操作數或結果。另外,所有的I/O指令都要使用累加器與外設介面傳遞數據。
BX:寄存器稱為基址寄存器,常用來存放訪問內存時的地址。
CX:寄存器稱為計數寄存器,在循環、串操作指令中用作計數器。
DX:寄存器稱為數據寄存器,在寄存器間接定址中的I/O指令中存放I/O埠的地址。
AX、BX、CX、DX每個寄存器可以將高、低8位分別作為獨立的8位寄存器使用。其中的高8位用AH、BH、CH、DH表示,低8位用AL、BL、CL、DL表示。
AX = AH + AL
BX = BH + BL
CX = CH + CL
DX = DX + DL
H是英文單詞high(高)的簡寫,L是LOW(低)的簡寫,因此AH表示高8位寄存器,AL位為低8位寄存器。
如圖1-1所示,寄存器AX中的數據為1B01H,其中1B存放在AH(高8位),01存放在AL(低8位)。
簡單的單片機的寄存器只能放下8位(bit),即1byte。區分低8位和高8位,可以兼容簡單的單片機。
掛載masm5目錄,並執行debug:
在debug命令下,執行r命令觀察ax寄存器的值:
執行a命令,輸入mov ax,1B01,准備把1B01賦值給ax:
執行t命令,確認執行mov ax,1B01:
如圖1-5所示,ax的數據由0000變更為1B01。
繼續a命令,我們嘗試給AH、AL賦值:
如圖1-6所示,我們給AH賦值1F,AL賦值02,最終AX的值由1B01變更為1F02。
從上文知曉AH、AL為8位寄存器(一個位元組,8bit),我們來試試將16位賦值給AH、AL看看會出現什麼情況:
如圖1-7所示,執行過程中報了錯誤,AX的值沒有發生變更。因此得出結論,8位寄存器只允許進行8位的賦值。
❺ lx51與BL51,AX51與A51,CX51與C51分別有什麼區別
詳見A51手冊的附錄D:匯編器的差異<br /><br />A51與BL51:<br />針對傳統8051單片機的開發工具,最大支持32×64KB Code Bank。<br /><br />AX51與LX51:<br />針對傳統8051單片機以及部分衍生型號的開發工具,最大支持外擴16 MB的xdata或code。AX51匯編器是A51匯編器的超集,兩者的主要差異包括:<br />1.AX51中的數值默認為32位,A51是16位;<br />2.AX51不包含8051的默認SFR定義;<br />3.AX51支持更多的特殊符號,例如ECALL等;<br />4.生成的目標文件不同。AX51生成的目標文件為OMF-251/51MX格式,不受傳統OMF-51格式中每個模塊不得超過256個外部符號及段的限制。
❻ 8051單片機中用於存放中間運算結果的存儲器稱為什麼
學單片機這個都不知道啊,多看看手冊。
51單片機 ROM 是程序存儲器
RAM是用戶定義的數據變數,是用來存放實時數據和運算過程中產生的一些中間變數。還要作為堆棧使用。
❼ 匯編中ax與a區別
是不一樣的。
ax 與a雖然都是累加器。但ax是16位cpu中的累加器,佔16位,兩個位元組,可分為高低位元組兩部分,即ah和al。
a是單片機中的累加器,佔8位,一位元組,可以進位定址。
這兩個寄存器在使用中功能有很大的區別,你仔細看看單片機中的定址指令就應該差不多能區分出來。
❽ 常見的單片機有哪些類型
常見的有以下幾種
1、傳統的51系列單片機。
2、STC系列的增強型單片機,是在51的基礎上增強的。
3、AVR系列,以ATMEL公司的ATmega16為代表。
4、PIC系列單片機。
5、STM8系列單片機,性價比很高。
6、STM32系列單片機,性價比很高,也屬於ARM,學會的話以後上手ARM-Cortex系列很快
7、飛思卡爾系列的單片機
8、MSP430單片機。
❾ 17、80C51單片機中,唯一一個用戶不能直接使用的寄存器是什麼
程序計數器 PC ,好像不能給pc賦值,唯一用到pc的好像是匯編中的movc A,@A+pc
❿ 單片機問題求解答
5.訪問片外RAM只有寄存器間接定址MOVX A,@DPTR,MOV A,@RI,MOV @DPTR.A,MOV @RI,A,只有這四個指令
6.
1. MOV AX, ES:[1000H]源操作數的定址方式是? 直接定址
2. MOV AX, BAH[DI]源操作數的定址方式是? 寄存器相對定址
3. MOV AX, COUNT[BX]源操作數的定址方式是? 寄存器相對定址
4. MOV AX, COUNT[AX]源操作數的定址方式是?
MOV AX, COUNT[BX]寄存器相對定址,MOV AX, COUNT[AX]是錯的
5. MOV [AX], COUNT[BX][DI]源操作數的定址方式是? 相對基址變址定址
6. MOV [BX], COUNT[BX][DI]源操作數的定址方式是? 相對基址變址定址
7. MOV AX, COUNT[BX][BP]源操作數的定址方式是? 錯的
8. MOV AX, COUNT[BX][SI]源操作數的定址方式是?相對基址變址定址
7.必須採用寄存器間接定址