AVR單片機一些學(xué)習(xí)筆記
下面是自己在學(xué)習(xí)AVR單片機時的學(xué)習(xí)經(jīng)驗,分享出來給大家,一起學(xué)習(xí)。
1、 AVR單片機采用RISC架構(gòu),8051單片機采用CISC架構(gòu)。前者速度為后者的2~4倍,為流水線操作指令。
2、 AVR單片機有32個通用寄存器(地址在RAM區(qū)從$0000開始到$001F),其中有6個(最后6個)合并為3個16位的X,Y,Z寄存器,用來存放地址指針,Z寄存器還可以尋址程序存儲器。
3、 哈佛結(jié)構(gòu),131條機器指令。
4、 延遲開機功能。
5、 內(nèi)部自帶RC振蕩器,可提供1/2/4/8MHZ的工作時鐘。
6、 FLASH+EEPROM+SRAM+SPI+USART+TWI+PWM+RTC+10位ADC+模擬比較器+JTAG。
7、 堆棧指針向下增長,51單片機向上增長。
8、 程序存儲器按字來訪問,擦除和寫入以頁為單位。
9、 復(fù)位時,所有的I/O口處于沒有上拉電阻的輸入狀態(tài)(高阻)。
10、 沒有中斷優(yōu)先級控制寄存器,由中斷向量表的地址決定優(yōu)先級(地址越低,優(yōu)先級越高)。
11、 PORTB |= (12)D2置1,PORTB= ~(16)D6清零。
12、 FLASH分兩段:引導(dǎo)程序段(BootProgram Section)+應(yīng)用程序段(Application Program Section)。BPS中可以使用SPM指令實現(xiàn)IAP功能。
13、 中斷向量表位于FLASH程序存儲器的最前面。
14、 I/O空間為連續(xù)的64個I/O寄存器空間,在數(shù)據(jù)存儲器空間的映射地址為$0020~$005F。訪問I/O寄存器的兩種方式:IN,OUT指令+對SRAM訪問指令。
15、 單獨的AVcc用于給PORTA的ADC做AREF。
16、 13位的程序計數(shù)器PC,正好滿足16KB的尋址。
17、 AVR對片內(nèi)SRAM的訪問需要2個時鐘周期。
19、 狀態(tài)寄存器SREG:
I:全局中斷使能位。置1,CPU可以響應(yīng)中斷;清0,CPU禁止響應(yīng)中斷。清0時,單獨的中斷觸發(fā)控制的值保持不變。并且中斷響應(yīng)后,I由硬件清0(手動置1實現(xiàn)中斷嵌套),由RETI置1再響應(yīng)其他中斷。
T:位復(fù)制存儲。BLD,BST。可以將通用寄存器組中的任何一位復(fù)制到T中,反過來也可以。
H:半進位標(biāo)志位。用于BCD的運算。
S:符號標(biāo)志位。S=N⊕V。不管溢出與否(溢出后N的表示就不正確了!),但S總是能正確的表示計算結(jié)果的符號。
V:2的補碼溢出標(biāo)志位。溢出時,N取反才是真正的結(jié)果符號。
N:負數(shù)標(biāo)志位。直接取自運算結(jié)果的最高位。
Z:零值標(biāo)志位。運算結(jié)果為0,置1。
C:進/借位標(biāo)志。
20、 MCUCSR可以查看復(fù)位原因。
21、 掉電檢測(BOD)復(fù)位
22、 在FLASH的$0000H存放的是一條JMP或者RJMP指令,用來跳轉(zhuǎn)到正式代碼入口。$0002H~0028H(針對中斷向量為一個字的,如果中斷向量為兩個字$0002H~0050H)存放的是中斷向量表,20個中斷口算上第一個復(fù)位中斷為21個>,主程序開始在$002AH。
23、 硬件開發(fā)工具:軟件模擬仿真器,實時在板仿真器(ICE),實時在片仿真器(JTAG)。
24、 每組I/O口配置三個寄存器用來表征他們的狀態(tài):方向控制寄存器DDRx(Data Direction Register),數(shù)據(jù)寄存器PORTn,輸入引腳寄存器PINx。
評論