版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2024年電子信息科學與技術專業畢業生《C語言單片機》求職考試題及面試題庫及答案一、單項選擇題(每題1分,共20分)1.在C51單片機編程中,用于定義位尋址區的關鍵字是()。A.sbitB.bitC.sfrD.code2.51單片機的中斷優先級控制寄存器是()。A.TCONB.SCONC.IPD.IE3.使用定時器T1工作在方式2下作為波特率發生器,若系統晶振頻率為11.0592MHz,要產生9600bps的波特率,則重裝值TH1應為()。A.0xFDB.0xFAC.0xF4D.0xE84.在C51中,定義一個指向片外RAM區0x2000地址的指針,正確的寫法是()。A.charxdata*ptr=0x2000;B.char*xdataptr=0x2000;C.char*ptr=0x2000;D.charxdata*ptr=(charxdata*)0x2000;5.51單片機執行指令“MOVXA,@DPTR”時,會在其引腳上產生()信號。A.PSENB.ALEC.RDD.WR6.關于C51中“interrupt”關鍵字的中斷函數,以下描述正確的是()。A.中斷函數不能有參數,也不能有返回值。B.中斷函數可以有參數,但不能有返回值。C.中斷函數可以有返回值,但不能有參數。D.中斷函數既不能有參數,也不能調用其他函數。7.51單片機P0口在作為通用I/O口使用時,外部必須接()。A.下拉電阻B.上拉電阻C.限流電阻D.不需要接任何電阻8.要將51單片機P1口的第3位(P1.2)置為高電平,同時不影響其他位的狀態,應使用()。A.P1|=0x04;B.P1&=0xFB;C.P1=0x04;D.P1^=0x04;9.C51中,用于定義特殊功能寄存器的關鍵字是()。A.sbitB.sfrC.bitD.idata10.51單片機復位后,程序計數器PC的值為()。A.0x0000B.0x0003C.0x000BD.0x001311.當51單片機同時收到多個中斷請求時,其響應順序由()決定。A.中斷優先級和查詢次序共同B.僅中斷優先級C.僅查詢次序(自然優先級)D.外部電路設計12.在C51程序中,希望將某個變量存儲在片內直接尋址RAM區,應使用()存儲類型。A.dataB.idataC.pdataD.bdata13.使用KeilC51開發時,若希望將某個常數數組存儲在程序存儲器中,以節省RAM空間,應使用()存儲類型。A.xdataB.pdataC.codeD.const14.51單片機定時器/計數器工作在計數模式時,是對()引腳上的脈沖進行計數。A.P3.4(T0)或P3.5(T1)B.P3.2(INT0)或P3.3(INT1)C.P1.0或P1.1D.任意I/O口15.關于C51中的“reentrant”關鍵字,以下說法正確的是()。A.用于聲明一個可重入函數,該函數可被多個任務/中斷安全調用。B.用于聲明一個外部函數。C.用于聲明一個中斷服務函數。D.用于聲明一個只讀變量。16.執行語句“while(!TI);”的目的是()。A.等待串口發送完成B.等待串口接收完成C.等待定時器溢出D.等待外部中斷17.在共陽極數碼管顯示電路中,若要使某一段發光,對應的單片機I/O口應輸出()。A.高電平B.低電平C.高阻態D.懸空18.51單片機外部中斷的觸發方式有()。A.高電平觸發和低電平觸發B.上升沿觸發和下降沿觸發C.電平觸發和邊沿觸發D.脈沖觸發和持續觸發19.以下關于C51中“_nop_()”函數的描述,錯誤的是()。A.它是一個空操作函數。B.它包含在頭文件“intrins.h”中。C.執行該函數消耗一個機器周期的時間。D.它可以用于任何需要精確延時的場合。20.51單片機串行通信方式1的波特率由()決定。A.系統時鐘頻率固定B.定時器T1的溢出率C.定時器T0的溢出率D.外部輸入的時鐘頻率二、多項選擇題(每題2分,共10分,多選、少選、錯選均不得分)1.以下屬于51單片機內部數據存儲器地址空間的是()。A.00H~7FHB.80H~FFHC.0000H~FFFFHD.00H~FFH2.在C51中,以下關于中斷服務函數的寫法,正確的有()。A.voidtimer0_isr(void)interrupt1using1B.voidext0_isr(void)interrupt0C.intserial_isr(void)interrupt4D.voidisr(void)interrupt2using33.能夠實現51單片機I/O口雙向數據傳送的指令或操作有()。A.MOVXA,@RiB.MOVX@DPTR,AC.P1=0xFF;a=P1;D.P0=key_scan();4.關于看門狗定時器(WDT),以下說法正確的有()。A.用于在程序跑飛或陷入死循環時復位系統。B.需要在程序正常運行時定期“喂狗”。C.51系列標準內核沒有內置看門狗,需外接。D.看門狗溢出時間可以軟件設置。5.以下措施有助于提高單片機系統抗干擾能力的有()。A.在電源輸入端并聯大電容和接小電容。B.對未使用的I/O口設置為輸出模式并輸出固定電平。C.在關鍵信號線上串聯小電阻。D.軟件上采用指令冗余、軟件陷阱等技術。三、填空題(每空1分,共15分)1.51單片機的一個機器周期包含______個時鐘周期。若晶振頻率為12MHz,則一個機器周期為______微秒。2.在C51中,使用“sfr16”關鍵字可以定義______位的特殊功能寄存器。3.51單片機訪問片外數據存儲器時,使用______指令,同時會產生______控制信號。4.矩陣鍵盤掃描中,識別按鍵位置通常采用______法或______法。5.若使用8位ADC芯片,其參考電壓Vref為5.00V,當輸入電壓為2.50V時,ADC輸出的數字量理論值為______(用16進制表示)。6.在C51中,定義一個位于片內可位尋址區20H單元第0位的位變量flag,應寫為:____________________。7.I2C總線的兩條信號線分別是______和______。8.使用定時器T0工作在方式1下實現50ms定時(系統晶振12MHz),則初始值TH0=______,TL0=______。(計算時采用十進制或十六進制均可)9.動態數碼管顯示利用了人眼的______效應。四、簡答題(每題5分,共25分)1.簡述在C51程序設計中,“small”、“compact”、“large”三種存儲模式的區別及其對變量默認存儲類型的影響。2.請說明51單片機的中斷響應過程。當中斷服務函數執行完畢后,如何正確返回到主程序?3.在單片機系統中,什么是“按鍵抖動”?在硬件和軟件上分別有哪些常見的消抖方法?4.簡述利用51單片機定時器測量外部脈沖寬度的基本思路(假設脈沖寬度大于定時器溢出周期)。5.在C51與匯編語言混合編程時,如何在C語言中調用一個匯編語言編寫的函數?請簡要說明關鍵步驟。五、程序閱讀與改錯題(每題6分,共18分)1.閱讀以下C51程序片段,分析其功能,并指出可能存在的問題。```#include<reg52.h>sbitLED=P1^0;voiddelay(unsignedintt){while(t--);}voidmain(){while(1){LED=0;delay(60000);LED=1;delay(60000);}}```問題:該程序試圖實現什么功能?其延時函數`delay`有何缺陷?如何改進以獲得更精確的延時?2.以下是一個簡單的串口發送字符串函數,請找出其中的錯誤并改正。```voidUART_SendString(char*s){while(*s!='\0'){SBUF=*s;s++;}}```改正后的代碼:3.以下中斷服務函數用于處理定時器0溢出中斷,實現1秒定時(假設系統晶振為12MHz,定時器初始化為50ms中斷一次)。請補充完整中斷次數計數部分,并寫出完整的定時器0初始化函數(方式1)。```unsignedintcount=0;//中斷次數計數,需在中斷函數外定義voidTimer0_ISR(void)interrupt1{//補充重裝初值代碼TH0=________;TL0=________;//補充中斷次數處理代碼,實現1秒后執行某操作(例如:P1.0取反)__________________________________________________________________________________}voidTimer0_Init(void){//補充初始化代碼____________________________________________________________________________________________________________________________________________________________________}```六、綜合應用題(第1題7分,第2題15分,共22分)1.設計一個基于51單片機的數字溫度計,要求使用DS18B20數字溫度傳感器,測量范圍-55℃~+125℃,精度0.5℃,結果通過4位共陽數碼管動態顯示(顯示格式:XX.X℃)。請回答以下問題:(1)DS18B20采用什么通信協議?簡述其單總線通信的關鍵步驟(初始化、寫時序、讀時序)。(2)畫出單片機、DS18B20、數碼管驅動電路(可選用74HC595或三極管)的連接框圖。(3)簡述主程序的大致流程(初始化、溫度測量、數據顯示)。2.設計一個基于51單片機的簡易智能小車速度測量與顯示系統。小車車輪上安裝有霍爾傳感器或光電碼盤,每轉一圈產生N個脈沖(假設N=20)。使用單片機定時器/計數器T1對脈沖進行計數,定時器T0定時100ms。每隔100ms讀取一次計數值,計算出小車的實時轉速(單位:轉/分鐘,RPM),并通過串口發送到上位機顯示。已知系統晶振為11.0592MHz,串口波特率為9600bps,8位數據位,無校驗,1位停止位。請完成以下任務:(1)計算定時器T0工作在方式1下,定時100ms所需的時間初值(寫出計算過程)。(2)計算定時器T1作為波特率發生器,工作在方式2下的重裝值TH1(寫出計算過程)。(3)編寫C51程序,要求包含:a.定時器T0、T1,串口的初始化函數。b.定時器T0中斷服務函數,在其中計算轉速并準備好待發送數據。c.主函數框架。d.轉速計算公式(基于100ms內的脈沖數m):RP(4)若要求將轉速同時顯示在片外擴展的LCD1602液晶屏上,在硬件連接和軟件設計上需要考慮哪些主要問題?答案及評分參考一、單項選擇題1.A2.C3.A4.D5.C6.A7.B8.A9.B10.A11.A12.A13.C14.A15.A16.A17.B18.C19.D20.B二、多項選擇題1.ABD2.ABD3.ABCD4.ABCD5.ABCD三、填空題1.12,12.163.MOVX,RD或WR4.行掃描,列掃描(或行列反轉)5.0x80(或80H)6.sbitflag=0x20^0;(或sbitflag=0x20^0;)7.SDA(串行數據線),SCL(串行時鐘線)8.TH0=0x3C,TL0=0xB0(或十進制:TH0=60,TL0=176)(計算過程:?)9.視覺暫留(或余輝)四、簡答題1.“small”模式:所有變量默認位于片內RAM(data區),訪問速度快,但空間有限。“compact”模式:所有變量默認位于片外RAM的一頁(pdata區,256字節),通過@R0/R1間接尋址。“large”模式:所有變量默認位于片外RAM(xdata區,64KB),通過@DPTR間接尋址,速度最慢。開發者可通過存儲類型關鍵字(如data,xdata)顯式指定,覆蓋默認模式。2.中斷響應過程:①完成當前指令。②將下一條指令地址壓入堆棧(保護斷點)。③將對應的中斷入口地址裝入PC(如外部中斷0為0003H)。④執行中斷服務函數。返回過程:中斷服務函數必須以“return;”或函數體結束符“}”結尾,編譯器會自動生成RETI指令。RETI指令完成:①從堆棧彈出斷點地址到PC。②恢復中斷邏輯,允許同級或低級中斷被響應。3.按鍵抖動:機械觸點閉合或斷開時,由于彈性作用會產生一系列前沿和后沿抖動電脈沖,而非理想的電平跳變。硬件消抖:使用RS觸發器或RC積分電路濾除抖動。軟件消抖:檢測到按鍵狀態變化后,延時10-20ms再次檢測,若狀態相同則確認按鍵有效。4.基本思路:①將定時器設置為門控方式(GATE=1),計數初值為0。②將待測脈沖信號接入外部中斷引腳(如INT0),同時將該引腳作為定時器的門控信號。③在脈沖上升沿(或下降沿)觸發外部中斷,在中斷中啟動定時器(TRx=1)。④在脈沖下降沿(或上升沿)再次觸發外部中斷,在中斷中停止定時器(TRx=0)并讀取計數值。⑤計數值乘以定時器計數周期即為脈沖寬度。若脈沖寬度超過一次定時溢出,需配合中斷進行溢出次數計數。5.關鍵步驟:①用匯編語言編寫函數,并遵循C51的函數名轉換規則(函數名前可能加下劃線)。②在C語言中用“extern”關鍵字聲明該函數。③按照C51的參數傳遞規則(通過寄存器、固定存儲區或堆棧)在匯編函數中獲取參數和返回結果。④注意保存和恢復可能被破壞的寄存器。五、程序閱讀與改錯題1.功能:控制P1.0引腳上的LED以固定周期閃爍。缺陷:`delay`函數的延時時間嚴重依賴于編譯器優化和單片機執行指令的速度,不精確且不可移植。`while(t--)`循環在優化級別高時可能被移除。改進:使用定時器中斷實現精確延時;或使用內嵌匯編的`_nop_()`函數配合循環;或使用基于晶振頻率計算出的空循環次數(但仍有誤差)。2.錯誤:發送字符前未等待上一個字符發送完成(TI標志未就緒),會導致數據覆蓋丟失。改正:```voidUART_SendString(char*s){while(*s!='\0'){SBUF=*s;while(!TI);//等待發送完成TI=0;//軟件清除發送中斷標志s++;}}```3.補充代碼:```voidTimer0_ISR(void)interrupt1{TH0=0x3C;//重裝50ms定時初值TL0=0xB0;count++;if(count>=20){//20*50ms=1000ms=1scount=0;P1_0=~P1_0;//P1.0取反}}voidTimer0_Init(void){TMOD&=0xF0;//清零T0控制位TMOD|=0x01;//設置T0為方式1TH0=0x3C;//裝入50ms定時初值TL0=0xB0;ET0=1;//允許T0中斷EA=1;//開總中斷TR0=1;//啟動T0}```六、綜合應用題1.(1)單總線(1-Wire)協議。關鍵步驟:初始化:主機發出復位脈沖(>480μs低電平),隨后釋放總線并進入接收模式;從機DS18B20回應存在脈沖(60-240μs低電平)。寫時序:寫“0”:主機拉低總線60-120μs后釋放。寫“1”:主機拉低總線1-15μs后釋放,并保持高電平至時序結束。每個寫時序至少持續60μs,之間有至少1μs恢復時間。讀時序:主機拉低總線至少1μs后釋放,在15μs內采樣總線電平。每個讀時序至少60μs,之間有至少1μs恢復時間。(2)連接框圖:(文字描述)DS18B20數據腳DQ接單片機任一I/O口(如P3.7),并接一個4.7kΩ上拉電阻至VCC。數碼管段選線通過限流電阻接單片機P0口(需加上拉排阻)或串行擴展芯片(如74HC595)輸出。位選線通過三極管或驅動芯片(如ULN2003)接單片機P2口的低4位。(3)主程序流程:初始化(定時器、I/O口、變量)→進入主循環→發送DS18B20初始化序列→發送跳過ROM命令(0xCC)→發送啟動溫度轉換命令(0x44)→延時等待轉換完成(或查詢方式)→再次初始化DS18B20→發送跳過ROM命令→發送讀暫存器命令(0xBE)→連續讀取兩個字節的溫度數據→將數據轉換為實際溫度值(可能涉及小數處理)→將溫度值轉換為數碼管段碼→動態掃描顯示4位數碼管→返回主循環開始。2.(1)計算T0初值(方式1,16位定時):機器周期=所需計數值N因為方式1最大計數值為65536,所以100ms無法直接定時,需采用多次中斷累計。例如,定時10ms,中斷10次為100ms。10ms所需計數值=時間初值X所以TH0=0xDC,TL0=0x00。(注意:此計算有微小誤差,實際項目需調整)(2)計算TH1:波特率B=變形得T(3)C51程序框架:```#include<reg52.h>#include<stdio.h>//可選,用于sprintf#defineN20unsignedintpulse_count_100ms=0;unsignedintrpm=0;bitflag_100ms=0;voidTimer0_Init(void);voidTimer1_UART_Init(void);voidUART_SendByte(unsignedchardat);voidmain(){Timer0_Init();Timer1_UART_Init();//設置T1為計數模式,對P3.5脈沖計數TMOD&=0x0F;//清零T1控制位TMOD|=0x50;//設置T1為方式1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年計算思維教學案例
- 傳感器與檢測技術光電式傳感器解讀
- 中班科學活動《有趣的昆蟲》
- 《金陵12釵美》課件
- 《石羊河流域地下水》課件
- 《網絡安全技術基礎》課件
- 世界旅游景點亞洲篇文萊
- 夫妻共同財產約定協議
- 物流質檢考試題及答案
- 博白縣2026-2027學年數學四上期末教學質量檢測模擬試題含解析
- 2026年出入境輔警理論考試試卷(含答案)
- 2026江蘇徐州市市級機關印刷廠有限公司招聘工作人員2人筆試題庫附答案詳解(基礎題)
- 2025年教師選調教育綜合知識真題及答案
- 2025-2030年智能農業灌溉系統行業跨境出海戰略分析研究報告
- 電動汽車動力性能計算表
- 喬木支撐專項施工方案(3篇)
- 數字化解決方案設計師職業資格認定考試復習題庫(附答案)
- 商務數據分析師知識考試復習題庫(附答案)
- 2026中國電子簽名法律效力與行業發展報告
- 腦梗塞中醫護理要點與技巧
- 2026年貴州遵鈦集團有限責任公司校園招聘考試模擬試題及答案解析
評論
0/150
提交評論