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