單片機(jī)C語言程序設(shè)計(jì)與運(yùn)用期末復(fù)習(xí)題及答案_第1頁
單片機(jī)C語言程序設(shè)計(jì)與運(yùn)用期末復(fù)習(xí)題及答案_第2頁
單片機(jī)C語言程序設(shè)計(jì)與運(yùn)用期末復(fù)習(xí)題及答案_第3頁
單片機(jī)C語言程序設(shè)計(jì)與運(yùn)用期末復(fù)習(xí)題及答案_第4頁
已閱讀5頁,還剩28頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、單片機(jī)c語言程序設(shè)計(jì)與運(yùn)用期末復(fù)習(xí)題及答案 一 、填空 1keil c51 軟件中,工程文件的擴(kuò)展名是_uv2_,編譯連接后生成可燒寫的文件擴(kuò)展名是_hex_。 2c51 支持的指針有 一般指針 和 存儲(chǔ)器指針 。 3c51 中,沒有專門的循環(huán)語句,我們可以用函數(shù)_crol_ 完 成 一 個(gè) 字 節(jié) 的 循 環(huán) 左 移 , 用_irol_完成二個(gè)字節(jié)的循環(huán)左移。 4 函數(shù) 是 c 語言的基本單位。 5 c 語 言 中 輸 入 和 輸 出 操 作 是 由 庫 函 數(shù) scanf和 printf 等函數(shù)來完成。 6若有說明 int i,j,k;則表達(dá)式 i=10,j=20,k=30,k*=i+j的

2、值為_ 900_。 7 數(shù)組 是一組有固定數(shù)目和相同類型成分分量的有序集合。 8變量的指針就是變量的 地址 ;指針變量的值是 指針 。 9在 c 語言中,把多個(gè)不同類型的變量結(jié)合在一起形成的一個(gè)組合型變量,稱為 結(jié)構(gòu)變量 ,簡稱 結(jié)構(gòu) 。 10c51 的數(shù)據(jù)類型有 基本類型 、 構(gòu)造類型 、 指針類型 、 空類型 。 11c51 的基本數(shù)據(jù)類型有 位型 、 字符型 、 整形 、 長整形 、 浮點(diǎn)型 、 雙精度浮點(diǎn)型 。 12c51 的構(gòu)造數(shù)據(jù)類型有 數(shù)組類型 、 結(jié)構(gòu)類型 、 共用體型 、 梅舉型 。 13c51 的存儲(chǔ)類型有 data 、 bdata 、 idata 、 pdata 、 xd

3、ata 、 code 。 14c51 的存儲(chǔ)模式有 small 、 compact 和 large 。 15c51 程序與其他語言程序一樣,程序結(jié)構(gòu)也分為 順序結(jié)構(gòu) 、 選擇結(jié)構(gòu)(或分支結(jié)構(gòu)) 、 循環(huán)結(jié)構(gòu) 三種。 16數(shù)組的一個(gè)很重要的用途就是 查表 。 17. 二 、單項(xiàng)選擇題: 1.89s51 的內(nèi)部程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器容量各為多少?(c) (a)64kb、 128b ( b)4kb、64kb (c)4kb、128b (d)8kb、256b 2在 8x51 芯片里,哪個(gè)引腳用于控制使用內(nèi)部程序存儲(chǔ)器還是外部程序存儲(chǔ)器?(b) (a)xtal1(b)/ea(c)/psen (d)ale

4、3.下列哪個(gè)不是 keilc 的預(yù)處理命令?(c) (a)#include (b)#define (c)#exit (d)#if 4.下列哪個(gè)不是 keilc 的數(shù)據(jù)類型?(b) (a)void (b)string (c)char (d)float 5.在 8x51 的輸入/輸出端口里,哪個(gè)輸入/輸出端口執(zhí)行在 輸出功能時(shí)沒有內(nèi)部上拉電阻(a) (a)p0 (b)p1 (c)p2 (d)p3 6在 keilc 的程序里,若要指定 p0 口的 bit3,如何編寫?(c) (a)p0.3 (b)port0.3 (c)p03 (d)port3 7.在 8x51 里,若要擴(kuò)展外部存儲(chǔ)器時(shí),數(shù)據(jù)總線連接

