版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
山東工商學院2020學年第一學期單片機原理課程試題A卷(考試時間:120分鐘,滿分100分)特別提醒:1、所有答案均須填寫在答題紙上,寫在試題紙上無效。2、每份答卷上均須準確填寫函授站、專業(yè)、年級、學號、姓名、課程名稱。一判斷題(共20題,總分值20分)1.EPROM的地址線為11條時,能訪問的存儲空間有4K。(1分)(
)2.8155的復位引腳可與89C51的復位引腳直接相聯(lián)。(1分)(
)3.指令字節(jié)數(shù)越多,執(zhí)行時間越長。(1分)(
)4.內(nèi)部寄存器Rn(n=0-7)作為間接尋址寄存器。(1分)(
)5.CLRR0(1分)(
)6.內(nèi)部寄存器Rn(n=0-7)作為間接尋址寄存器。(1分)(
)7.8155的復位引腳可與89C51的復位引腳直接相聯(lián)。(1分)(
)8.MCS—51的串行接口是全雙工的。(1分)(
)9.為了消除按鍵的抖動,常用的方法只有硬件方法(1分)(
)10.8051單片機,程序存儲器數(shù)和數(shù)據(jù)存儲器擴展的最大范圍都是一樣的(1分)(
)11.51單片機只能做控制用,不能完成算術(shù)運算。(1分)(
)12.指令字節(jié)數(shù)越多,執(zhí)行時間越長。(1分)(
)13.必須有中斷源發(fā)出中斷請求,并且CPU開中斷,CPU才可能響應中斷(1分)(
)14.MCS—51的串行接口是全雙工的。(1分)(
)15.當MCS—51上電復位時,堆棧指針SP=00H。(1分)(
)16.為了消除按鍵的抖動,常用的方法只有硬件方法(1分)(
)17.51單片機只能做控制用,不能完成算術(shù)運算。(1分)(
)18.8051每個中斷源相應地在芯片上都有其中斷請求輸入引腳。(1分)(
)19.當MCS—51上電復位時,堆棧指針SP=00H。(1分)(
)20.8051每個中斷源相應地在芯片上都有其中斷請求輸入引腳。(1分)(
)二簡答題(共85題,總分值85分)21.閱讀P158~P160例4.2的程序,回答下列問題1、程序中對CKCON的賦值采用的是CKCON&=0xef;而非CKCON=0xef;,這樣有什么好處?2、在中斷服務程序中對定時器重裝初值是,用的TL1|=0xb0;而非TL1=0xb0;,這樣有什么好處?3、在查詢方式對應的程序中,對定時器賦初值用的是TH1=-50000/256;TL1=-50000%256;按照教材所講的公式,定時器的初值應該是216-50000,簡述這樣做的理由。4、請將例題中的中斷式程序改為用定時器T0實現(xiàn),給出完整的程序。(1分)22.下圖顯示了C8051F020單片機IO端口交叉開關的配置:請說出資源使用情況,標出每個資源信號對應的引腳。(TX0=P?.?........)如果我們現(xiàn)在要改變使用UART1、SPI0、SMBus接口,其它不變,請問所用的外設引腳與單片機的端口如何對應?(1分)23.CIP-51有那兩種可編程的電源管理方式?如何進入和退出每種方式?(1分)24.C8051F020單片機有哪些存儲空間,各存儲空間的容量有多大,訪問這些存儲空間使用的指令和尋址方式有什么區(qū)別,C51語言中如何區(qū)分這些存儲空間?若(PSW)=0x18,則當前的工作寄存器R0~R7在片內(nèi)RAM的哪些單元?堆棧指針SP的復位值是多少,堆棧一般安排在哪些存儲區(qū)域?(1分)25.若系統(tǒng)時鐘頻率SYSCLK=12MHz,T0工作在方式1,產(chǎn)生25ms的定時中斷,TF0為高級中斷源,使P1.1輸出周期為1s的方波,試編寫用中斷方式實現(xiàn)的C51程序。(1分)26.下圖顯示了C8051F020單片機IO端口交叉開關的配置界面,如果我們現(xiàn)在要使用UART0、SPI0、SMBus、并且P1.2、P1.3作為兩路模擬量的輸入端,請問所用的外設引腳與單片機的端口如何對應?(如TX0=P?.?........)(1分)27.閱讀教材P259~P264利用C8051F020片內(nèi)溫度傳感器進行芯片溫度采集的程序,回答問題。1、說明選擇片內(nèi)溫度傳感器通道工作的方法。2、說明用查詢方式進行A/D轉(zhuǎn)換的查詢步驟。3、啟動ADC0轉(zhuǎn)換的方法有哪幾種,兩段程序中分別使用的是哪種啟動方法?4、在中斷方式的程序中,為了提高數(shù)據(jù)采集的準確性,采用了什么方法?5、如果想實現(xiàn)對特定范圍的溫度進行判定,如當溫度在20~30℃時執(zhí)行某項功能,使用ADC0的窗口比較功能,應如何對程序進行擴充?(1分)28.片外RAM的BLOCK開始的單元有一無符號數(shù)據(jù)塊,數(shù)據(jù)長度存放在片內(nèi)RAM的LEN單元,要求用匯編語言編寫程序統(tǒng)計其中奇數(shù)和偶數(shù)的個數(shù),分別存放在片內(nèi)RAM的ODD和EVEN單元(1分)29.閱讀下圖,說出使用C8051F020的A/D轉(zhuǎn)換器用到哪些SFR?各個SFR起什么作用?(1分)30.若系統(tǒng)時鐘頻率SYSCLK=12MHz,T0工作在方式1,產(chǎn)生25ms的定時中斷,TF0為高級中斷源,使P1.1輸出周期為1s的方波,試編寫用中斷方式實現(xiàn)的C51程序。要求給出定時器初值的計算過程,給出關鍵代碼處的注釋。(1分)31.P2、P3口驅(qū)動發(fā)光管,共接了16個發(fā)光二極管,請閱讀下面的程序,問:定時器3的作用是什么?說出程序的執(zhí)行效果。#include<c8051f020.h>//包含特殊功能寄存器SFR聲明的頭文件#defineSYSCLK2000000//系統(tǒng)時鐘頻率近似為2MHzsfr16TMR3RL=0x92;//Timer3定時器重裝值sfr16TMR3=0x94;//Timer3定時器計數(shù)值voidPORT_Init(void);voidTimer3_Init(intcounts);voidTimer3_ISR(void);unsignedintxdatap2led[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};voidmain(void){WDTCN=0xde;//禁用WDT看門狗定時器WDTCN=0xad;PORT_Init();Timer3_Init(SYSCLK/12/10);//初始化定時器3,中斷頻率10HzEA=1;//使能系統(tǒng)全局中斷while(1);//死循環(huán)等待中斷}//配置交叉開關和通用IO輸出端口voidPORT_Init(void){XBR2=0x40;//使能交叉開關和弱上拉}//定時器3中斷初始化,時間間隔由counts指定voidTimer3_Init(intcounts){TMR3CN=0x00;//停止定時器3;清除中斷標志位TF3;//使用SYSCLK/12作為時間基準TMR3RL=-counts;//初始化重裝值TMR3=0xffff;//設定立即重裝EIE2|=0x01;//使能定時器3(Timer3)中斷TMR3CN|=0x04;//啟動定時器3(Timer3)}//定時器3(Timer3)的中斷服務子程序voidTimer3_ISR(void)interrupt14{staticintcount;staticinti=9,j=0;staticintled=0xff;TMR3CN&=~(0x80);//清除中斷標志位TF3count++;if(count==5){count=0;P3=led;P2=p2led[j];led=led<<1;i--;j++;if(j==8)j=0;if(i==0){i=9;led=0xff;}}}(1分)32.C8051F020單片機有強大的中斷系統(tǒng),回答下列相關問題1、C8051F020單片機有多少中斷源和優(yōu)先級?2、對中斷源的使能是如何控制的?3、用兩種方法寫出允許定時器T1中斷,并將其設為高級中斷的指令序列。4、不同中斷源的中斷向量是如何分配的?5、在C51中如何定義中斷函數(shù)?6、中斷響應最快需要多少時鐘周期,最慢需要多少時鐘周期,最慢發(fā)生在什么情況時?(1分)33.C8051F020單片機的存儲器組織采用哈佛結(jié)構(gòu),回答下列相關問題1、片內(nèi)RAM根據(jù)功能可以劃分為哪些部分?堆棧一般設置在什么區(qū)域?2、片內(nèi)RAM的高128B與SFR地址重復,如何區(qū)分?3、讀寫XRAM的指令有哪兩種形式?4、在C51語言中如何區(qū)分變量所在的存儲區(qū)域,為此C51擴展了哪些與存儲器類型有關的關鍵字?(1分)34.閱讀下面的匯編語言程序段,說明程序的功能,若程序運行前(A)=11111000B,則程序運行后片內(nèi)RAM的20H和21H單元中的內(nèi)容是多少?MOVB,#100DIVABMOV20H,AMOVA,BMOVB,#10DIVABSWAPAADDA,BMOV21H,A(1分)35.根據(jù)下圖,讀voidT0_mode1_2ms_init(void)程序,詳細注釋程序中的每行意思,說出該程序的功能。voidT0_mode1_2ms_init(void){CKCON&=0xf7;TMOD=0x01;TH0=0xf8;TL0=0x30;TCON|=0x10;}(1分)36.下列程序是一個中斷方式的程序,說出程序功能并用查詢法實現(xiàn)該程序的功能。主程序:#include<c8051f020.h>chardata*p;//發(fā)送數(shù)據(jù)塊地址指針voidmain(void){XBR0=0x04;//交叉開關配置,使能UART0XBR2=0x40;//使能交叉開關P0MDOUT|=0x01;//TX0為推挽輸出方式TMOD=0x20;//初始化并啟動T1TH1=0xFD;TL1=0xFD;TR1=1;SCON0=0x40;//UART0初始化p=0x20;//地址指針初始化EA=1;//開中斷ES0=1;SBUF0=*p;//發(fā)送第一個字符while(1);//等待發(fā)送中斷}中斷服務程序:voidinterrupt_UART0(void)interrupt4{TI0=0;//清發(fā)送中斷標志p++;if(p<0x40)SBUF0=*p;//發(fā)送下一字節(jié)elseES0=0;//關串口中斷}(1分)37.若系統(tǒng)時鐘頻率SYSCLK=12MHz,T0工作在方式1,產(chǎn)生25ms的定時中斷,TF0為高級中斷源,使P1.1輸出周期為1s的方波,試編寫用中斷方式實現(xiàn)的C51程序。要求給出定時器初值的計算過程,給出關鍵代碼處的注釋。(1分)38.C8051F020單片機的中斷系統(tǒng)有多少個中斷源和優(yōu)先級?對中斷的允許和禁止是如何控制的?多個中斷源優(yōu)先級相同的情況下,按什么順序響應中斷請求?一個中斷從提出到得到CPU的響應最短要多長時間,如果CPU響應中斷的條件全部具備,響應中斷的最長時間為多少,什么情況下會出現(xiàn)這種情況?C51中如何定義中斷服務函數(shù)?(1分)39.下圖顯示了C8051F020單片機IO端口交叉開關的配置:請說出資源使用情況,標出每個資源信號對應的引腳。(TX0=P?.?........)如果我們現(xiàn)在要改變使用UART1、SPI0、SMBus接口,其它不變,請問所用的外設引腳與單片機的端口如何對應?(1分)40.閱讀P244圖5-4ADC0系統(tǒng)功能框圖,回答下列問題1、ADC0采用的轉(zhuǎn)換原理是什么?2、ADC0支持多少路模擬通道,如何對通道進行選擇和配置?3、ADC0有哪幾種啟動方式?4、如將AIN0配置為單端方式,當AIN0上輸入的模擬電壓為VREF/2時,轉(zhuǎn)換結(jié)果采用右對齊和左對齊時分別是多少?5、圖中上方的四個寄存器ADC0GTH、ADC0GTL、ADC0LTH、ADC0LTL的作用是什么。(1分)41.從下圖中找出C8051F020單片機有哪些復位源?各個復位源的的意思是什么?(1分)42.設甲、乙兩機采用UART0進行串行通信,波特率采用9600,甲機將其位于XRAM的發(fā)送緩沖區(qū)TBUF中的數(shù)據(jù)發(fā)送出去,乙機將收到的數(shù)據(jù)存放在其位于XRAM的接收緩沖區(qū)RBUF中。設兩機的系統(tǒng)時鐘都為12MHz,要求采用方式1通信,T1作波特率發(fā)生器,用累加和進行校驗,直到乙機接收正確為止。要求用查詢方式編寫甲、乙兩機的通信程序(1分)43.C8051F020單片機有強大的中斷系統(tǒng),回答下列相關問題1、C8051F020單片機有多少中斷源和優(yōu)先級?2、對中斷源的使能是如何控制的?3、用兩種方法寫出允許定時器T1中斷,并將其設為高級中斷的指令序列。4、不同中斷源的中斷向量是如何分配的?5、在C51中如何定義中斷函數(shù)?6、中斷響應最快需要多少時鐘周期,最慢需要多少時鐘周期,最慢發(fā)生在什么情況時?(1分)44.下面一段程序是C8051F020振蕩源初始化程序,一般在上電后即運行。請問運行該段程序時單片機用的什么振蕩源?頻率為多少?voidOscillator_Init(){inti=0;OSCXCN=0x67;for(i=0;i<3000;i++);//Wait1msforinitializationwhile((OSCXCN&0x80)==0);OSCICN=0x08;}(1分)45.閱讀教材P168例4.8的程序,回答問題:1、程序中為什么要使用頭文件string.h?2、程序中的P是什么含義?3、說明該程序進行奇偶校驗的原理?4、除程序中的方法外,還有什么方法實現(xiàn)串行通信中的奇偶校驗?(1分)46.如何才能節(jié)省單片機的功耗?C8051F單片機的電源管理有哪些方式?(1分)47.根據(jù)下圖,讀voidT0_mode1_2ms_init(void)程序,詳細注釋程序中的每行意思,說出該程序的功能。voidT0_mode1_2ms_init(void){CKCON&=0xf7;TMOD=0x01;TH0=0xf8;TL0=0x30;TCON|=0x10;}(1分)48.從下圖中找出C8051F020單片機有哪些復位源?各個復位源的的意思是什么?(1分)49.C8051F020單片機的中斷系統(tǒng)中有多少個中斷源和優(yōu)先級?如果CPU響應中斷的條件全部具備,響應中斷的最長時間為多少,什么情況下會出現(xiàn)這種情況?(1分)50.下圖顯示了C8051F020單片機IO端口交叉開關的配置界面,如果我們現(xiàn)在要使用UART0、SPI0、SMBus、并且P1.2、P1.3作為兩路模擬量的輸入端,請問所用的外設引腳與單片機的端口如何對應?(如TX0=P?.?........)(1分)51.有7個能使C8051F系列單片機進入復位狀態(tài)的復位源:上電/掉電復位、外部/RST引腳復位、外部CNVSTR信號復位、軟件命令復位、比較器0復位、時鐘丟失檢測器和看門狗定時器超時復位。請說出這7種復位的含義及你認為的用途。(1分)52.下面是用DAC0產(chǎn)生正弦波輸出的程序,閱讀之后回答問題。#include<c8051f020.h>#include<math.h>sfr16DAC0=0xd2voiddac0_init(void);voidmain(void){uninsignedinti;floatx,y;WDTCN=0xde;WDTCN=0xad;dac0_init();while(1){for(x=0;x<(2*3.14159);x+=0.1){y=2048*(sin(x)+1);DAC0=y;for(i=0;i<=200;i++);}}}voiddac0_int(void){REF0CN=0x03;DAC0CN|=0x08;}問題:1、程序中DAC輸出更新采用的是什么方法,除該方法外還有哪些方法,這些方法的選擇由什么決定?2、程序中用sfr16定義16位特殊功能寄存器DAC0,請問在C51中對用sfr16定義16位特殊功能寄存器有什么要求?3、說明程序中公式y(tǒng)=2048*(sin(x)+1)的設計依據(jù)。4、程序中for(i=0;i<=200;i++);語句的作用是什么?(1分)53.C8051F020單片機有靈活的復位與時鐘控制系統(tǒng),回答下列相關問題1、C8051F020單片機有哪幾種復位源?2、在程序中如何禁止看門狗復位源,給出C51代碼。3、應用程序中如何將內(nèi)部時鐘切換到外部時鐘,給出C51代碼。(1分)54.下列程序是一個中斷方式的程序,說出程序功能并用查詢法實現(xiàn)該程序的功能。主程序:#include<c8051f020.h>chardata*p;//發(fā)送數(shù)據(jù)塊地址指針voidmain(void){XBR0=0x04;//交叉開關配置,使能UART0XBR2=0x40;//使能交叉開關P0MDOUT|=0x01;//TX0為推挽輸出方式TMOD=0x20;//初始化并啟動T1TH1=0xFD;TL1=0xFD;TR1=1;SCON0=0x40;//UART0初始化p=0x20;//地址指針初始化EA=1;//開中斷ES0=1;SBUF0=*p;//發(fā)送第一個字符while(1);//等待發(fā)送中斷}中斷服務程序:voidinterrupt_UART0(void)interrupt4{TI0=0;//清發(fā)送中斷標志p++;if(p<0x40)SBUF0=*p;//發(fā)送下一字節(jié)elseES0=0;//關串口中斷}(1分)55.XRAM的BLOCK單元開始處有一8位無符號數(shù)據(jù)塊,其長度存放在片外RAM的LEN單元中,用匯編語言編寫程序找出其中的最大值,放入片外RAM的MAX單元。(1分)56.閱讀P242圖5-4ADC0系統(tǒng)功能框圖,回答下列問題1、ADC0采用的轉(zhuǎn)換原理是什么?按轉(zhuǎn)換原理分,還有哪些類型的AD轉(zhuǎn)換器?2、如果要將AIN0和AIN1配置為差分方式,AMX0CF和AMX0SL應如何配置?3、如果要使用ADC0內(nèi)部的溫度傳感器通道采集芯片內(nèi)部的溫度,應做哪些設置,給出匯編指令代碼?4、采用往AD0BUSY寫1啟動轉(zhuǎn)換,查詢方式讀取轉(zhuǎn)換結(jié)果,相應的步驟是什么,給出C51代碼?(1分)57.有7個能使C8051F系列單片機進入復位狀態(tài)的復位源:上電/掉電復位、外部/RST引腳復位、外部CNVSTR信號復位、軟件命令復位、比較器0復位、時鐘丟失檢測器和看門狗定時器超時復位。請說出這7種復位的含義及你認為的用途。(1分)58.閱讀P272~273DAC0用程序更新輸出,產(chǎn)生階梯波的程序,回答下列問題1、階梯波中每梯的高度是如何控制的?2、階梯波中每梯的寬度是如何控制的?3、除了例題中采用的程序更新輸出方式外,DAC0還有哪幾種輸出更新方式?4、仿照例題,編寫產(chǎn)生方波的程序。(1分)59.閱讀P242圖5-4ADC0系統(tǒng)功能框圖,回答下列問題1、ADC0采用的轉(zhuǎn)換原理是什么?按轉(zhuǎn)換原理分,還有哪些類型的AD轉(zhuǎn)換器?2、如果要將AIN0和AIN1配置為差分方式,AMX0CF和AMX0SL應如何配置?3、如果要使用ADC0內(nèi)部的溫度傳感器通道采集芯片內(nèi)部的溫度,應做哪些設置,給出匯編指令代碼?4、采用往AD0BUSY寫1啟動轉(zhuǎn)換,查詢方式讀取轉(zhuǎn)換結(jié)果,相應的步驟是什么,給出C51代碼?(1分)60.下列程序是一個中斷方式的程序,說出程序功能并用查詢法實現(xiàn)該程序的功能。#include<c8051f020.h>chardata*p;//發(fā)送數(shù)據(jù)塊地址指針voidmain(void){XBR0=0x04;//交叉開關配置,使能UART0XBR2=0x40;//使能交叉開關P0MDOUT|=0x01;//TX0為推挽輸出方式TMOD=0x20;//初始化并啟動T1TH1=0xFD;TL1=0xFD;TR1=1;SCON0=0x40;//UART0初始化p=0x20;//地址指針初始化EA=1;//開中斷ES0=1;SBUF0=*p;//發(fā)送第一個字符while(1);//等待發(fā)送中斷}voidinterrupt_UART0(void)interrupt4{TI0=0;p++;if(p<0x40)SBUF0=*p;elseES0=0;}(1分)61.C8051F020單片機的中斷系統(tǒng)有多少個中斷源和優(yōu)先級?對中斷的允許和禁止是如何控制的?多個中斷源優(yōu)先級相同的情況下,按什么順序響應中斷請求?一個中斷從提出到得到CPU的響應最短要多長時間,如果CPU響應中斷的條件全部具備,響應中斷的最長時間為多少,什么情況下會出現(xiàn)這種情況?C51中如何定義中斷服務函數(shù)?(1分)62.XRAM的BLOCK單元開始處有一8位無符號數(shù)據(jù)塊,其長度存放在片外RAM的LEN單元中,用匯編語言編寫程序找出其中的最大值,放入片外RAM的MAX單元。(1分)63.根據(jù)下圖,與它相關的SFR有幾個?敘述一下定時/計數(shù)器工作原理,各個SFR起什么作用。(1分)64.根據(jù)下圖,請回答問題:CIP-51的有哪些存儲空間?各個存儲空間的功能及尋址范圍?CIP-51的內(nèi)部RAM空間有多少字節(jié)?它們在應用中有什么專門的用途?堆棧一般應設置在位置?CIP-51有哪些尋址方式?位尋址能尋找到哪些位?(1分)65.C8051F020單片機的中斷系統(tǒng)中有多少個中斷源和優(yōu)先級?如果CPU響應中斷的條件全部具備,響應中斷的最長時間為多少,什么情況下會出現(xiàn)這種情況?(1分)66.下面是用DAC0產(chǎn)生正弦波輸出的程序,閱讀之后回答問題。#include<c8051f020.h>#include<math.h>sfr16DAC0=0xd2voiddac0_init(void);voidmain(void){uninsignedinti;floatx,y;WDTCN=0xde;WDTCN=0xad;dac0_init();while(1){for(x=0;x<(2*3.14159);x+=0.1){y=2048*(sin(x)+1);DAC0=y;for(i=0;i<=200;i++);}}}voiddac0_int(void){REF0CN=0x03;DAC0CN|=0x08;}問題:1、程序中DAC輸出更新采用的是什么方法,除該方法外還有哪些方法,這些方法的選擇由什么決定?2、程序中用sfr16定義16位特殊功能寄存器DAC0,請問在C51中對用sfr16定義16位特殊功能寄存器有什么要求?3、說明程序中公式y(tǒng)=2048*(sin(x)+1)的設計依據(jù)。4、程序中for(i=0;i<=200;i++);語句的作用是什么?(1分)67.如何才能節(jié)省單片機的功耗?C8051F單片機的電源管理有哪些方式?(1分)68.簡述使用片內(nèi)溫度傳感器進行數(shù)據(jù)采集的編程方法。程序中使用什么方法可以使采集的數(shù)據(jù)更精確,減少干擾的影響。(1分)69.C51語言中有哪些特殊數(shù)據(jù)類型,簡要說明定義和使用這些數(shù)據(jù)類型方法。簡述C51指針的分類與每一類指針的特點。(1分)70.閱讀教材P199例4.8的程序,回答問題1、程序中為什么要使用頭文件string.h?2、程序中的P是什么含義?3、說明該程序進行奇偶校驗的原理?4、除程序中的方法外,還有什么方法實現(xiàn)串行通信中的奇偶校驗?(1分)71.簡述使用片內(nèi)溫度傳感器進行數(shù)據(jù)采集的編程方法。程序中使用什么方法可以使采集的數(shù)據(jù)更精確,減少干擾的影響。(1分)72.閱讀P272~273DAC0用程序更新輸出,產(chǎn)生階梯波的程序,回答下列問題1、階梯波中每梯的高度是如何控制的?2、階梯波中每梯的寬度是如何控制的?3、除了例題中采用的程序更新輸出方式外,DAC0還有哪幾種輸出更新方式?4、仿照例題,編寫產(chǎn)生方波的程序。(1分)73.下列程序是一個中斷方式的程序,說出程序功能并用查詢法實現(xiàn)該程序的功能。主程序:#include<c8051f020.h>chardata*p;//發(fā)送數(shù)據(jù)塊地址指針voidmain(void){XBR0=0x04;//交叉開關配置,使能UART0XBR2=0x40;//使能交叉開關P0MDOUT|=0x01;//TX0為推挽輸出方式TMOD=0x20;//初始化并啟動T1TH1=0xFD;TL1=0xFD;TR1=1;SCON0=0x40;//UART0初始化p=0x20;//地址指針初始化EA=1;//開中斷ES0=1;SBUF0=*p;//發(fā)送第一個字符while(1);//等待發(fā)送中斷}中斷服務程序:voidinterrupt_UART0(void)interrupt4{TI0=0;//清發(fā)送中斷標志p++;if(p<0x40)SBUF0=*p;//發(fā)送下一字節(jié)elseES0=0;//關串口中斷}(1分)74.下列程序是一個中斷方式的程序,說出程序功能并用查詢法實現(xiàn)該程序的功能。主程序:#include<c8051f020.h>chardata*p;//發(fā)送數(shù)據(jù)塊地址指針voidmain(void){XBR0=0x04;//交叉開關配置,使能UART0XBR2=0x40;//使能交叉開關P0MDOUT|=0x01;//TX0為推挽輸出方式TMOD=0x20;//初始化并啟動T1TH1=0xFD;TL1=0xFD;TR1=1;SCON0=0x40;//UART0初始化p=0x20;//地址指針初始化EA=1;//開中斷ES0=1;SBUF0=*p;//發(fā)送第一個字符while(1);//等待發(fā)送中斷}中斷服務程序:voidinterrupt_UART0(void)interrupt4{TI0=0;//清發(fā)送中斷標志p++;if(p<0x40)SBUF0=*p;//發(fā)送下一字節(jié)elseES0=0;//關串口中斷}(1分)75.根據(jù)下圖,與它相關的SFR有幾個?敘述一下定時/計數(shù)器工作原理,各個SFR起什么作用。(1分)76.C8051F020的片外數(shù)據(jù)存儲器0x2000~0x20ff單元共有256個字節(jié)數(shù)據(jù),要求使用UART0的方式1發(fā)送出去,為確??煽?,采用累加和進行校驗,數(shù)據(jù)發(fā)送完后,最后發(fā)送累加和。設傳輸波特率為4800bit/s,系統(tǒng)時鐘頻率SYSCLK=12MHz。用T1工作于方式2作波特率發(fā)生器,取T1M=1、SMOD0=1。試用查詢方式編寫發(fā)送程序,要求給出T1時間常數(shù)的計算過程并給主要代碼加上注釋。(1分)77.XRAM的BLOCK單元開始有一8位無符號數(shù)據(jù)塊,其長度存放在片內(nèi)RAM的LEN單元中,用匯編語言編寫程序找出其中的最小值,放入片內(nèi)RAM的MIN單元。(1分)78.閱讀P244圖5-4ADC0系統(tǒng)功能框圖,回答下列問題1、ADC0采用的轉(zhuǎn)換原理是什么?2、ADC0支持多少路模擬通道,如何對通道進行選擇和配置?3、ADC0有哪幾種啟動方式?4、如將AIN0配置為單端方式,當AIN0上輸入的模擬電壓為VREF/2時,轉(zhuǎn)換結(jié)果采用右對齊和左對齊時分別是多少?5、圖中上方的四個寄存器ADC0GTH、ADC0GTL、ADC0LTH、ADC0LTL的作用是什么。(1分)79.若系統(tǒng)時鐘頻率SYSCLK=12MHz,T0工作在方式1,產(chǎn)生25ms的定時中斷,TF0為高級中斷源,使P1.1輸出周期為1s的方波,試編寫用中斷方式實現(xiàn)的C51程序。(1分)80.C8051F020單片機的存儲器組織采用哈佛結(jié)構(gòu),回答下列相關問題1、訪問片內(nèi)RAM、片外RAM、程序存儲器各用什么指令?2、能夠進行位尋址的空間有哪些?3、外部RAM擴展時,地址復用與非復用有什么區(qū)別?如用低端端口非復用方式擴展,地址線、數(shù)據(jù)線各由哪個端口提供。4、在C51語言中定義變量時,如何區(qū)分變量所在的存儲區(qū)域,為此C51擴展了哪些與存儲器類型的關鍵字?5、若(PSW)=0x08,則當前工作寄存器對應內(nèi)部RAM的哪些單元?在C51的函數(shù)定義中,如何設置工作寄存器區(qū)?(1分)81.下面一段程序是C8051F020振蕩源初始化程序,一般在上電后即運行。請問運行該段程序時單片機用的什么振蕩源?頻率為多少?voidOscillator_Init(){inti=0;OSCXCN=0x67;for(i=0;i<3000;i++);//Wait1msforinitializationwhile((OSCXCN&0x80)==0);OSCICN=0x08;}(1分)82.C8051F020單片機有靈活的復位與時鐘控制系統(tǒng),回答下列相關問題1、C8051F020單片機有哪幾種復位源?2、在程序中如何禁止看門狗復位源,給出C51代碼。3、應用程序中如何將內(nèi)部時鐘切換到外部時鐘,給出C51代碼。(1分)83.下面一段程序是什么意思?單片機使用的是內(nèi)部還是外部振蕩源?voidOscillator_Init(){inti=0;OSCXCN=0x67;for(i=0;i<3000;i++);//Wait1msforinitializationwhile((OSCXCN&0x80)==0);OSCICN=0x08;}(1分)84.C8051F020單片機有哪些存儲空間,各存儲空間的容量有多大,訪問這些存儲空間使用的指令和尋址方式有什么區(qū)別,C51語言中如何區(qū)分這些存儲空間?若(PSW)=0x18,則當前的工作寄存器R0~R7在片內(nèi)RAM的哪些單元?堆棧指針SP的復位值是多少,堆棧一般安排在哪些存儲區(qū)域?(1分)85.閱讀教材P168例4.8的程序,回答問題:1、程序中為什么要使用頭文件string.h?2、程序中的P是什么含義?3、說明該程序進行奇偶校驗的原理?4、除程序中的方法外,還有什么方法實現(xiàn)串行通信中的奇偶校驗?(1分)86.根據(jù)下圖,請回答問題:CIP-51的有哪些存儲空間?各個存儲空間的功能及尋址范圍?CIP-51的內(nèi)部RAM空間有多少字節(jié)?它們在應用中有什么專門的用途?堆棧一般應設置在位置?CIP-51有哪些尋址方式?位尋址能尋找到哪些位?(1分)87.PSW的作用是什么?(PSW)=0x10時,使用哪一組工作寄存器,其在片內(nèi)RAM中的地址是多少?(1分)88.根據(jù)下圖,說出CIP-51的有哪些存儲空間?各個存儲空間的功能及尋址范圍?CIP-51的內(nèi)部RAM空間有多少字節(jié)?它們在應用中有什么專門的用途?堆棧一般應設置在位置?(1分)89.閱讀下面的匯編語言程序段,說明程序的功能,若程序運行前(A)=11111000B,則程序運行后片內(nèi)RAM的20H和21H單元中的內(nèi)容是多少?MOVB,#100DIVABMOV20H,AMOVA,BMOVB,#10DIVABSWAPAADDA,BMOV21H,A(1分)90.CIP-51有那兩種可編程的電源管理方式?如何進入和退出每種方式?(1分)91.閱讀教材P259~P264利用C8051F020片內(nèi)溫度傳感器進行芯片溫度采集的程序,回答問題。1、說明選擇片內(nèi)溫度傳感器通道工作的方法。2、說明用查詢方式進行A/D轉(zhuǎn)換的查詢步驟。3、啟動ADC0轉(zhuǎn)換的方法有哪幾種,兩段程序中分別使用的是哪種啟動方法?4、在中斷方式的程序中,為了提高數(shù)據(jù)采集的準確性,采用了什么方法?5、如果想實現(xiàn)對特定范圍的溫度進行判定,如當溫度在20~30℃時執(zhí)行某項功能,使用ADC0的窗口比較功能,應如何對程序進行擴充?(1分)92.設甲、乙兩機采用UART0進行串行通信,波特率采用9600,甲機將其位于XRAM的發(fā)送緩沖區(qū)TBUF中的數(shù)據(jù)發(fā)送出去,乙機將收到的數(shù)據(jù)存放在其位于XRAM的接收緩沖區(qū)RBUF中。設兩機的系統(tǒng)時鐘都為12MHz,要求采用方式1通信,T1作波特率發(fā)生器,用累加和進行校驗,直到乙機接收正確為止。要求用查詢方式編寫甲、乙兩機的通信程序(1分)93.簡述使用片內(nèi)溫度傳感器進行數(shù)據(jù)采集的編程方法。程序中使用什么方法可以使采集的數(shù)據(jù)更精確,減少干擾的影響。(1分)94.CIP-51的哪些單元可以進行位尋址?在C51中定義特殊功能位的方法有哪幾種,請以特殊功能寄存器中的位加以說明。(1分)95.PSW的作用是什么?(PSW)=0x10時,使用哪一組工作寄存器,其在片內(nèi)RAM中的地址是多少?(1分)96.閱讀P158~P160例4.2的程序,回答下列問題1、程序中對CKCON的賦值采用的是CKCON&=0xef;而非CKCON=0xef;,這樣有什么好處?2、在中斷服務程序中對定時器重裝初值是,用的TL1|=0xb0;而非TL1=0xb0;,這樣有什么好處?3、在查詢方式對應的程序中,對定時器賦初值用的是TH1=-50000/256;TL1=-50000%256;按照教材所講的公式,定時器的初值應該是216-50000,簡述這樣做的理由。4、請將例題中的中斷式程序改為用定時器T0實現(xiàn),給出完整的程序。(1分)97.XRAM的BLOCK單元開始有一8位無符號數(shù)據(jù)塊,其長度存放在片內(nèi)RAM的LEN單元中,用匯編語言編寫程序找出其中的最小值,放入片內(nèi)RAM的MIN單元。(1分)98.閱讀教材P199例4.8的程序,回答問題1、程序中為什么要使用頭文件string.h?2、程序中的P是什么含義?3、說明該程序進行奇偶校驗的原理?4、除程序中的方法外,還有什么方法實現(xiàn)串行通信中的奇偶校驗?(1分)99.片外RAM的BLOCK開始的單元有一無符號數(shù)據(jù)塊,數(shù)據(jù)長度存放在片內(nèi)RAM的LEN單元,要求用匯編語言編寫程序統(tǒng)計其中奇數(shù)和偶數(shù)的個數(shù),分別存放在片內(nèi)RAM的ODD和EVEN單元(1分)100.下列程序是一個中斷方式的程序,說出程序功能并用查詢法實現(xiàn)該程序的功能。#include<c8051f020.h>chardata*p;//發(fā)送數(shù)據(jù)塊地址指針voidmain(void){XBR0=0x04;//交叉開關配置,使能UART0XBR2=0x40;//使能交叉開關P0MDOUT|=0x01;//TX0為推挽輸出方式TMOD=0x20;//初始化并啟動T1TH1=0xFD;TL1=0xFD;TR1=1;SCON0=0x40;//UART0初始化p=0x20;//地址指針初始化EA=1;//開中斷ES0=1;SBUF0=*p;//發(fā)送第一個字符while(1);//等待發(fā)送中斷}voidinterrupt_UART0(void)interrupt4{TI0=0;p++;if(p<0x40)SBUF0=*p;elseES0=0;}(1分)101.CIP-51有那兩種可編程的電源管理方式?如何進入和退出每種方式?(1分)102.根據(jù)下圖,說出CIP-51的有哪些存儲空間?各個存儲空間的功能及尋址范圍?CIP-51的內(nèi)部RAM空間有多少字節(jié)?它們在應用中有什么專門的用途?堆棧一般應設置在位置?(1分)103.下面一段程序是什么意思?單片機使用的是內(nèi)部還是外部振蕩源?voidOscillator_Init(){inti=0;OSCXCN=0x67;for(i=0;i<3000;i++);//Wait1msforinitializationwhile((OSCXCN&0x80)==0);OSCICN=0x08;}(1分)104.C8051F020的片外數(shù)據(jù)存儲器0x2000~0x20ff單元共有256個字節(jié)數(shù)據(jù),要求使用UART0的方式1發(fā)送出去,為確??煽?,采用累加和進行校驗,數(shù)據(jù)發(fā)送完后,最后發(fā)送累加和。設傳輸波特率為4800bit/s,系統(tǒng)時鐘頻率SYSCLK=12MHz。用T1工作于方式2作波特率發(fā)生器,取T1M=1、SMOD0=1。試用查詢方式編寫發(fā)送程序,要求給出T1時間常數(shù)的計算過程并給主要代碼加上注釋。(1分)105.P2、P3口驅(qū)動發(fā)光管,共接了16個發(fā)光二極管,請閱讀下面的程序,問:定時器3的作用是什么?說出程序的執(zhí)行效果。#include<c8051f020.h>//包含特殊功能寄存器SFR聲明的頭文件#defineSYSCLK2000000//系統(tǒng)時鐘頻率近似為2MHzsfr16TMR3RL=0x92;//Timer3定時器重裝值sfr16TMR3=0x94;//Timer3定時器計數(shù)值voidPORT_Init(void);voidTimer3_Init(intcounts);voidTimer3_ISR(void);unsignedintxdatap2led[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};voidmain(void){WDTCN=0xde;//禁用WDT看門狗定時器WDTCN=0xad;PORT_Init();Timer3_Init(SYSCLK/12/10);//初始化定時器3,中斷頻率10HzEA=1;//使能系統(tǒng)全局中斷while(1);//死循環(huán)等待中斷}//配置交叉開關和通用IO輸出端口voidPORT_Init(void){XBR2=0x40;//使能交叉開關和弱上拉}//定時器3中斷初始化,時間間隔由counts指定voidTimer3_Init(intcounts){TMR3CN=0x00;//停止定時器3;清除中斷標志位TF3;//使用SYSCLK/12作為時間基準TMR3RL=-counts;//初始化重裝值TMR3=0xffff;//設定立即重裝EIE2|=0x01;//使能定時器3(Timer3)中斷TMR3CN|=0x04;//啟動定時器3(Timer3)}//定時器3(Timer3)的中斷服務子程序voidTimer3_ISR(void)interrupt14{staticintcount;staticinti=9,j=0;staticintled=0xff;TMR3CN&=~(0x80);//清除中斷標志位TF3count++;if(count==5){count=0;P3=led;P2=p2led[j];led=led<<1;i--;j++;if(j==8)j=0;if(i==0){i=9;led=0xff;}}}(1分)三問答題(共30題,總分值30分)106.根據(jù)下圖,讀voidT0_mode1_2ms_init(void)程序,詳細注釋程序中的每行意思,說出該程序的功能。voidT0_mode1_2ms_init(void){CKCON&=0xf7;TMOD=0x01;TH0=0xf8;TL0=0x30;TCON|=0x10;}(1分)107.C8051F020的片外數(shù)據(jù)存儲器0x2000~0x20ff單元共有256個字節(jié)數(shù)據(jù),要求使用UART0的方式1發(fā)送出去,為確保可靠,采用累加和進行校驗,數(shù)據(jù)發(fā)送完后,最后發(fā)送累加和。設傳輸波特率為4800bit/s,系統(tǒng)時鐘頻率SYSCLK=12MHz。用T1工作于方式2作波特率發(fā)生器,取T1M=1、SMOD0=1。試用查詢方式編寫發(fā)送程序,要求給出T1時間常數(shù)的計算過程并給主要代碼加上注釋。(1分)108.下面一段程序是C8051F020振蕩源初始化程序,一般在上電后即運行。請問運行該段程序時單片機用的什么振蕩源?頻率為多少?voidOscillator_Init(){inti=0;OSCXCN=0x67;for(i=0;i<3000;i++);//Wait1msforinitializationwhile((OSCXCN&0x80)==0);OSCICN=0x08;}(1分)109.C51語言中有哪些特殊數(shù)據(jù)類型,簡要說明定義和使用這些數(shù)據(jù)類型方法。簡述C51指針的分類與每一類指針的特點。(1分)110.閱讀下面的匯編語言程序段,說明程序的功能,若程序運行前(A)=11111000B,則程序運行后片內(nèi)RAM的20H和21H單元中的內(nèi)容是多少?MOVB,#100DIVABMOV20H,AMOVA,BMOVB,#10DIVABSWAPAADDA,BMOV21H,A(1分)111.閱讀教材P168例4.8的程序,回答問題:1、程序中為什么要使用頭文件string.h?2、程序中的P是什么含義?3、說明該程序進行奇偶校驗的原理?4、除程序中的方法外,還有什么方法實現(xiàn)串行通信中的奇偶校驗?(1分)112.XRAM的BLOCK單元開始有一8位無符號數(shù)據(jù)塊,其長度存放在片內(nèi)RAM的LEN單元中,用匯編語言編寫程序找出其中的最小值,放入片內(nèi)RAM的MIN單元。(1分)113.閱讀教材P259~P264利用C8051F020片內(nèi)溫度傳感器進行芯片溫度采集的程序,回答問題。1、說明選擇片內(nèi)溫度傳感器通道工作的方法。2、說明用查詢方式進行A/D轉(zhuǎn)換的查詢步驟。3、啟動ADC0轉(zhuǎn)換的方法有哪幾種,兩段程序中分別使用的是哪種啟動方法?4、在中斷方式的程序中,為了提高數(shù)據(jù)采集的準確性,采用了什么方法?5、如果想實現(xiàn)對特定范圍的溫度進行判定,如當溫度在20~30℃時執(zhí)行某項功能,使用ADC0的窗口比較功能,應如何對程序進行擴充?(1分)114.閱讀P244圖5-4ADC0系統(tǒng)功能框圖,回答下列問題1、ADC0采用的轉(zhuǎn)換原理是什么?2、ADC0支持多少路模擬通道,如何對通道進行選擇和配置?3、ADC0有哪幾種啟動方式?4、如將AIN0配置為單端方式,當AIN0上輸入的模擬電壓為VREF/2時,轉(zhuǎn)換結(jié)果采用右對齊和左對齊時分別是多少?5、圖中上方的四個寄存器ADC0GTH、ADC0GTL、ADC0LTH、ADC0LTL的作用是什么。(1分)115.XRAM的BLOCK單元開始處有一8位無符號數(shù)據(jù)塊,其長度存放在片外RAM的LEN單元中,用匯編語言編寫程序找出其中的最大值,放入片外RAM的MAX單元。(1分)116.若系統(tǒng)時鐘頻率SYSCLK=12MHz,T0工作在方式1,產(chǎn)生25ms的定時中斷,TF0為高級中斷源,使P1.1輸出周期為1s的方波,試編寫用中斷方式實現(xiàn)的C51程序。(1分)117.下面是用DAC0產(chǎn)生正弦波輸出的程序,閱讀之后回答問題。#include<c8051f020.h>#include<math.h>sfr16DAC0=0xd2voiddac0_init(void);voidmain(void){uninsignedinti;floatx,y;WDTCN=0xde;WDTCN=0xad;dac0_init();while(1){for(x=0;x<(2*3.14159);x+=0.1){y=2048*(sin(x)+1);DAC0=y;for(i=0;i<=200;i++);}}}voiddac0_int(void){REF0CN=0x03;DAC0CN|=0x08;}問題:1、程序中DAC輸出更新采用的是什么方法,除該方法外還有哪些方法,這些方法的選擇由什么決定?2、程序中用sfr16定義16位特殊功能寄存器DAC0,請問在C51中對用sfr16定義16位特殊功能寄存器有什么要求?3、說明程序中公式y(tǒng)=2048*(sin(x)+1)的設計依據(jù)。4、程序中for(i=0;i<=200;i++);語句的作用是什么?(1分)118.C8051F020單片機的中斷系統(tǒng)有多少個中斷源和優(yōu)先級?對中斷的允許和禁止是如何控制的?多個中斷源優(yōu)先級相同的情況下,按什么順序響應中斷請求?一個中斷從提出到得到CPU的響應最短要多長時間,如果CPU響應中斷的條件全部具備,響應中斷的最長時間為多少,什么情況下會出現(xiàn)這種情況?C51中如何定義中斷服務函數(shù)?(1分)119.閱讀下圖,說出使用C8051F020的A/D轉(zhuǎn)換器用到哪些SFR?各個SFR起什么作用?(1分)120.C8051F020單片機有強大的中斷系統(tǒng),回答下列相關問題1、C8051F020單片機有多少中斷源和優(yōu)先級?2、對中斷源的使能是如何控制的?3、用兩種方法寫出允許定時器T1中斷,并將其設為高級中斷的指令序列。4、不同中斷源的中斷向量是如何分配的?5、在C51中如何定義中斷函數(shù)?6、中斷響應最快需要多少時鐘周期,最慢需要多少時鐘周期,最慢發(fā)生在什么情況時?(1分)121.C8051F020單片機有靈活的復位與時鐘控制系統(tǒng),回答下列相關問題1、C8051F020單片機有哪幾種復位源?2、在程序中如何禁止看門狗復位源,給出C51代碼。3、應用程序中如何將內(nèi)部時鐘切換到外部時鐘,給出C51代碼。(1分)122.如何才能節(jié)省單片機的功耗?C8051F單片機的電源管理有哪些方式?(1分)123.C8051F020單片機有哪些存儲空間,各存儲空間的容量有多大,訪問這些存儲空間使用的指令和尋址方式有什么區(qū)別,C51語言中如何區(qū)分這些存儲空間?若(PSW)=0x18,則當前的工作寄存器R0~R7在片內(nèi)RAM的哪些單元?堆棧指針SP的復位值是多少,堆棧一般安排在哪些存儲區(qū)域?(1分)124.下列程序是一個中斷方式的程序,說出程序功能并用查詢法實現(xiàn)該程序的功能。主程序:#include<c8051f020.h>chardata*p;//發(fā)送數(shù)據(jù)塊地址指針voidmain(void){XBR0=0x04;//交叉開關配置,使能UART0XBR2=0x40;//使能交叉開關P0MDOUT|=0x01;//TX0為推挽輸出方式TMOD=0x20;//初始化并啟動T1TH1=0xFD;TL1=0xFD;TR1=1;SCON0=0x40;//UART0初始化p=0x20;//地址指針初始化EA=1;//開中斷ES0=1;SBUF0=*p;//發(fā)送第一個字符while(1);//等待發(fā)送中斷}中斷服務程序:voidinterrupt_UART0(void)interrupt4{TI0=0;//清發(fā)送中斷標志p++;if(p<0x40)SBUF0=*p;//發(fā)送下一字節(jié)elseES0=0;//關串口中斷}(1分)125.下列程序是一個中斷方式的程序,說出程序功能并用查詢法實現(xiàn)該程序的功能。#include<c8051f020.h>chardata*p;//發(fā)送數(shù)據(jù)塊地址指針voidmain(void){XBR0=0x04;//交叉開關配置,使能UART0XBR2=0x40;//使能交叉開關P0MDOUT|=0x01;//TX0為推挽輸出方式TMOD=0x20;//初始化并啟動T1TH1=0xFD;TL1=0xFD;TR1=1;SCON0=0x40;//UART0初始化p=0x20;//地址指針初始化EA=1;//開中斷ES0=1;SBUF0=*p;//發(fā)送第一個字符while(1);//等待發(fā)送中斷}voidinterrupt_UART0(void)interrupt4{TI0=0;p++;if(p<0x40)SBUF0=*p;elseES0=0;}(1分)126.閱讀P242圖5-4ADC0系統(tǒng)功能框圖,回答下列問題1、ADC0采用的轉(zhuǎn)換原理是什么?按轉(zhuǎn)換原理分,還有哪些類型的AD轉(zhuǎn)換器?2、如果要將AIN0和AIN1配置為差分方式,AMX0CF和AMX0SL應如何配置?3、如果要使用ADC0內(nèi)部的溫度傳感器通道采集芯片內(nèi)部的溫度,應做哪些設置,給出匯編指令代碼?4、采用往AD0BUSY寫1啟動轉(zhuǎn)換,查詢方式讀取轉(zhuǎn)換結(jié)果,相應的步驟是什么,給出C51代碼?(1分)127.C8051F020單片機的存儲器組織采用哈佛結(jié)構(gòu),回答下列相關問題1、訪問片內(nèi)RAM、片外RAM、程序存儲器各用什么指令?2、能夠進行位尋址的空間有哪些?3、外部RAM擴展時,地址復用與非復用有什么區(qū)別?如用低端端口非復用方式擴展,地址線、數(shù)據(jù)線各由哪個端口提供。4、在C51語言中定義變量時,如何區(qū)分變量所在的存儲區(qū)域,為此C51擴展了哪些與存儲器類型的關鍵字?5、若(PSW)=0x08,則當前工作寄存器對應內(nèi)部RAM的哪些單元?在C51的函數(shù)定義中,如何設置工作寄存器區(qū)?(1分)128.閱讀P158~P160例4.2的程序,回答下列問題1、程序中對CKCON的賦值采用的是CKCON&=0xef;而非CKCON=0xef;,這樣有什么好處?2、在中斷服務程序中對定時器重裝初值是,用的TL1|=0xb0;而非TL1=0xb0;,這樣有什么好處?3、在查詢方式對應的程序中,對定時器賦初值用的是TH1=-50000/256;TL1=-50000%256;按照教材所講的公式,定時器的初值應該是216-50000,簡述這樣做的理由。4、請將例題中的中斷式程序改為用定時器T0實現(xiàn),給出完整的程序。(1分)129.閱讀教材P199例4.8的程序,回答問題1、程序中為什么要使用頭文件string.h?2、程序中的P是什么含義?3、說明該程序進行奇偶校驗的原理?4、除程序中的方法外,還有什么方法實現(xiàn)串行通信中的奇偶校驗?(1分)130.有7個能使C8051F系列單片機進入復位狀態(tài)的復位源:上電/掉電復位、外部/RST引腳復位、外部CNVSTR信號復位、軟件命令復位、比較器0復位、時鐘丟失檢測器和看門狗定時器超時復位。請說出這7種復位的含義及你認為的用途。(1分)131.若系統(tǒng)時鐘頻率SYSCLK=12MHz,T0工作在方式1,產(chǎn)生25ms的定時中斷,TF0為高級中斷源,使P1.1輸出周期為1s的方波,試編寫用中斷方式實現(xiàn)的C51程序。要求給出定時器初值的計算過程,給出關鍵代碼處的注釋。(1分)132.P2、P3口驅(qū)動發(fā)光管,共接了16個發(fā)光二極管,請閱讀下面的程序,問:定時器3的作用是什么?說出程序的執(zhí)行效果。#include<c8051f020.h>//包含特殊功能寄存器SFR聲明的頭文件#defineSYSCLK2000000//系統(tǒng)時鐘頻率近似為2MHzsfr16TMR3RL=0x92;//Timer3定時器重裝值sfr16TMR3=0x94;//Timer3定時器計數(shù)值voidPORT_Init(void);voidTimer3_Init(intcounts);voidTimer3_ISR(void);unsignedintxdatap2led[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};voidmain(void){WDTCN=0xde;//禁用WDT看門狗定時器WDTCN=0xad;PORT_Init();Timer3_Init(SYSCLK/12/10);//初始化定時器3,中斷頻率10HzEA=1;//使能系統(tǒng)全局中斷while(1);//死循環(huán)等待中斷}//配置交叉開關和通用IO輸出端口voidPORT_Init(void){XBR2=0x40;//使能交叉開關和弱上拉}//定時器3中斷初始化,時間間隔由counts指定voidTimer3_Init(intcounts){TMR3CN=0x00;//停止定時器3;清除中斷標志位TF3;//使用SYSCLK/12作為時間基準TMR3RL=-counts;//初始化重裝值TMR3=0xffff;//設定立即重裝EIE2|=0x01;//使能定時器3(Timer3)中斷TMR3CN|=0x04;//啟動定時器3(Timer3)}//定時器3(Timer3)的中斷服務子程序voidTimer3_ISR(void)interrupt14{staticintcount;staticinti=9,j=0;staticintled=0xff;TMR3CN&=~(0x80);//清除中斷標志位TF3count++;if(count==5){count=0;P3=led;P2=p2led[j];led=led<<1;i--;j++;if(j==8)j=0;if(i==0){i=9;led=0xff;}}}(1分)133.片外RAM的BLOCK開始的單元有一無符號數(shù)據(jù)塊,數(shù)據(jù)長度存放在片內(nèi)RAM的LEN單元,要求用匯編語言編寫程序統(tǒng)計其中奇數(shù)和偶數(shù)的個數(shù),分別存放在片內(nèi)RAM的ODD和EVEN單元(1分)134.C8051F020單片機的存儲器組織采用哈佛結(jié)構(gòu),回答下列相關問題1、片內(nèi)RAM根據(jù)功能可以劃分為哪些部分?堆棧一般設置在什么區(qū)域?2、片內(nèi)RAM的高128B與SFR地址重復,如何區(qū)分?3、讀寫XRAM的指令有哪兩種形式?4、在C51語言中如何區(qū)分變量所在的存儲區(qū)域,為此C51擴展了哪些與存儲器類型有關的關鍵字?(1分)135.下面一段程序是什么意思?單片機使用的是內(nèi)部還是外部振蕩源?voidOscillator_Init(){inti=0;OSCXCN=0x67;for(i=0;i<3000;i++);//Wait1msforinitializationwhile((OSCXCN&0x80)==0);OSCICN=0x08;}(1分)
一判斷題(共20題,總分值20分)1.答案:T解析過程:2.答案:T解析過程:3.答案:F解析過程:4.答案:F解析過程:5.答案:F解析過程:6.答案:F解析過程:7.答案:T解析過程:8.答案:T解析過程:9.答案:F解析過程:10.答案:T解析過程:11.答案:F解析過程:12.答案:F解析過程:13.答案:T解析過程:14.答案:T解析過程:15.答案:F解析過程:16.答案:F解析過程:17.答案:F解析過程:18.答案:F解析過程:19.答案:F解析過程:20.答案:F解析過程:二簡答題(共85題,總分值85分)21.答案:1、CKCON&=0xef;語句可以把T1的時基設為系統(tǒng)時鐘的12分頻,而不影響其他定時器的時基。如用CKCON=0xef;語句雖然也可以把T1的時基設為系統(tǒng)時鐘的12分頻,但同時也會把其他定時器的時基設為系統(tǒng)時鐘,而影響其工作。2、從產(chǎn)生溢出中斷請求到得到中斷服務這段時間,T1仍在計時,使用TL1|=0xb0;語句可以把這段時間的計數(shù)值累加到初始值中,提高定時精確度。3、因為T1是16位的定時計數(shù)器,216在16位寄存器中相當于0,因此可以將216去掉,另外-50000/256的結(jié)果相當于取-50000的高8位,-50000%256的結(jié)果相當于取-50000的低8位。4、程序中帶下劃線部分是需要修改的部分#include<c8051f020.h>sbitP1_0=P1^0;intcount=10;全局變量voidmain(void){WDTCN=0xDE;WDTCN=0xAD;CKCON&=0xf7;//T0時基選擇系統(tǒng)時鐘12分頻TMOD=0x01;//T0方式1定時XBR2=0x40;P1_0=0;TH0=0x3c;TL0=0xb0;IE|=0x82;IP|=0x02;TCON|=0x10;while(1);}voidTimer0_ISR(void)interrupt1{TH0=0x3c;TL0|=0xb0;count--;if(count==0){count=10;P1_0=!P1_0;}}解析過程:22.答案:答:下圖使用了UART0,SMBus、UART1、擴展了外部數(shù)據(jù)存儲器、ADC1的AIN0、AIN2、AIN3、AIN5。TX0=P0.0;RX0=P0.1;SDA=P0.2;SCL=P0.3;TX1=P0.4;ALE=P0.5;/RD=P0.6;/WR=P0.7;AIN0=P1.0;RX1=P1.1;AIN2=P1.2;AIN3=P1.3;AIN5=P1.5。答:SCK=P0.0;MISO=P0.1;MOSI=P0.2;NSS=P0.3;SDA=P0.4;SCL=P1.1;TX1=P1.4;RX1=P1.6。其余不變。解析過程:23.答案:空閑方式和停機方式。置PCON.0(IDLE)進入空閑方式,中斷或復位可以退出空閑方式。置PCON.1(STOP)進入停機方式,只有復位可以退出空閑方式。解析過程:24.答案:(1)64KB程序存儲器、256B片內(nèi)數(shù)據(jù)存儲器、64KB片外數(shù)據(jù)存儲器、256b位尋址空間、128B特殊功能寄存器空間。(2)程序存儲器讀用MOVC指令,寫用MOVX指令;片內(nèi)RAM和SFR用MOV指令;片外RAM用MOVX指令;片內(nèi)RAM低128字節(jié)可以用直接尋址或間接尋址,高128字節(jié)只能間接尋址;SFR只能直接尋址。(3)C51中定義變量時,用data、bdata、idata、xdata、pdata、code等存儲類型關鍵字進行區(qū)分。(4)0x18~0x1f。(5)0x07,一般設在0x30以上的片內(nèi)RAM。解析過程:25.答案:初值計算:要定時25ms,必須使T0M=0,對SYSCLK/12進行計數(shù)主程序:#include<c8051f020.h>sbitP1_1=P1^1;intcount=20;全局變量voidmain(void){WDTCN=0xDE;//關看門狗WDTCN=0xAD;CKCON&=0xf7;//T0M=0TMOD=0x01;//T0方式1XBR2=0x40;//使能端口輸出P1_1=0;TH0=0x9e;TL0=0x58;IE|=0x82;//允許T0中斷IP|=0x02;//T0高級中斷TCON|=0x10;//啟動T0while(1);//等待T0中斷}中斷服務程序:voidTimer0_ISR(void)interrupt1{TH1=0x9e;TL1|=0x58;count--;if(count==0){count=20;P1_1=!P1_1;}}解析過程:26.答案:TX0=P0.0;RX0=P0.1;SCK=P0.2;MISO=P0.3;MOSI=P0.4;NSS=P0.5;SDA=P0.6;SCL=P0.7;P1.2=模入;P1.3=模入。解析過程:27.答案:1、將TEMPE(REF0CN.2)置1,允許溫度傳感器;AMX0SL置為××××1×××,選擇溫度傳感器。2、寫0到AD0INT;向AD0BUSY寫1;查詢并等待AD0INT為1;處理ADC0數(shù)據(jù)。3、4種:向AD0BUSY位寫1、T3溢出、CNVSTR上升沿、T2溢出。第一段程序采用向AD0BUSY寫1啟動,后一段程序采用T3溢出啟動4、采用了均值濾波的方法。采集256次,求平均值。5、在ADC0初始化的時候,對窗口寄存器ADC0GTH:ADC0GTL(下限、大于)和ADC0LTH:ADC0LTL(上限、小于)進行設置,將上、下限溫度對應的數(shù)字量置入對應的寄存器。增加ADC0窗口中斷服務程序進行相應處理。解析過程:28.答案:$INCLUDE(C8051F020.INC)ORG0000HAJMP0100HORG0100HSTART:MOVDPTR,#BLOCKMOVODD,#0;計數(shù)單元清0MOVEVEN,#0LOOP:MOVXA,@DPTR;取數(shù)JBACC.0,ODDCOUNT;若ACC.0=1,轉(zhuǎn)奇數(shù)計數(shù)INCEVEN;若ACC.0=0,則偶數(shù)個數(shù)加lAJMPNEXTODDCOUNT:INCODD;奇數(shù)計數(shù)單元加1NEXT:INCDPTR;修正指針DJNZLEN,LOOP;未完繼續(xù)SJMP$END解析過程:29.答案:ADC0的運行主要與10個SFR有關。配置寄存器AMX0CF:8個外部輸入的模擬量可以通過配置寄存器設定為單端輸入或雙端輸入;通道選擇寄存器AMX0SL:8個外部輸入的模擬量和一個內(nèi)部溫度傳感器量通過通道選擇寄存器AMX0SL設定在某一時刻通過多路選擇器;配置寄存器ADC0CF:從多路選擇器出來的模擬量通過配置寄存器ADC0CF設定ADC轉(zhuǎn)換速度和對模擬量的放大倍數(shù);配置寄存器ADC0CF:由控制寄存器ADC0CN對ADC進行模擬量轉(zhuǎn)換的啟動、啟動方式、采樣保持、轉(zhuǎn)換結(jié)束、數(shù)字量格式等進行設定;數(shù)據(jù)字寄存器ADC0H、ADC0L:12位的轉(zhuǎn)換好的數(shù)字量存放在數(shù)據(jù)字寄存器ADC0H、ADC0L中;上下限寄存器ADC0GTH、ADC0GTL、ADC0LTH、ADC0LTL:ADC0中提供了可編程窗口檢測器,通過上下限寄存器ADC0GTH、ADC0GTL、ADC0LTH、ADC0LTL設定所需要的比較極限值。解析過程:30.答案:選T0M=0,即使用系統(tǒng)時鐘的12分頻作為計數(shù)源,則T計數(shù)=12/(12×106)=1usTC=216-25×103=40536=0x9e5b,即TH0=0x9e;TL0=0x5b;#include<c8051f020.h>sbitP1_1=P1^1;intcount=20;//計數(shù)器溢出20次為500msvoidmain(void){WDTCN=0xDE;WDTCN=0xAD;CKCON&=0xf7;//T0時基選擇系統(tǒng)時鐘12分頻TMOD=0x01;//T0方式1定時XBR2=0x40;P1_1=0;TH0=0x9e;TL0=0x5b;IE|=0x82;IP|=0x02;TCON|=0x10;while(1);}voidTimer0_ISR(void)interrupt1{TH0=0x9e;TL0|=0x5b;count--;if(count==0){count=20;P1_1=!P1_1;}}解析過程:31.答案:T3產(chǎn)生周期間隔改變P2、P3的狀態(tài)。P2口輸出的燈從左邊(高位)開始亮,一次往右邊一位一位的亮,其余都燈都滅,周而復始。P3口輸出的燈開始全滅,然后從右(低位)往左亮過來,直至全亮,然后周而復始。解析過程:32.答案:1、22個中斷源,2個優(yōu)先級2、兩級使能控制,總允許位EA(IE.7),各中斷源的分允許位(位于IE、EIE1、EIE2中)3、字節(jié)尋址方式:MOVIE,#88HMOVIP,#08H位尋址方式:SETBEASETBET1SETBPT14、從0x03開始,每個中斷源的入口地址與下一個中斷源的入口地址相差8B,即0x03、0x0b、0x13、0x1b…..5、在函數(shù)定義中增加interruptn說明是中斷函數(shù),即函數(shù)類型函數(shù)名(形式參數(shù)列表)interruptn;n為中斷類型號6、最快5個周期,最慢18個周期,發(fā)生在當收到中斷請求時正執(zhí)行RETI指令的時候。解析過程:33.答案:1、0x00-0x1f為工作寄存器區(qū)、0x20-0x2f為可位尋址區(qū)、0x30以上為臨時存儲器區(qū),可作一般數(shù)據(jù)存儲器用。堆棧理論上可設在內(nèi)部RAM的任何區(qū)域,但為了避免與工作寄存器和位尋址空間沖突,一般設在0x30以上的區(qū)域。2、通過尋址方式區(qū)分,片內(nèi)RAM的高128B只能間接尋址,SFR只能直接尋址。3、16位地址形式:MOVXA,@DPTR;MOVX@DPTR,A8位地址形式:MOVXA,@R0/R1;MOVX@R0/R1,A;高8位地址放在EMIOCN中4、在變量的定義中,引入存儲器類型說明符,即變
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年航空公司傳染病防控與防治法遵循
- BIM在2024年數(shù)據(jù)中心設計與運營中的優(yōu)化
- 2024年ESD防護技術(shù)在醫(yī)療設備中的應用
- 掌握Axure+RP+2024:專業(yè)原型師的進階之路
- 2024年OBD診斷培訓:汽車維修新技術(shù)與應用
- 2024年教育創(chuàng)新:《觀察魚》互動性教學課件
- 2024年崗位說明書與工作流程培訓課件
- 2024年《示兒》公開課:教案與實踐同行
- i have principal英語作文中學
- 宇宙探索:2024年《十萬個為什么》課件揭秘太空奧秘
- 水汽品質(zhì)劣化的原因及其處理方法
- 2023年軍隊文職人員(數(shù)學3+化學)科目考試題庫(濃縮500多題)
- 小眼睛大手術(shù)-眼科顯微手術(shù)技能知到章節(jié)答案智慧樹2023年溫州醫(yī)科大學
- 2023石景山區(qū)高三一模數(shù)學試卷
- 國網(wǎng)基建各專業(yè)考試題庫大全-質(zhì)量專業(yè)-下(判斷題匯總)
- 社會生態(tài)系統(tǒng)下困境兒童多重困境分析共3篇
- 【信息技術(shù) 】計算機系統(tǒng)互聯(lián) 第1課時課件 教科版(2019)高中信息技術(shù)必修2
- 議論文閱讀訓練10篇(附答案及解析)
- 山西省普通高級中學辦學基本標準
- 血液透析個案護理兩篇
- 工會會議記錄范文
評論
0/150
提交評論