怎么樣學(xué)習(xí)單片機(jī)
怎么樣學(xué)習(xí)單片機(jī)
想要學(xué)好單片機(jī),一定要有C語文的基礎(chǔ),一定要付出一定的心血,下面是學(xué)習(xí)啦小編為你搜集到的相關(guān)內(nèi)容,希望對你有所幫助。
怎么樣學(xué)習(xí)單片機(jī)
初步確定學(xué)習(xí)目標(biāo):是學(xué)習(xí)簡單便宜的51呢,還是學(xué)習(xí)簡單但是性價比已經(jīng)不算太高的,但是功能強(qiáng)大穩(wěn)定可靠的avr,還是物美價廉的stm32,或者ARM9(可以跑系統(tǒng)了),再往上x86什么的
如果是學(xué)8位的單片機(jī),推薦一款仿真軟件proteus,支持的芯片很多比如atmel的最新版本是8.2,但是破解不大完全,不需要買硬件,寫好的程序可以直接在電腦上運(yùn)行,還可以與keil聯(lián)調(diào),推薦版本7.9或者7.8
可以先學(xué)51,51是單片機(jī)的鼻祖,圖書館找本51的基礎(chǔ)書來看,挑那種薄薄的,帶有較多的例子的,花個一兩天的時間看一下,然后按照書上的寫個點(diǎn)亮LED,嘗試寫下串口,中斷的程序,驅(qū)動一下數(shù)碼管之類的(當(dāng)然程序在proteus下都可以直接運(yùn)行的)。如果想深入51,后面可以忽略。
也可以先學(xué)AVR(我們做航模飛控很多就是用的額Avr,現(xiàn)在atmega系列的48比較便宜才5塊錢一片)(感謝@劉楊的提醒,avr不知有atmega還有atiny和at90)。avr與51的區(qū)別不多說,學(xué)習(xí)前期可以借助仿真軟件proteus,然后照著書上的例子寫一些程序。中間datasheet很重要,前期可以看中文,但是一定要養(yǎng)成看英文datasheet的習(xí)慣。如果想繼續(xù)停在avr上,那就可以嘗試移植硬實時操作系統(tǒng)ucos等,這里推薦一本書《深入淺出avr》,里面的例子講的挺簡單的
學(xué)習(xí)8位單片機(jī)之后,學(xué)習(xí)ARM相對會容易很多(也可以直接上arm,本人不反對,但是我確實看到很多上我們學(xué)校的tm4c123g(一款TI的demo板)的課,因為零基礎(chǔ)而聽不懂的),然后可以學(xué)習(xí)STM32了
單片機(jī)尋址方式
1. 寄存器尋址 寄存器尋址就是操作數(shù)存放在寄存器中,指令中指定的寄存器的內(nèi)容就是操作數(shù)。
2. 直接尋址 直接尋址方式就是在指令中直接給出操作數(shù)所在存儲單元的地址。此時,指令中操作數(shù)部分是操作數(shù)所在地址。
3. 立即數(shù)尋址 立即數(shù)尋址就是操作數(shù)在指令中直接給出,或者說指令操作碼后面立即給出一字節(jié)或兩字節(jié)操作數(shù)
4. 寄存器間接尋址 寄存器間接尋址是把指定寄存器的內(nèi)容作為操作數(shù)地址,該地址所指定的單元內(nèi)容作為操作數(shù)。為了區(qū)分寄存器尋址和寄存器間接尋址,在寄存器間接尋址中,所用到的寄存器的前面要加間接尋址符“@”。
例:寄存器R0內(nèi)容為30H,片內(nèi)RAM 30H單元的內(nèi)容為45H。
解:指令“MOV A,R0”的功能是將R0的內(nèi)容30H傳送給累加器A,指令執(zhí)行結(jié)果是累加器A中的內(nèi)容為30H。 指令“MOV A,@R0”的功能是將R0的內(nèi)容30H作為操作數(shù)的地址,根據(jù)這一地址找到內(nèi)部RAM 30H單元,將其內(nèi)容45H傳送至累加器A,指令執(zhí)行結(jié)果是累加器A中內(nèi)容為45H。
5. 變址尋址(基址寄存器+變址寄存器間接尋址) 例如:指令“MOVC A,@A+DPTR”是變址尋址。解:假設(shè)DPTR的內(nèi)容為2030H,累加器A的內(nèi)容為12H。 該指令的功能是將2030H和12H相加,得到2042H作為操作數(shù)地址,在程序存儲器中找到2042H單元,將其內(nèi)容送至累加器A。
6. 相對尋址 例如:在程序存儲器中2000H單元有一條雙字節(jié)的相對轉(zhuǎn)移指令“SJMP 75H”。 解:程序存儲器2000H、2001H單元的內(nèi)容80H、75H是“SJMP 75H”的機(jī)器語言代碼。