5、哪個(gè)輸入/輸出端口?(a) (a)p0 (b)p1 (c)p2 (d)p3 8點(diǎn)亮一般的 led 所耗的電流約為多少?(d) (a)15ua(b)1020ua (c)15ma(d)1020ma 9.在 8x51 的程序里,若要將個(gè)輸入/輸出端口設(shè)置成輸入功能,應(yīng)如何處理?(a) (a)先輸出高電平到該輸入/輸出端口 (b)先輸出低電平到該輸入/輸出端口 (c)先讀取該輸入/輸出端口的狀態(tài)(d)先保存該輸入/輸出端口的狀態(tài) 10根據(jù)實(shí)驗(yàn)統(tǒng)計(jì),當(dāng)操作開關(guān)時(shí),其不穩(wěn)定關(guān)態(tài)大約持續(xù)多久?(b) (a)15ms(b)1020ms (c)100150ms (d)150250us 11.在 keilc 里,

6、判讀開關(guān)狀態(tài)時(shí),使用 if_else if 語句與使用 switch 語句有何差異?(b) (a)if-else if 語句較快 (b)if-else if 語句有優(yōu) 先級(jí) (c)switch 語句可判讀較多開關(guān)狀態(tài) (d)switch 語句有優(yōu)先級(jí) 12對(duì)于低電平動(dòng)作(低電平觸發(fā))的開關(guān)而言,下列哪個(gè)不是在輸入口上連接一個(gè)上拉電阻 vcc 的目的?(a) (a)提供足夠的驅(qū)動(dòng)電流 (b)防止確定狀態(tài) (c)保持輸入高電平 (d)防止噪聲干擾 13.中斷功能具有什么好處?(c) (a)讓程序更復(fù)雜 (b)讓程序執(zhí)行速度更快 (c)讓程序更有效率 (d) 以上皆非 148x51 的 ip 緩存器

7、的功能為何?(a) (a)設(shè)置中斷優(yōu)先級(jí) (b)啟用中斷功能 (c)設(shè)置中斷觸發(fā)信號(hào) (d)定義 cpu 的網(wǎng)址 15.在 keilc 里,中斷子程序與函數(shù)有何不同?(a) (a)中斷子程序不必聲明 (b)函數(shù)不必聲明 (c)中斷子程序必須有形式參數(shù) (d)中斷子程序一定會(huì)有返回值 16若要同時(shí)啟用 int0 及 int1 中斷功能,則應(yīng)如何設(shè)置?(b) (a)tcon=0x81 (b)ie=0x85 (c)ip=0x83 (d)ie=0x03 17.若要提高 int1 的優(yōu)先級(jí),則應(yīng)如何設(shè)置?(c) ( a ) ip=0x01 (b)ie=0x01 (c)ip=0x04 (d)ie=0x04

8、 18.在 8x51 的 timer 里,若使用 mode 0,其最大計(jì)數(shù)值為多少個(gè)機(jī)器周期?(b) (a)65636 (b)8192 (c)1024 (d)256 19.12 mhz 的 8x51 系統(tǒng)里,哪一種方式一次可定時(shí) 5ms?(a) (a)mode0 及 mode1 (b)mode1 及 mode2 (c ) mode2 及 mode3 (d) mode3 及 mode1 20.8x51 的定時(shí)器,在下列哪種方式下具有自動(dòng)加載功能?(c) (a)mode0 (b) mode1 (c)mode2 (d)mode3 21.若將 timer0 設(shè)置為外部啟動(dòng),則可由哪個(gè)引腳啟動(dòng)?(a)

