freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

插播2單片機(jī)的c語言程序設(shè)計(jì)及仿真調(diào)試-文庫吧

2024-12-23 15:42 本頁面


【正文】 H ?外部數(shù)據(jù)存儲器 ? xdata:可指定多達(dá) 64KB的外部直接尋址區(qū),地址范圍 0000H~0FFFFH ? pdata:能訪問 1頁( 256Bytes)的外部 RAM(很少用) ?變量或參數(shù)的存儲類型可由存儲模式指定缺省類型,也可由關(guān)鍵字 code、 data、 idata、 xdata、 pdata直接聲明指定。例如: data buffer。 char code array[ ]=―hello!‖。 unsigned char xdata arr[10][4][4]。 Keil C51擴(kuò)展關(guān)鍵字 ?_at_關(guān)鍵字 :若要實(shí)現(xiàn)變量的絕對定位(稱為絕對變量),可以直接在數(shù)據(jù)定義后加上“ _at_ 常數(shù)地址”即可 ,注意: ?絕對變量不能被初始化; ?bit型函數(shù)及變量不能用 _at_指定。 ?例如: ?unsigned char idata ADCdata _at_ 0x40。 //指定ADCdata變量在 40H處 ?unsigned char xdata buffer[20] _at_ 0x0010。//指定buffer數(shù)組從 XRAM的 0010H單元開始 Keil C51擴(kuò)展關(guān)鍵字 ? 存儲模式 :有 Small、 Compact和 Large三種模式;存儲模式可在 Keil C51編譯器選項(xiàng)中選擇,如下圖所示: 指定存儲模式 ? Small模式 :在該模式中所有變量都默認(rèn)位于單片機(jī)內(nèi)部數(shù)據(jù)存儲器,此模式訪問變量的效率很高,缺點(diǎn)是空間有限,只適用于小程序; ? Compact模式 :所有缺省變量均位于外部 RAM區(qū)的一頁內(nèi)( 256字節(jié)),這和使用 pdata指定存儲器類型一樣,該模式空間比 Small寬裕,速度比Small慢,比 large快,是一種中間狀態(tài); ? Large模式 : 所有缺省變量可放在多達(dá)64KB的外部 RAM區(qū),這和使用 xdata 指定存儲器類型一樣,使用數(shù)據(jù)指針DPTR 進(jìn)行尋址。通過數(shù)據(jù)指針訪問外部數(shù)據(jù)存儲器的效率較低,特別是當(dāng)變量為 2 個字節(jié)或更多字節(jié)時。該模式的數(shù)據(jù)訪問比 Small和 Compact產(chǎn)生更多的代碼。優(yōu)點(diǎn)是空間大,可存變量多,缺點(diǎn)是速度較慢。 Keil C51擴(kuò)展關(guān)鍵字 ?變量或數(shù)據(jù)類型 Keil C 和 ANSI C ? Keil C51擴(kuò)展關(guān)鍵字 ? 擴(kuò)展 I/O口的使用 ? Keil C51函數(shù) ? STC15F2K60S2單片機(jī) C51程序框架 擴(kuò)展 I/O口的使用 ? 由于使用 C語言訪問外部 I/O時用到指針的功能,因此,首先介紹 Keil C51的指針。 ? 1. Keil C51指針 ? Keil C51支持一般指針( Generic Pointer)和存儲器指針( Memory Specific Pointer)。一般指針的聲明和使用均與標(biāo)準(zhǔn) C相同,同時還可以說明指針的存儲類型。例如,下面的語句都聲明 pt為指向保存在外部 RAM中unsigned char數(shù)據(jù)的指針,但 pt本身的保存位置卻不同: ? unsigned char xdata *pt。 //pt本身依存儲模式存放 ? unsigned char xdata * data pt。 //pt被保存在內(nèi)部 RAM中 ? unsigned char xdata * xdata pt。 //pt被保存在外部 RAM中 ? 一般指針本身用 3個字節(jié)存放,分別為存儲器類型,高位偏移,低位偏移量?;诖鎯ζ鞯闹羔?,說明時即指定了存儲類型,這種指針存放時,只需一個字節(jié)或 2個字節(jié)就夠了,因?yàn)橹恍璐娣牌屏?。例如? ? char data * str。 //str指向 data區(qū)中 char型數(shù)據(jù) ? int xdata * pow。 //pow指向外部 RAM的 int型整數(shù)。 ? 關(guān)于堆棧指針 SP的設(shè)定 ? 一般情況下,用戶不需要在 C語言程序中修改堆棧指針 SP,但要關(guān)心一下 SP的位置 。 ? C51是在 設(shè)置 SP指針的,用CODE選項(xiàng)生成的匯編代碼中是找不到這段代碼的。 C51的初始化代碼,單片機(jī)復(fù)位后先執(zhí)行這段代碼,完成初始化后由它調(diào)用 main( )函數(shù)。特殊需要時,可以修改這段代碼,然后連接到用戶的程序中去。 擴(kuò)展 I/O口的使用 ?2. 外部擴(kuò)展 I/O口的訪問 ?方法 1:使用自定義指針。由于片外 I/O端口與片外存儲器統(tǒng)一編址,所以可以定義 xdata類型的指針訪問外部 I/O端口。 ?例如,某單片機(jī)應(yīng)用系統(tǒng)中,使用 8255擴(kuò)展 I/O端口,采用線選法對 8255進(jìn)行地址譯碼,單片機(jī)的 ( A15)接 8255的片選引腳,則 8255的命令字地址為7FF3H, PA口地址為 7FF0H, PB口地址為 7FF1H,PC口地址為 7FF2H,訪問 8255的 C程序如下: ? 寫端口程序 : char xdata *8255; //定義指向外部存儲區(qū)的指針 8255=0x7FF3; //使指針指向 8255的控制口口地址7FF3H *8255=0x81。 //輸出 81H到端口 ? 讀端口程序 : char xdata *8255; //定義指針 8255=0x7FF0; //使指針指向 8255的 PA口口地址7FF0H char i。 i=*8255。 //讀 PA端口到變量 i 擴(kuò)展 I/O口的使用 ? 2. 外部擴(kuò)展 I/O口的訪問 ? 方法 2:使用 C51預(yù)定義指針。為了方便地訪問外部存儲器及 I/O端口,在C51中的 ,利用這些定義可以方便地訪問外部 I/O端口。 ? define CBYTE ((unsigned char volatile code *) 0) ? define DBYTE ((unsigned char volatile data *) 0) ? define PBYTE ((unsigned char volatile pdata *) 0) ? define XBYTE ((unsigned char volatile xdata *) 0) ? 例如: include define PORTA XBYTE [0x7FF0] //其中, PORTA為程序定義的 I/O端口名稱, []內(nèi)的內(nèi)容 7FF0H為 PORTA的地址 void main(void) { char a。 PORTA=0x81。 //輸出 81H到端口 7ff0H a=PORTA。 //讀端口 7ff0H到變量 a } Keil C 和 ANSI C ? Keil C51擴(kuò)展關(guān)鍵字 ? 擴(kuò)展 I/O口的使用 ? Keil C51函數(shù) ? STC15F2K60S2單片機(jī) C51程序框架 Keil C51函數(shù) ? C51的程序結(jié)構(gòu): ? C51的程序也是從 main(
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1