51單片機(jī)存儲(chǔ)器小結(jié)
存儲(chǔ)器分為程序存儲(chǔ)器(ROM)和數(shù)據(jù)存儲(chǔ)器(RAM),兩種又都可以分為片內(nèi)和片外,片外即需要自己在單片機(jī)外部擴(kuò)展。
8051單片機(jī)的片內(nèi)程序存儲(chǔ)器有4K,片內(nèi)數(shù)據(jù)存儲(chǔ)器有256個(gè)字節(jié),其中又分為高128字節(jié)位特殊功能寄存器區(qū),真正用戶能用的RAM只有低128字節(jié)。
8052單片機(jī)有8K片內(nèi)程序存儲(chǔ)器,而數(shù)據(jù)存儲(chǔ)器除了低128字節(jié)外還有擴(kuò)展的高128字節(jié),地址上跟特殊功能寄存器一樣,但物理上是獨(dú)立的,尋址方式不一樣,擴(kuò)展的高128字節(jié)只能間接尋址。
Keil中變量的存儲(chǔ)類型:
存儲(chǔ)類型 | 說明 |
code | 程序空間(無需改變的變量) |
data | 直接訪問的內(nèi)部數(shù)據(jù)存儲(chǔ)器(速度最快) |
idata | 間接訪問的內(nèi)部數(shù)據(jù)存儲(chǔ)器(可以訪問全部256字節(jié)RAM) |
bdata | 可位尋址的內(nèi)部數(shù)據(jù)存儲(chǔ)器 |
xdata | 外部數(shù)據(jù)寄存器(最大64K) |
pdata | 分頁的外部數(shù)據(jù)寄存器(最大256字節(jié),少用) |
【如無使用關(guān)鍵字,系統(tǒng)則按默認(rèn)處理(根據(jù)存儲(chǔ)模式)】
Keil中的存儲(chǔ)模式:
存儲(chǔ)模式 | 說明 |
Small | 變量默認(rèn)為data型,最大128字節(jié) |
Compare | 變量默認(rèn)為pdata型,最大256字節(jié) |
Large | 變量默認(rèn)為xdata型,最大64K |
Keil中設(shè)置如下圖:
我們平常使用的STC單片機(jī),有很多型號(hào),具體存儲(chǔ)器大小都要看型號(hào):
【89/90系列的機(jī)器周期需要12個(gè)或6個(gè)時(shí)鐘周期】
【12/15系列的機(jī)器周期只需要1個(gè)時(shí)鐘周期】
51單片機(jī)上的FFT算法
最近用增強(qiáng)型51單片機(jī)做了一個(gè)簡易的點(diǎn)陣音樂頻譜顯示器,最主要是自己剛學(xué)完信號(hào)處理課程,想自己寫一個(gè)FFT算法。現(xiàn)將已經(jīng)能夠在51單片機(jī)上運(yùn)行的FFT算法供需要的伙伴們參考。
在51單片機(jī)上運(yùn)行FFT算法,需要注意一下幾點(diǎn):
由于51單片機(jī)的內(nèi)存RAM很小,只有128字節(jié),52有256字節(jié),而16點(diǎn)的浮點(diǎn)數(shù)輸入,就需要2*4*16=128字節(jié)的內(nèi)存開銷,所以只有256字節(jié)的做多只能做16點(diǎn)的FFT運(yùn)算。而且必須要用idata定義才能將其定義在高128字節(jié)。所以要做16點(diǎn)以上的FFT運(yùn)算,必須選用有內(nèi)部擴(kuò)展RAM的51系列單片機(jī),然后用xdata定義,并且要將存儲(chǔ)模式設(shè)為LARGE模式。
編輯:admin 最后修改時(shí)間:2018-05-18