9、(a)p3.2(b)p3.3 (c)p3.4 (d)p3.5 22.下列哪個(gè) ic 具有將串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)的功能?(b) (a)74138 (b)74164 (c)74165 (d)74168 23在同一時(shí)刻,只能接收或發(fā)送信號(hào)者稱為什么?(a) (a)半雙工 (b)全雙工(c)半單工 (d)單工 24在 8x51 的串行口里,在哪一種方式下,可利用 timer1產(chǎn)生波特率?(c) ( a ) mode0 (b)mode1 (c)mode2 (d)mode3 25.在 8x51 里,若通過串行端口傳出數(shù)據(jù),則只要將數(shù)據(jù)放入哪個(gè)寄存器,cpu 就會(huì)自動(dòng)將它會(huì)傳出?(b) (a)smod(b

10、)sbuf (c)pcon (d)rbuf 26.在 8x51 里,若 cpu 完成串行端口數(shù)據(jù)的接收將會(huì)如何?(d) (a)將 ti 標(biāo)志變?yōu)?0 (b)將 ri 標(biāo)志為 0 (c)將 ti 標(biāo)志變?yōu)榱?1 (d)將 ri 標(biāo)志變?yōu)?1 27若要設(shè)置 8x51 串行端口方式,可在哪個(gè)寄存器中設(shè)置?(b) (a)smod (b)scon (c)pcon (d)tcon 28在共陽極 8*8led 點(diǎn)陣?yán)?,其陽極如何連接?(c) (a)各行陽極連接到行引腳 (b)各列陽極連接到列引腳(c)各行陽極連接到列引腳 (d)各列陽極連接到行引腳 29在共陽極 8*8 點(diǎn)陣?yán)?,其陰極如何連接?(a) (a

11、)各行陰極連接到行引腳 (b)各列陰極連接到列引腳 (c)各行陰極連接到列引腳 (d)各列陰極連接到行引腳 30通常 8*8led 點(diǎn)陣的驅(qū)動(dòng)方式是什么?(b) (a)直接驅(qū)動(dòng) (b)掃描驅(qū)動(dòng) (c)雙向驅(qū)動(dòng) (d)以上皆非 31若要對(duì) lcm 下指令,則應(yīng)如保設(shè)置?(a) (a)rs=0,r/w=0(b)rs=1,r/w=0 (c)rs=1,r/w=1 (d)rs=0,r/w=1 32若要在 lcm 中顯示些字符,則需把所要顯示的字符放入何處?(b) (a)cg ram (b)ddram (c)iram (d)gdram 33若要將數(shù)據(jù)寫入 lcm,則應(yīng)如何設(shè)置?(b) (a)rs=0,r/

12、w=0 (b)rs=1,r/w=0 (c)rs=1,r/w=1 (d)rs=0,r/w=1 341利用下列( d )關(guān)鍵字可以改變工作寄存器組 a、interrupt b、sfr c、while d、using 35c51 中一般指針變量占用( c )字節(jié)存儲(chǔ)。 a、一個(gè) b、兩個(gè) c、三個(gè) d、四個(gè) 36使用宏來訪問絕對(duì)地址時(shí),一般需包含的庫文件是( b ) a、reg51.h b、absacc.h c、intrins.h d、startup.h 37執(zhí)行#define pa8255 xbyte0x3ffc; pa8255=0x7e; 后存儲(chǔ)單元 0x3ffc 的值是(a ) a、ox7e

