學(xué)單片機(jī)三四天的感受
單片機(jī)的英文簡寫是MCU,主要由四部分組成,CPU,RAM,ROM,I/O口,CPU就像電腦的CPU,RAM就像電腦的內(nèi)存,ROM就像電腦的硬盤,不過沒有電腦的硬盤靈活,程序只能拷進(jìn)去,但好像拷不出來,至少我不知道咋拷出來,可能是功力不夠。I/O口就像電腦的串口,鼠標(biāo)、鍵盤接口,但是它的I/O口很多都是一位一位的。
CPU的時(shí)鐘頻率最大也就是幾十兆,但是寫程序的時(shí)候可以自定義它的時(shí)鐘頻率,自定義的時(shí)鐘頻率只能比最大值小,感覺很奇怪,定義一些小的時(shí)鐘頻率好像沒什么優(yōu)勢,想了半天,想到一個(gè)原因,省電,仔細(xì)一想,很牽強(qiáng),于是乎,去問老長,老長給出了比較科學(xué)的解釋:時(shí)鐘頻率越高,就越容易被干擾,外部電路就越難做。哎,老長真是高手的說。CPU有個(gè)內(nèi)部晶振,如果內(nèi)部晶振不合用,可以接外部晶振。
RAM很小,一般都只有幾百字節(jié),注意是字節(jié),可不是K,感覺也太小了,還不夠塞牙縫呢,RAM本來就夠小了,還得再分出一些做為SFR,SFR就是傳說中的特殊功能寄存器。我用的單片機(jī)RAM才256字節(jié),特殊功能寄存器就占了128字節(jié),可用內(nèi)存真叫小呀,據(jù)說可外接RAM,但迄今為止,我還不知道怎么外接,這些東西得查資料,不能老麻煩老長,于心不忍呀!特殊功能寄存器都是干什么用的,我也不清楚,手冊上有,我就知道一點(diǎn),花了很大功夫在網(wǎng)上查了一個(gè)SFRPAGE,這個(gè)SFRPAGE甚是怪異,如果給SFR賦值,如果SFRPAGE的值不對,還不行,賦不進(jìn)去,就像你要在書上的某一個(gè)句子下劃條線,得先翻到這一頁的說。還有一些比較簡單的,P0,P1什么的,這個(gè)我就不多說了,看一眼就會明白的。
下面該翁翁ROM了,ROM也不大,我的單片機(jī)好像是4K,ROM是干啥用的呢?是放程序用的,程序編譯成二進(jìn)制文件后,總得有的去處吧,就放在ROM里,ROM也可以外接擴(kuò)展,而且還可以不用內(nèi)部ROM,只用外部ROM,具體怎么弄等我弄清楚了再說。
I /O有串口,還有好多口,串口都知道是RS-232串口,不知道的人說你也不知道,口是弄啥來?口是一位,往特殊功能寄存器里該口對應(yīng)的位里賦個(gè)1,口就是高電位了,反之就是低電位了。有人要問,那賦個(gè)2呢?誰問誰是2的說。
還有就是寫程序了,寫程序用的是C語言,是咱的老本行,所以很容易上手,只是C51的C語言擴(kuò)展了一下,里面加了幾種類型,據(jù)目前所知,有sfr類型和sbit類型,這兩種類型甚是怪異,初始化和賦值意思不一樣。
sfr theSfr = 0x90; // 定義一個(gè)特殊功能寄存器,這個(gè)特殊功能寄存器就表示RAM中地址是0x90的那個(gè)
theSr = 0x21; // 往剛才的的寄存器里寫了數(shù),0x21
sbit也很古怪
sbit theBit = theSfr^1; // theBit就表示theSfr寄存器中的第1位(從0開始),前提是這個(gè)寄存器可以位尋址。啥叫位尋址?看字面意思就知道了,再不知道去問老長。
好了,基本寫完了,最后這點(diǎn)不看也中,就是收個(gè)尾,俗話說,言必信,行必果,在此再次對老長表示感謝!
評論