Keil Memory Model的選擇問(wèn)題
Small:變量存儲(chǔ)在內(nèi)部RAM里;
本文引用地址:http://m.butianyuan.cn/article/201611/316953.htmCompact:變量存儲(chǔ)在外部RAM里,使用頁(yè)8位間接尋址;
Large:變量存儲(chǔ)在外部RAM里,使用16位間接尋址;
我們一般使用Small來(lái)存儲(chǔ)變量,就是說(shuō)單片機(jī)優(yōu)先把變量存儲(chǔ)在內(nèi)部RAM里,如果內(nèi)部RAM不夠了,才會(huì)存到外部去。
Compact的方式要自己通過(guò)程序來(lái)指定頁(yè)的高位地址,編程比較復(fù)雜,如果外部RAM很少,只有256個(gè)字節(jié),那么對(duì)該256個(gè)字節(jié)的讀取就比較快,用MOVX @Ri,A 或MOVX A,@Ri指令。如果超過(guò)256字節(jié),那么要不斷地進(jìn)行切換的話,就比較麻煩。Compact模式適用于比較少的外部RAM的情況。
Large模式,是指變量會(huì)優(yōu)先分配到外部RAM里,用MOVX A,@DPTR或MOVX @DPTR,A來(lái)讀取。
要注意的是,3種存儲(chǔ)方式都支持內(nèi)部256字節(jié)和外部64k字節(jié)的RAM。區(qū)別是變量的優(yōu)先(或默認(rèn))存儲(chǔ)在哪里的區(qū)別。除非你不想把變量存儲(chǔ)在內(nèi)部RAM,才使用后面的Compact,Large模式。因?yàn)樽兞看鎯?chǔ)在內(nèi)部RAM里,運(yùn)算速度比存儲(chǔ)在外部RAM要快的多,大部分的應(yīng)用都是選擇Small的模式。
使用Small的模式:也不是說(shuō)變量就不可以存儲(chǔ)在外部,一樣可以存儲(chǔ)在外部,只是你要指定,比如:
unsigned char xdata a; 那么變量a就存儲(chǔ)在外部的RAM。
unsigned char a; 變量存儲(chǔ)在內(nèi)部RAM。
使用Large的模式:
unsigned char xdata a; 那么變量a就存儲(chǔ)在外部的RAM。
unsigned char a;變量存儲(chǔ)在外部RAM。
這就是區(qū)別,就是說(shuō)這幾個(gè)選項(xiàng)只是影響沒(méi)有特別指定變量的存儲(chǔ)空間的時(shí)候,默認(rèn)存儲(chǔ)在哪里,比如上面的變量定義unsigned char a。
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開(kāi)關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論