13、b、8255h c、未定 d、7e 38 設(shè) 有 int a =10,11,12,*p=a0 ; 則 執(zhí) 行 完*p+;*p+=1;后 a0,a1,a2的值依次是 (c) a、10,11,12 b、11,12,12 c、10,12,12 d、11,11,12 a、1 b、2 c、3 d、4 三 、判斷題: (每小題 1 1 分,共 0 10 分。正確的在括號(hào)內(nèi)打"' ,錯(cuò)誤的打"' 。判對(duì)得分,不判、判錯(cuò)均不得分。) 1若一個(gè)函數(shù)的返回類型為 void,則表示其沒有返回值。( ) 2特殊功能寄存器的名字,在 c51 程序中,全部大寫。 ( ) 3"

14、sfr'后面的地址可以用帶有運(yùn)算的表達(dá)式來表示。 ( ) 4#include reg51.h與#include "reg51.h'是等價(jià)的。( ) 5sbit 不可以用于定義內(nèi)部 ram 的可位尋址區(qū),只能用在可位尋址的 sfr 上。( ) 6continue 和 break 都可用來實(shí)現(xiàn)循環(huán)體的中止。( ) 7所有定義在主函數(shù)之前的函數(shù)無需進(jìn)行聲明。( ) 8int i,*p=i;是正確的 c 說明。( ) 973+12 的值是 15。( ) 10一個(gè)函數(shù)利用 return 不可能同時(shí)返回多個(gè)值。( ) 四、 問答題 1 1 簡述 1 c51 語言和匯編語言的比較

15、使用 c51 語言進(jìn)行嵌入式系統(tǒng)的開發(fā),有著匯編語言所不可比擬的優(yōu)勢: 編程調(diào)試靈活方便; 生成的代碼編譯效率高; 模塊化開發(fā); 可移植性好; 便于項(xiàng)目的維護(hù); 2 2 簡述單片機(jī)的 c c 語言和標(biāo)準(zhǔn) c c 的比較 答:單片機(jī)的 c 語言和標(biāo)準(zhǔn) c 的比較主要有以下幾點(diǎn)不同: c51 中定義的庫函數(shù)和標(biāo)準(zhǔn)的 c 語言定義的庫函數(shù)不同; c51 中的數(shù)據(jù)類型和標(biāo)準(zhǔn) c 的數(shù)據(jù)類型也有一定的區(qū)別; c51 變量的存儲(chǔ)模式與標(biāo)準(zhǔn) c 中變量的存儲(chǔ)模式不一樣; c51 與標(biāo)準(zhǔn) c 的輸入/輸出處理不一樣; c51 與標(biāo)準(zhǔn) c 語言在函數(shù)使用方面有一定的區(qū)別。 3 3 簡述單片機(jī)的 c c 語言的特

16、點(diǎn) 單片機(jī)的 c 語言的特點(diǎn)主要體現(xiàn)在以下幾個(gè)方面: 無需了解機(jī)器硬件及其指令系統(tǒng),只需初步了解 mcs-51的存儲(chǔ)器結(jié)構(gòu); c51 能方便的管理內(nèi)部寄存器的分配、不同存儲(chǔ)器的尋址和數(shù)據(jù)類型等細(xì)節(jié)問題,但對(duì)硬件控制有限;而匯編語言可以完全控制硬件資源; c51 在小應(yīng)用程序中,產(chǎn)生的代碼量大,執(zhí)行速度慢;但在較大的程序中代碼效率高; c51 程序由若干函數(shù)組成,具有良好的模塊化結(jié)構(gòu),便于改進(jìn)和擴(kuò)充; c51 程序具有良好的可讀性和可維護(hù)性;而匯編語言在大應(yīng)用程序開發(fā)中,開發(fā)難度增加,可讀性差; c51 有豐富的庫函數(shù),可大大減少用戶的編程量,顯著縮短編程與調(diào)試時(shí)間,大大提高軟件開發(fā)效率; 使用

17、匯編語言編制的程序,當(dāng)機(jī)型改變時(shí),無法直接移植使用,而 c 語言程序是面向用戶的程序設(shè)計(jì)語言,能在不同機(jī)型的機(jī)器上運(yùn)行,可移植性好。 4 4 簡述使用 1 keilc51 開發(fā)工具開發(fā)軟件的流程 使用keil software工具時(shí),用戶的項(xiàng)目開發(fā)流程和其它軟件開發(fā)項(xiàng)目的流程極其相似,主要包括以下幾個(gè)步驟: 創(chuàng)建一個(gè)項(xiàng)目,從器件庫中選擇目標(biāo)器件并配置工具軟件的設(shè)置; 用c語言或匯編語言創(chuàng)建源程序; 用項(xiàng)目管理器生成用戶的應(yīng)用; 修改源程序中的錯(cuò)誤; 調(diào)試鏈接后的應(yīng)用。 一個(gè)完整的8051工具集的框圖可以很好地表述此開發(fā)流程,如圖1-1所示。 1 1 哪些變量類型是 51 單片機(jī)直接支持的? 答

18、:c51編譯器支持的數(shù)據(jù)類型有:位型(bit)、無符號(hào)字符型(unsigned char)、有符號(hào)字符型(signed char)、無符號(hào)整型(unsigned int)、有符號(hào)整型(signed int)、無符號(hào)長整型(unsigned long)、有符號(hào)長整型(signed long)、浮點(diǎn)型(float)和指針型等。 c51編譯器支持的數(shù)據(jù)類型、長度和值域如表2-1所示。 表2 2- - 1 c51 的數(shù)據(jù)類型 數(shù)據(jù)類型 長 度/bit 長 度/byte 值域 bit 1 0,1 unsigned char 8 1 0255 signed char 8 1 -128127 unsigne

19、d int 16 2 065 535 signed int 16 2 -32 76832 767 unsigned long 32 4 04 294 967 295 signed long 32 4 -2 147 483 6482 147483 647 float 32 4 1176e-38340e+38(6 位數(shù)字) double 64 8 1176e-38340e+38(10 位數(shù)字) 一般指針 24 3 存儲(chǔ)空間 065 535 2 2 簡述 c51 的數(shù)據(jù)存儲(chǔ)類型 答:我們都知道,8051單片機(jī)存儲(chǔ)區(qū)可分為內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū)、外部數(shù)據(jù)存儲(chǔ)區(qū)以及程序存儲(chǔ)區(qū)。8051單片機(jī)內(nèi)部的數(shù)據(jù)存儲(chǔ)區(qū)是可

