https://m.toutiao.com/is/JcoW9Gd/ 學(xué)了一段C語言基礎(chǔ),,買了ARM(4412)開發(fā)板準(zhǔn)備學(xué)嵌入式,沒有任何基礎(chǔ),,看了幾天裸機(jī)教程,頭大啊真是從入門到放棄。欲速則不達(dá),,還是從基礎(chǔ)的學(xué)起吧,先搞51單片機(jī)從基礎(chǔ)學(xué)起,,然后在stm32,最后學(xué)ARM開發(fā)板,。 花了幾百大洋買了嵌入式開發(fā)板,不想再買別的板子了,,于是發(fā)現(xiàn)了新大陸---Proteus,,不光能仿真51單片機(jī)還能仿真stm32十分強(qiáng)大。 元件庫都是英文的,,常用的幾種元件中英文對照如下,。 RES:電阻;CAP:電容,;BUTTON:按鍵開關(guān),;CRYSTAL:晶振;DIODE:二極管,;LED:發(fā)光二極管,。 51單片機(jī)幾個(gè)重要元件MCU表示單片機(jī)微處理器,簡單來說就是集CPU(運(yùn)算,、控制),、RAM(數(shù)據(jù)存儲-內(nèi)存)、ROM(程序存儲),、輸入輸出設(shè)備(串口,、并口等)和中斷系統(tǒng)處于同一芯片的器件 單片機(jī)最小系統(tǒng)必須包含:1.電源電路 2.晶體震蕩電路 3.復(fù)位電路 51單片機(jī)特有的編程語句1.頭文件#include<reg51.h>:定義了一些51單片機(jī)特殊寄存器等 2.sfr(special function register):特殊功能寄存器聲明。 sfr P0 = 0x80; 0x80為寄存器地址,,通過地址來訪問寄存器(注意這個(gè) P 必須大寫) 只有聲明了這條語句,,編譯器才知道P0是什么東西。 3.sbit:特殊功能位聲明 sbit led = P0^0//P0口的第0位取了一個(gè)更形象的名字叫做led IO口是特殊功能寄存器,初始化值為高電平,。P0口有8位(bit),,正好是一個(gè)字節(jié)Byte 區(qū)分字節(jié)地址和位地址 P0的字節(jié)地址是80H。 SP的字節(jié)地址是81H,。 ---- P0的字節(jié)地址是80H,,它有8個(gè)bit(P0^0 - P0^7),, 對應(yīng)的 位地址是80H~87H。 位地址81H,,和SP的字節(jié)地址81H,,沒有沖突。 位 操作和總線操作 點(diǎn)亮ledkeil編譯c文件,,然后生成hex文件加載到proteus中 1.位操作 #include<reg51.h> sbit led7 = P1^7;void main(){ led7=1; while(1);} 這樣就完成了操作,,不影響P1口上其它IO的值 2.總線操作 要求讓P1口的最高位置(P1^7)為“1”,其它為0 #include<reg51.h>void main(){ P1 = 0x80;//注意:1000 0000 P0口中存儲的數(shù)據(jù) while(1);} 內(nèi)存地址是內(nèi)存當(dāng)中存儲數(shù)據(jù)的一個(gè)標(biāo)識,,并不是數(shù)據(jù)本身,,通過內(nèi)存地址可以找到內(nèi)存當(dāng)中存儲的數(shù)據(jù)。 |
|