20、讀寫的,8051派生系列最多可有256字節(jié)的內(nèi)部數(shù)據(jù)存儲(chǔ)區(qū),其中低128字節(jié)可直接尋址,高128字節(jié)(從0x80到0xff)只能間接尋址,從20h開始的16字節(jié)可位尋址。內(nèi)部數(shù)據(jù)區(qū)可分為3個(gè)不同的存儲(chǔ)類型:data、idata和bdata。 外部數(shù)據(jù)區(qū)也是可讀寫的,訪問外部數(shù)據(jù)區(qū)比訪問內(nèi)部數(shù)據(jù)區(qū)慢,因?yàn)橥獠繑?shù)據(jù)區(qū)是通過數(shù)據(jù)指針加載地址來間接訪問的。c51 提供兩種不同的存儲(chǔ)類型 xdata 和 pdata 訪問外部數(shù)據(jù)。 程序存儲(chǔ)區(qū)是只能讀不能寫。程序存儲(chǔ)區(qū)可能在 8051 單片機(jī)內(nèi)部或者在外部或者內(nèi)外都有,這由 8051 單片機(jī)的硬件決定。c51 提供了 code 存儲(chǔ)類型來訪問程序存儲(chǔ)區(qū)。

21、 每個(gè)變量可以明確地分配到指定的存儲(chǔ)空間,對(duì)內(nèi)部數(shù)據(jù)存儲(chǔ)器的訪問比對(duì)外部數(shù)據(jù)存儲(chǔ)器的訪問快許多,因此應(yīng)當(dāng)將 頻繁使用的變量放在內(nèi)部存儲(chǔ)器中,而把較少使用的變量放在外部存儲(chǔ)器中。各存儲(chǔ)區(qū)的簡單描述如表 2-2 所示。 表 表 2 2- -2 2 1 c51 存儲(chǔ)類型與 1 8051 存儲(chǔ)空間的對(duì)應(yīng)關(guān)系 存儲(chǔ)區(qū) 描述 data 片內(nèi) ram 的低 128 字節(jié),可在一個(gè)周期內(nèi)直接尋址 bdata 片內(nèi) ram 的位尋址區(qū),16 字節(jié) idata 片內(nèi) ram 的 256 字節(jié),必須采用間接尋址 xdata 外部數(shù)據(jù)存儲(chǔ)區(qū),使用 dptr 間接尋址 pdata 外部存儲(chǔ)區(qū)的 256 個(gè)字節(jié),通過 p

22、0 口的地址對(duì)其尋址。使用 mo ri,需要兩個(gè)指令周期 code 程序存儲(chǔ)區(qū),使用 dptr 尋址。 以上介紹的是 c51 的數(shù)據(jù)存儲(chǔ)類型,c51 存儲(chǔ)類型及其大小和值域如表 2-3 所示。 表2 2- -3 3 c51 存儲(chǔ)類型及其大小和值域 存儲(chǔ)類型 長度/bit 長度/byte 值域 data 8 1 0255 idata 8 1 0255 pdata 8 1 0255 code 16 2 065 535 xdata 16 2 065 535 3 3 簡述 c51 對(duì) 51 單片機(jī)特殊功能寄存器的定義方法 答:mcs-51通過其特殊功能寄存器(sfr)實(shí)現(xiàn)對(duì)其內(nèi)部主要資源的控制。mcs

23、-51單片機(jī)有21個(gè)sfr,有的單片機(jī)還有更多的sfr,它們分布在片內(nèi)ram的高128字節(jié)中,其地址能夠被8整除的sfr一般可以進(jìn)行位尋址。關(guān)于mcs-51單片機(jī)的特殊功能寄存器參看附錄a。對(duì)sfr只能用直接尋址方式訪問。c51允許通過使用關(guān)鍵字sfr、sbit或直接引用編譯器提供的頭文件來實(shí)現(xiàn)對(duì)sfr的訪問。 (1 1 )使用關(guān)鍵字定義 sfr 為了能直接訪問特殊功能寄存器sfr,c51提供了一種自主形式的定義方法。這種定義方法與標(biāo)準(zhǔn)的c語言不兼容,只適用于對(duì)8051系列單片機(jī)進(jìn)行c編程。這種定義的方法是引入關(guān)鍵字"sfr',語法如下: sfr 特殊功能寄存器名字 = 特殊

24、功能寄存器地址; 如: sfr scon=0x98; /*串口控制寄存器地址98h*/ sfr tmod=0x89; /*定時(shí)器/計(jì)數(shù)器方式控制寄存器地址89h*/ (2 2 )通過頭文件訪問 sfr 8051系列單片機(jī)的寄存器數(shù)量與類型是極不相同的,因此對(duì)單片機(jī)特殊功能寄存器的訪問可以通過對(duì)頭文件的訪問來進(jìn)行。 為了用戶處理方便,c51編譯器把mcs-51單片機(jī)的常用的特殊功能寄存器和特殊位進(jìn)行了定義,放在一個(gè)"reg51.h'或"reg52.h'的頭文件中。當(dāng)用戶要使用時(shí),只需要在使用之前用一條預(yù)處理命令"#include reg51.h

25、9;把這個(gè)頭文件包含到程序中,然后就可以使用特殊功能寄存器名和特殊位名稱了。用戶可以通過文本編輯器對(duì)頭文件進(jìn)行增減。 (3) sfr 中位定義 在8051單片機(jī)的應(yīng)用問題中,經(jīng)常需要單獨(dú)訪問sfr中的位,c51的擴(kuò)充功能使之成為可能,使用關(guān)鍵字"sbit'可以訪問位尋址對(duì)象。特殊位(sbit)的定義,像sfr一樣不與標(biāo)準(zhǔn)c兼容。 與sfr定義一樣,用關(guān)鍵字"sbit'定義某些特殊位,并接受任何符號(hào)名,"='號(hào)后將絕對(duì)地址賦給變量名。這種地址分配有三種方法: 第一種方法: sbit 位名=特殊功能寄存器名位置; 當(dāng)特殊功能寄存器的地址為字節(jié)(

26、8位)時(shí),可使用這種方法。特殊功能寄存器名必須是已定義的sfr的名字。"'后的"位置'語句定義了基地址上的特殊位的位置。該位置必須是 07的數(shù)。如: 第二種方法: sbit 位名=字節(jié)地址位置; 這種方法是以一個(gè)整常數(shù)為基地址,該值必須在0x800xff之間,并能被8整除,確定位置的方法同上。 第三種方法: sbit 位名=位地址; 這種方法將位的絕對(duì)地址賦給變量,地址必須在0x800xff之間。 4 4 簡述 c51 對(duì) 51 單片機(jī)片內(nèi) i/o 口和外部擴(kuò)展的 i/o 口的定義方法 答: c51對(duì)51單片機(jī)片內(nèi)i/o口的定義方法是將片內(nèi)i/o口看成sfr

27、。 c51對(duì)51單片機(jī)片外i/o的訪問有兩種比較常用的訪問方法: (1 1 )絕對(duì)宏 c51編譯器提供了一組宏定義來對(duì)51系列單片機(jī)的code、data、pdata和xdata空間進(jìn)行絕對(duì)尋址。在程序中,用"#includeabsacc.h'即可使用其中聲明的宏來訪問絕對(duì)地址,包括cbyte、xbyte、pword、dbyte、cword、xword、pbyte、dword,具體使用方法參考absacc.h頭文件。其中: cbyte以字節(jié)形式對(duì)code區(qū)尋址;cword以字形式對(duì)code區(qū)尋 址; dbyte以字節(jié)形式對(duì)data區(qū)尋址;dword以字形式對(duì)data區(qū)尋址; x

28、byte以字節(jié)形式對(duì)xdata區(qū)尋址;xword以字形式對(duì)xdata區(qū)尋址; pbyte以字節(jié)形式對(duì)pdata區(qū)尋址;pword以字形式對(duì)pdata區(qū)尋址; (2 2 ) _at_ 關(guān)鍵字 可以使用關(guān)鍵字_at_對(duì)指定的存儲(chǔ)器空間的絕對(duì)地址進(jìn)行訪問,一般格式如下: 存儲(chǔ)器類型 數(shù)據(jù)類型說明符 變量名 _at_地址常數(shù); 其中,存儲(chǔ)器類型為c51能識(shí)別的數(shù)據(jù)類型,如省略則按存儲(chǔ)器模式規(guī)定的默認(rèn)存儲(chǔ)器類型確定變量的存儲(chǔ)器區(qū)域;數(shù)據(jù)類型為c51支持的數(shù)據(jù)類型;地址常數(shù)用于指定變量的絕對(duì)地址,必須位于有效的存儲(chǔ)器空間之內(nèi);使用_at_定義的變量必須為全局變量。 5 5 簡述 c51 對(duì) 51 單片機(jī)位

29、變量的定義方法 答:除了通常的c數(shù)據(jù)類型外,c51編譯器支持bit數(shù)據(jù)類型。 采用關(guān)鍵字"bit'進(jìn)行定義。如: bit direction_bit; /* 將direction_bit定義為位變量 */ bit lock_pointer; /* 將lock_pointer定義為位 變量 */ bit display_invers; /* 將display_invers定義為位變量 */ 6 6 c51 和 turbo c 的數(shù)據(jù)類型和存儲(chǔ)類型有哪些異同點(diǎn)? 答:c51增加了位變量,取消了布爾變量。 7 7 c51 的 data 、 bdata 、 idata 有什么區(qū)別?

30、答:data、bdata、idata是表明數(shù)據(jù)的存儲(chǔ)類型, data是指片內(nèi)ram的低128字節(jié),可在一個(gè)周期內(nèi)直接尋址; bdata是指片內(nèi)ram的位尋址區(qū),16字節(jié); idata是指片內(nèi)ram的256字節(jié),必須采用間接尋址。 8 8 c51 中的中斷函數(shù)和一般的函數(shù)有什么不同? 答:c51編譯器允許用c51創(chuàng)建中斷服務(wù)函數(shù),中斷函數(shù)是由中斷系統(tǒng)自動(dòng)調(diào)用的。 中斷函數(shù)的定義格式為: 函數(shù)類型 函數(shù)名 interrupt n using n 其中: interrupt和using為關(guān)鍵字; interrupt后面的n 為中斷源的編號(hào),即中斷號(hào); using后面的n所選擇的寄存器組,取值范圍為0

31、3。 定義中斷函數(shù)時(shí),using是一個(gè)選項(xiàng),可以省略不用。如果不用using選項(xiàng),則由編譯器選擇一個(gè)寄存器組作為絕對(duì)寄 存器組。 8051的中斷過程通過使用interrupt關(guān)鍵字和中斷號(hào)(031)來實(shí)現(xiàn),中斷號(hào)告訴編譯器中斷函數(shù)的入口地址。 9 9 c51 采用什么形式對(duì)絕對(duì)地址進(jìn)行訪問? 答:絕對(duì)地址的訪問包括片內(nèi)ram、片外ram及i/o的訪問。c51提供了兩種比較常用的訪問絕對(duì)地址的方法。 (1 1 )絕對(duì)宏 c51編譯器提供了一組宏定義來對(duì)51系列單片機(jī)的code、data、pdata和xdata空間進(jìn)行絕對(duì)尋址。在程序中,用"#includeabsacc.h'即可

32、使用其中聲明的宏來訪問絕對(duì)地址,包括cbyte、xbyte、pword、dbyte、cword、xword、pbyte、dword,具體使用方法參考absacc.h頭文件。其中: cbyte以字節(jié)形式對(duì)code區(qū)尋址;cword以字形式對(duì)code區(qū)尋址; dbyte以字節(jié)形式對(duì)data區(qū)尋址;dword以字形式對(duì)data區(qū)尋址; xbyte以字節(jié)形式對(duì)xdata區(qū)尋址;xword以字形式對(duì)xdata區(qū)尋址; pbyte以字節(jié)形式對(duì)pdata區(qū)尋址;pword以字形式對(duì)pdata區(qū)尋址; 如: #includeabsacc.h #define porta xbyte0xffc0/*將port定義

33、為外部i/o口,地址為0xffc0,長度為8位*/ #define nram dbyte0x40 /*將nram定義為片內(nèi)ram,地址為40h,長度為8位*/ (2 2 ) _at_ 關(guān)鍵字 可以使用關(guān)鍵字_at_對(duì)指定的存儲(chǔ)器空間的絕對(duì)地址進(jìn)行訪問,一般格式如下: 存儲(chǔ)器類型 數(shù)據(jù)類型說明符 變量名 _at_地址常數(shù); 其中,存儲(chǔ)器類型為c51能識(shí)別的數(shù)據(jù)類型,如省略則按存儲(chǔ)器模式規(guī)定的默認(rèn)存儲(chǔ)器類型確定變量的存儲(chǔ)器區(qū)域;數(shù)據(jù)類型為c51支持的數(shù)據(jù)類型;地址常數(shù)用于指定變量的絕對(duì)地址,必須位于有效的存儲(chǔ)器空間之內(nèi);使用_at_定義的變量必須為全局變量。 10 按照給定的數(shù)據(jù)類型和存儲(chǔ)類型,寫

34、出下列變量的說明形式 答: (1)在data區(qū)定義字符變量val1 char data vall; (2)在idata區(qū)定義整型變量val2 int idata val2; (3)在xdata區(qū)定義無符號(hào)字符型數(shù)組val34。 unsigned xdata val34; (4)在xdata區(qū)定義一個(gè)指向char類型的指針px。 char xdata *px; (5)定義可位尋址變量flag。 bit flag; (6)定義特殊功能寄存器變量p3。 sfr p3=0xb0; 11 break 和 continue 語句的區(qū)別是什么? 答:break語句用于從循環(huán)代碼中退出,然后執(zhí)行循環(huán)語句之后的語句,不再進(jìn)入循環(huán)。 continue語句用于退出當(dāng)前循環(huán),不再執(zhí)行本輪循環(huán),程序代碼從下一輪循環(huán)開始執(zhí)行,直到判斷條件不滿足為止。 和break的區(qū)別是該語句不是退出整個(gè)循環(huán)。 12 c51 選擇語句、循環(huán)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論