山东工商学院单片机原理复习资料下_第1页
山东工商学院单片机原理复习资料下_第2页
山东工商学院单片机原理复习资料下_第3页
山东工商学院单片机原理复习资料下_第4页
山东工商学院单片机原理复习资料下_第5页
已阅读5页,还剩97页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

山东工商学院2020学年第一学期单片机原理课程试题A卷(考试时间:120分钟,满分100分)特别提醒:1、所有答案均须填写在答题纸上,写在试题纸上无效。2、每份答卷上均须准确填写函授站、专业、年级、学号、姓名、课程名称。一判断题(共20题,总分值20分)1.EPROM的地址线为11条时,能访问的存储空间有4K。(1分)(

)2.8155的复位引脚可与89C51的复位引脚直接相联。(1分)(

)3.指令字节数越多,执行时间越长。(1分)(

)4.内部寄存器Rn(n=0-7)作为间接寻址寄存器。(1分)(

)5.CLRR0(1分)(

)6.内部寄存器Rn(n=0-7)作为间接寻址寄存器。(1分)(

)7.8155的复位引脚可与89C51的复位引脚直接相联。(1分)(

)8.MCS—51的串行接口是全双工的。(1分)(

)9.为了消除按键的抖动,常用的方法只有硬件方法(1分)(

)10.8051单片机,程序存储器数和数据存储器扩展的最大范围都是一样的(1分)(

)11.51单片机只能做控制用,不能完成算术运算。(1分)(

)12.指令字节数越多,执行时间越长。(1分)(

)13.必须有中断源发出中断请求,并且CPU开中断,CPU才可能响应中断(1分)(

)14.MCS—51的串行接口是全双工的。(1分)(

)15.当MCS—51上电复位时,堆栈指针SP=00H。(1分)(

)16.为了消除按键的抖动,常用的方法只有硬件方法(1分)(

)17.51单片机只能做控制用,不能完成算术运算。(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实现,给出完整的程序。(1分)22.下图显示了C8051F020单片机IO端口交叉开关的配置:请说出资源使用情况,标出每个资源信号对应的引脚。(TX0=P?.?........)如果我们现在要改变使用UART1、SPI0、SMBus接口,其它不变,请问所用的外设引脚与单片机的端口如何对应?(1分)23.CIP-51有那两种可编程的电源管理方式?如何进入和退出每种方式?(1分)24.C8051F020单片机有哪些存储空间,各存储空间的容量有多大,访问这些存储空间使用的指令和寻址方式有什么区别,C51语言中如何区分这些存储空间?若(PSW)=0x18,则当前的工作寄存器R0~R7在片内RAM的哪些单元?堆栈指针SP的复位值是多少,堆栈一般安排在哪些存储区域?(1分)25.若系统时钟频率SYSCLK=12MHz,T0工作在方式1,产生25ms的定时中断,TF0为高级中断源,使P1.1输出周期为1s的方波,试编写用中断方式实现的C51程序。(1分)26.下图显示了C8051F020单片机IO端口交叉开关的配置界面,如果我们现在要使用UART0、SPI0、SMBus、并且P1.2、P1.3作为两路模拟量的输入端,请问所用的外设引脚与单片机的端口如何对应?(如TX0=P?.?........)(1分)27.阅读教材P259~P264利用C8051F020片内温度传感器进行芯片温度采集的程序,回答问题。1、说明选择片内温度传感器通道工作的方法。2、说明用查询方式进行A/D转换的查询步骤。3、启动ADC0转换的方法有哪几种,两段程序中分别使用的是哪种启动方法?4、在中断方式的程序中,为了提高数据采集的准确性,采用了什么方法?5、如果想实现对特定范围的温度进行判定,如当温度在20~30℃时执行某项功能,使用ADC0的窗口比较功能,应如何对程序进行扩充?(1分)28.片外RAM的BLOCK开始的单元有一无符号数据块,数据长度存放在片内RAM的LEN单元,要求用汇编语言编写程序统计其中奇数和偶数的个数,分别存放在片内RAM的ODD和EVEN单元(1分)29.阅读下图,说出使用C8051F020的A/D转换器用到哪些SFR?各个SFR起什么作用?(1分)30.若系统时钟频率SYSCLK=12MHz,T0工作在方式1,产生25ms的定时中断,TF0为高级中断源,使P1.1输出周期为1s的方波,试编写用中断方式实现的C51程序。要求给出定时器初值的计算过程,给出关键代码处的注释。(1分)31.P2、P3口驱动发光管,共接了16个发光二极管,请阅读下面的程序,问:定时器3的作用是什么?说出程序的执行效果。#include<c8051f020.h>//包含特殊功能寄存器SFR声明的头文件#defineSYSCLK2000000//系统时钟频率近似为2MHzsfr16TMR3RL=0x92;//Timer3定时器重装值sfr16TMR3=0x94;//Timer3定时器计数值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;//使能系统全局中断while(1);//死循环等待中断}//配置交叉开关和通用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单片机有强大的中断系统,回答下列相关问题1、C8051F020单片机有多少中断源和优先级?2、对中断源的使能是如何控制的?3、用两种方法写出允许定时器T1中断,并将其设为高级中断的指令序列。4、不同中断源的中断向量是如何分配的?5、在C51中如何定义中断函数?6、中断响应最快需要多少时钟周期,最慢需要多少时钟周期,最慢发生在什么情况时?(1分)33.C8051F020单片机的存储器组织采用哈佛结构,回答下列相关问题1、片内RAM根据功能可以划分为哪些部分?堆栈一般设置在什么区域?2、片内RAM的高128B与SFR地址重复,如何区分?3、读写XRAM的指令有哪两种形式?4、在C51语言中如何区分变量所在的存储区域,为此C51扩展了哪些与存储器类型有关的关键字?(1分)34.阅读下面的汇编语言程序段,说明程序的功能,若程序运行前(A)=11111000B,则程序运行后片内RAM的20H和21H单元中的内容是多少?MOVB,#100DIVABMOV20H,AMOVA,BMOVB,#10DIVABSWAPAADDA,BMOV21H,A(1分)35.根据下图,读voidT0_mode1_2ms_init(void)程序,详细注释程序中的每行意思,说出该程序的功能。voidT0_mode1_2ms_init(void){CKCON&=0xf7;TMOD=0x01;TH0=0xf8;TL0=0x30;TCON|=0x10;}(1分)36.下列程序是一个中断方式的程序,说出程序功能并用查询法实现该程序的功能。主程序:#include<c8051f020.h>chardata*p;//发送数据块地址指针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;//发送第一个字符while(1);//等待发送中断}中断服务程序:voidinterrupt_UART0(void)interrupt4{TI0=0;//清发送中断标志p++;if(p<0x40)SBUF0=*p;//发送下一字节elseES0=0;//关串口中断}(1分)37.若系统时钟频率SYSCLK=12MHz,T0工作在方式1,产生25ms的定时中断,TF0为高级中断源,使P1.1输出周期为1s的方波,试编写用中断方式实现的C51程序。要求给出定时器初值的计算过程,给出关键代码处的注释。(1分)38.C8051F020单片机的中断系统有多少个中断源和优先级?对中断的允许和禁止是如何控制的?多个中断源优先级相同的情况下,按什么顺序响应中断请求?一个中断从提出到得到CPU的响应最短要多长时间,如果CPU响应中断的条件全部具备,响应中断的最长时间为多少,什么情况下会出现这种情况?C51中如何定义中断服务函数?(1分)39.下图显示了C8051F020单片机IO端口交叉开关的配置:请说出资源使用情况,标出每个资源信号对应的引脚。(TX0=P?.?........)如果我们现在要改变使用UART1、SPI0、SMBus接口,其它不变,请问所用的外设引脚与单片机的端口如何对应?(1分)40.阅读P244图5-4ADC0系统功能框图,回答下列问题1、ADC0采用的转换原理是什么?2、ADC0支持多少路模拟通道,如何对通道进行选择和配置?3、ADC0有哪几种启动方式?4、如将AIN0配置为单端方式,当AIN0上输入的模拟电压为VREF/2时,转换结果采用右对齐和左对齐时分别是多少?5、图中上方的四个寄存器ADC0GTH、ADC0GTL、ADC0LTH、ADC0LTL的作用是什么。(1分)41.从下图中找出C8051F020单片机有哪些复位源?各个复位源的的意思是什么?(1分)42.设甲、乙两机采用UART0进行串行通信,波特率采用9600,甲机将其位于XRAM的发送缓冲区TBUF中的数据发送出去,乙机将收到的数据存放在其位于XRAM的接收缓冲区RBUF中。设两机的系统时钟都为12MHz,要求采用方式1通信,T1作波特率发生器,用累加和进行校验,直到乙机接收正确为止。要求用查询方式编写甲、乙两机的通信程序(1分)43.C8051F020单片机有强大的中断系统,回答下列相关问题1、C8051F020单片机有多少中断源和优先级?2、对中断源的使能是如何控制的?3、用两种方法写出允许定时器T1中断,并将其设为高级中断的指令序列。4、不同中断源的中断向量是如何分配的?5、在C51中如何定义中断函数?6、中断响应最快需要多少时钟周期,最慢需要多少时钟周期,最慢发生在什么情况时?(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、除程序中的方法外,还有什么方法实现串行通信中的奇偶校验?(1分)46.如何才能节省单片机的功耗?C8051F单片机的电源管理有哪些方式?(1分)47.根据下图,读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单片机的中断系统中有多少个中断源和优先级?如果CPU响应中断的条件全部具备,响应中断的最长时间为多少,什么情况下会出现这种情况?(1分)50.下图显示了C8051F020单片机IO端口交叉开关的配置界面,如果我们现在要使用UART0、SPI0、SMBus、并且P1.2、P1.3作为两路模拟量的输入端,请问所用的外设引脚与单片机的端口如何对应?(如TX0=P?.?........)(1分)51.有7个能使C8051F系列单片机进入复位状态的复位源:上电/掉电复位、外部/RST引脚复位、外部CNVSTR信号复位、软件命令复位、比较器0复位、时钟丢失检测器和看门狗定时器超时复位。请说出这7种复位的含义及你认为的用途。(1分)52.下面是用DAC0产生正弦波输出的程序,阅读之后回答问题。#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=2048*(sin(x)+1)的设计依据。4、程序中for(i=0;i<=200;i++);语句的作用是什么?(1分)53.C8051F020单片机有灵活的复位与时钟控制系统,回答下列相关问题1、C8051F020单片机有哪几种复位源?2、在程序中如何禁止看门狗复位源,给出C51代码。3、应用程序中如何将内部时钟切换到外部时钟,给出C51代码。(1分)54.下列程序是一个中断方式的程序,说出程序功能并用查询法实现该程序的功能。主程序:#include<c8051f020.h>chardata*p;//发送数据块地址指针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;//发送第一个字符while(1);//等待发送中断}中断服务程序:voidinterrupt_UART0(void)interrupt4{TI0=0;//清发送中断标志p++;if(p<0x40)SBUF0=*p;//发送下一字节elseES0=0;//关串口中断}(1分)55.XRAM的BLOCK单元开始处有一8位无符号数据块,其长度存放在片外RAM的LEN单元中,用汇编语言编写程序找出其中的最大值,放入片外RAM的MAX单元。(1分)56.阅读P242图5-4ADC0系统功能框图,回答下列问题1、ADC0采用的转换原理是什么?按转换原理分,还有哪些类型的AD转换器?2、如果要将AIN0和AIN1配置为差分方式,AMX0CF和AMX0SL应如何配置?3、如果要使用ADC0内部的温度传感器通道采集芯片内部的温度,应做哪些设置,给出汇编指令代码?4、采用往AD0BUSY写1启动转换,查询方式读取转换结果,相应的步骤是什么,给出C51代码?(1分)57.有7个能使C8051F系列单片机进入复位状态的复位源:上电/掉电复位、外部/RST引脚复位、外部CNVSTR信号复位、软件命令复位、比较器0复位、时钟丢失检测器和看门狗定时器超时复位。请说出这7种复位的含义及你认为的用途。(1分)58.阅读P272~273DAC0用程序更新输出,产生阶梯波的程序,回答下列问题1、阶梯波中每梯的高度是如何控制的?2、阶梯波中每梯的宽度是如何控制的?3、除了例题中采用的程序更新输出方式外,DAC0还有哪几种输出更新方式?4、仿照例题,编写产生方波的程序。(1分)59.阅读P242图5-4ADC0系统功能框图,回答下列问题1、ADC0采用的转换原理是什么?按转换原理分,还有哪些类型的AD转换器?2、如果要将AIN0和AIN1配置为差分方式,AMX0CF和AMX0SL应如何配置?3、如果要使用ADC0内部的温度传感器通道采集芯片内部的温度,应做哪些设置,给出汇编指令代码?4、采用往AD0BUSY写1启动转换,查询方式读取转换结果,相应的步骤是什么,给出C51代码?(1分)60.下列程序是一个中断方式的程序,说出程序功能并用查询法实现该程序的功能。#include<c8051f020.h>chardata*p;//发送数据块地址指针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;//发送第一个字符while(1);//等待发送中断}voidinterrupt_UART0(void)interrupt4{TI0=0;p++;if(p<0x40)SBUF0=*p;elseES0=0;}(1分)61.C8051F020单片机的中断系统有多少个中断源和优先级?对中断的允许和禁止是如何控制的?多个中断源优先级相同的情况下,按什么顺序响应中断请求?一个中断从提出到得到CPU的响应最短要多长时间,如果CPU响应中断的条件全部具备,响应中断的最长时间为多少,什么情况下会出现这种情况?C51中如何定义中断服务函数?(1分)62.XRAM的BLOCK单元开始处有一8位无符号数据块,其长度存放在片外RAM的LEN单元中,用汇编语言编写程序找出其中的最大值,放入片外RAM的MAX单元。(1分)63.根据下图,与它相关的SFR有几个?叙述一下定时/计数器工作原理,各个SFR起什么作用。(1分)64.根据下图,请回答问题:CIP-51的有哪些存储空间?各个存储空间的功能及寻址范围?CIP-51的内部RAM空间有多少字节?它们在应用中有什么专门的用途?堆栈一般应设置在位置?CIP-51有哪些寻址方式?位寻址能寻找到哪些位?(1分)65.C8051F020单片机的中断系统中有多少个中断源和优先级?如果CPU响应中断的条件全部具备,响应中断的最长时间为多少,什么情况下会出现这种情况?(1分)66.下面是用DAC0产生正弦波输出的程序,阅读之后回答问题。#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=2048*(sin(x)+1)的设计依据。4、程序中for(i=0;i<=200;i++);语句的作用是什么?(1分)67.如何才能节省单片机的功耗?C8051F单片机的电源管理有哪些方式?(1分)68.简述使用片内温度传感器进行数据采集的编程方法。程序中使用什么方法可以使采集的数据更精确,减少干扰的影响。(1分)69.C51语言中有哪些特殊数据类型,简要说明定义和使用这些数据类型方法。简述C51指针的分类与每一类指针的特点。(1分)70.阅读教材P199例4.8的程序,回答问题1、程序中为什么要使用头文件string.h?2、程序中的P是什么含义?3、说明该程序进行奇偶校验的原理?4、除程序中的方法外,还有什么方法实现串行通信中的奇偶校验?(1分)71.简述使用片内温度传感器进行数据采集的编程方法。程序中使用什么方法可以使采集的数据更精确,减少干扰的影响。(1分)72.阅读P272~273DAC0用程序更新输出,产生阶梯波的程序,回答下列问题1、阶梯波中每梯的高度是如何控制的?2、阶梯波中每梯的宽度是如何控制的?3、除了例题中采用的程序更新输出方式外,DAC0还有哪几种输出更新方式?4、仿照例题,编写产生方波的程序。(1分)73.下列程序是一个中断方式的程序,说出程序功能并用查询法实现该程序的功能。主程序:#include<c8051f020.h>chardata*p;//发送数据块地址指针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;//发送第一个字符while(1);//等待发送中断}中断服务程序:voidinterrupt_UART0(void)interrupt4{TI0=0;//清发送中断标志p++;if(p<0x40)SBUF0=*p;//发送下一字节elseES0=0;//关串口中断}(1分)74.下列程序是一个中断方式的程序,说出程序功能并用查询法实现该程序的功能。主程序:#include<c8051f020.h>chardata*p;//发送数据块地址指针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;//发送第一个字符while(1);//等待发送中断}中断服务程序:voidinterrupt_UART0(void)interrupt4{TI0=0;//清发送中断标志p++;if(p<0x40)SBUF0=*p;//发送下一字节elseES0=0;//关串口中断}(1分)75.根据下图,与它相关的SFR有几个?叙述一下定时/计数器工作原理,各个SFR起什么作用。(1分)76.C8051F020的片外数据存储器0x2000~0x20ff单元共有256个字节数据,要求使用UART0的方式1发送出去,为确保可靠,采用累加和进行校验,数据发送完后,最后发送累加和。设传输波特率为4800bit/s,系统时钟频率SYSCLK=12MHz。用T1工作于方式2作波特率发生器,取T1M=1、SMOD0=1。试用查询方式编写发送程序,要求给出T1时间常数的计算过程并给主要代码加上注释。(1分)77.XRAM的BLOCK单元开始有一8位无符号数据块,其长度存放在片内RAM的LEN单元中,用汇编语言编写程序找出其中的最小值,放入片内RAM的MIN单元。(1分)78.阅读P244图5-4ADC0系统功能框图,回答下列问题1、ADC0采用的转换原理是什么?2、ADC0支持多少路模拟通道,如何对通道进行选择和配置?3、ADC0有哪几种启动方式?4、如将AIN0配置为单端方式,当AIN0上输入的模拟电压为VREF/2时,转换结果采用右对齐和左对齐时分别是多少?5、图中上方的四个寄存器ADC0GTH、ADC0GTL、ADC0LTH、ADC0LTL的作用是什么。(1分)79.若系统时钟频率SYSCLK=12MHz,T0工作在方式1,产生25ms的定时中断,TF0为高级中断源,使P1.1输出周期为1s的方波,试编写用中断方式实现的C51程序。(1分)80.C8051F020单片机的存储器组织采用哈佛结构,回答下列相关问题1、访问片内RAM、片外RAM、程序存储器各用什么指令?2、能够进行位寻址的空间有哪些?3、外部RAM扩展时,地址复用与非复用有什么区别?如用低端端口非复用方式扩展,地址线、数据线各由哪个端口提供。4、在C51语言中定义变量时,如何区分变量所在的存储区域,为此C51扩展了哪些与存储器类型的关键字?5、若(PSW)=0x08,则当前工作寄存器对应内部RAM的哪些单元?在C51的函数定义中,如何设置工作寄存器区?(1分)81.下面一段程序是C8051F020振荡源初始化程序,一般在上电后即运行。请问运行该段程序时单片机用的什么振荡源?频率为多少?voidOscillator_Init(){inti=0;OSCXCN=0x67;for(i=0;i<3000;i++);//Wait1msforinitializationwhile((OSCXCN&0x80)==0);OSCICN=0x08;}(1分)82.C8051F020单片机有灵活的复位与时钟控制系统,回答下列相关问题1、C8051F020单片机有哪几种复位源?2、在程序中如何禁止看门狗复位源,给出C51代码。3、应用程序中如何将内部时钟切换到外部时钟,给出C51代码。(1分)83.下面一段程序是什么意思?单片机使用的是内部还是外部振荡源?voidOscillator_Init(){inti=0;OSCXCN=0x67;for(i=0;i<3000;i++);//Wait1msforinitializationwhile((OSCXCN&0x80)==0);OSCICN=0x08;}(1分)84.C8051F020单片机有哪些存储空间,各存储空间的容量有多大,访问这些存储空间使用的指令和寻址方式有什么区别,C51语言中如何区分这些存储空间?若(PSW)=0x18,则当前的工作寄存器R0~R7在片内RAM的哪些单元?堆栈指针SP的复位值是多少,堆栈一般安排在哪些存储区域?(1分)85.阅读教材P168例4.8的程序,回答问题:1、程序中为什么要使用头文件string.h?2、程序中的P是什么含义?3、说明该程序进行奇偶校验的原理?4、除程序中的方法外,还有什么方法实现串行通信中的奇偶校验?(1分)86.根据下图,请回答问题:CIP-51的有哪些存储空间?各个存储空间的功能及寻址范围?CIP-51的内部RAM空间有多少字节?它们在应用中有什么专门的用途?堆栈一般应设置在位置?CIP-51有哪些寻址方式?位寻址能寻找到哪些位?(1分)87.PSW的作用是什么?(PSW)=0x10时,使用哪一组工作寄存器,其在片内RAM中的地址是多少?(1分)88.根据下图,说出CIP-51的有哪些存储空间?各个存储空间的功能及寻址范围?CIP-51的内部RAM空间有多少字节?它们在应用中有什么专门的用途?堆栈一般应设置在位置?(1分)89.阅读下面的汇编语言程序段,说明程序的功能,若程序运行前(A)=11111000B,则程序运行后片内RAM的20H和21H单元中的内容是多少?MOVB,#100DIVABMOV20H,AMOVA,BMOVB,#10DIVABSWAPAADDA,BMOV21H,A(1分)90.CIP-51有那两种可编程的电源管理方式?如何进入和退出每种方式?(1分)91.阅读教材P259~P264利用C8051F020片内温度传感器进行芯片温度采集的程序,回答问题。1、说明选择片内温度传感器通道工作的方法。2、说明用查询方式进行A/D转换的查询步骤。3、启动ADC0转换的方法有哪几种,两段程序中分别使用的是哪种启动方法?4、在中断方式的程序中,为了提高数据采集的准确性,采用了什么方法?5、如果想实现对特定范围的温度进行判定,如当温度在20~30℃时执行某项功能,使用ADC0的窗口比较功能,应如何对程序进行扩充?(1分)92.设甲、乙两机采用UART0进行串行通信,波特率采用9600,甲机将其位于XRAM的发送缓冲区TBUF中的数据发送出去,乙机将收到的数据存放在其位于XRAM的接收缓冲区RBUF中。设两机的系统时钟都为12MHz,要求采用方式1通信,T1作波特率发生器,用累加和进行校验,直到乙机接收正确为止。要求用查询方式编写甲、乙两机的通信程序(1分)93.简述使用片内温度传感器进行数据采集的编程方法。程序中使用什么方法可以使采集的数据更精确,减少干扰的影响。(1分)94.CIP-51的哪些单元可以进行位寻址?在C51中定义特殊功能位的方法有哪几种,请以特殊功能寄存器中的位加以说明。(1分)95.PSW的作用是什么?(PSW)=0x10时,使用哪一组工作寄存器,其在片内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实现,给出完整的程序。(1分)97.XRAM的BLOCK单元开始有一8位无符号数据块,其长度存放在片内RAM的LEN单元中,用汇编语言编写程序找出其中的最小值,放入片内RAM的MIN单元。(1分)98.阅读教材P199例4.8的程序,回答问题1、程序中为什么要使用头文件string.h?2、程序中的P是什么含义?3、说明该程序进行奇偶校验的原理?4、除程序中的方法外,还有什么方法实现串行通信中的奇偶校验?(1分)99.片外RAM的BLOCK开始的单元有一无符号数据块,数据长度存放在片内RAM的LEN单元,要求用汇编语言编写程序统计其中奇数和偶数的个数,分别存放在片内RAM的ODD和EVEN单元(1分)100.下列程序是一个中断方式的程序,说出程序功能并用查询法实现该程序的功能。#include<c8051f020.h>chardata*p;//发送数据块地址指针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;//发送第一个字符while(1);//等待发送中断}voidinterrupt_UART0(void)interrupt4{TI0=0;p++;if(p<0x40)SBUF0=*p;elseES0=0;}(1分)101.CIP-51有那两种可编程的电源管理方式?如何进入和退出每种方式?(1分)102.根据下图,说出CIP-51的有哪些存储空间?各个存储空间的功能及寻址范围?CIP-51的内部RAM空间有多少字节?它们在应用中有什么专门的用途?堆栈一般应设置在位置?(1分)103.下面一段程序是什么意思?单片机使用的是内部还是外部振荡源?voidOscillator_Init(){inti=0;OSCXCN=0x67;for(i=0;i<3000;i++);//Wait1msforinitializationwhile((OSCXCN&0x80)==0);OSCICN=0x08;}(1分)104.C8051F020的片外数据存储器0x2000~0x20ff单元共有256个字节数据,要求使用UART0的方式1发送出去,为确保可靠,采用累加和进行校验,数据发送完后,最后发送累加和。设传输波特率为4800bit/s,系统时钟频率SYSCLK=12MHz。用T1工作于方式2作波特率发生器,取T1M=1、SMOD0=1。试用查询方式编写发送程序,要求给出T1时间常数的计算过程并给主要代码加上注释。(1分)105.P2、P3口驱动发光管,共接了16个发光二极管,请阅读下面的程序,问:定时器3的作用是什么?说出程序的执行效果。#include<c8051f020.h>//包含特殊功能寄存器SFR声明的头文件#defineSYSCLK2000000//系统时钟频率近似为2MHzsfr16TMR3RL=0x92;//Timer3定时器重装值sfr16TMR3=0x94;//Timer3定时器计数值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;//使能系统全局中断while(1);//死循环等待中断}//配置交叉开关和通用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.根据下图,读voidT0_mode1_2ms_init(void)程序,详细注释程序中的每行意思,说出该程序的功能。voidT0_mode1_2ms_init(void){CKCON&=0xf7;TMOD=0x01;TH0=0xf8;TL0=0x30;TCON|=0x10;}(1分)107.C8051F020的片外数据存储器0x2000~0x20ff单元共有256个字节数据,要求使用UART0的方式1发送出去,为确保可靠,采用累加和进行校验,数据发送完后,最后发送累加和。设传输波特率为4800bit/s,系统时钟频率SYSCLK=12MHz。用T1工作于方式2作波特率发生器,取T1M=1、SMOD0=1。试用查询方式编写发送程序,要求给出T1时间常数的计算过程并给主要代码加上注释。(1分)108.下面一段程序是C8051F020振荡源初始化程序,一般在上电后即运行。请问运行该段程序时单片机用的什么振荡源?频率为多少?voidOscillator_Init(){inti=0;OSCXCN=0x67;for(i=0;i<3000;i++);//Wait1msforinitializationwhile((OSCXCN&0x80)==0);OSCICN=0x08;}(1分)109.C51语言中有哪些特殊数据类型,简要说明定义和使用这些数据类型方法。简述C51指针的分类与每一类指针的特点。(1分)110.阅读下面的汇编语言程序段,说明程序的功能,若程序运行前(A)=11111000B,则程序运行后片内RAM的20H和21H单元中的内容是多少?MOVB,#100DIVABMOV20H,AMOVA,BMOVB,#10DIVABSWAPAADDA,BMOV21H,A(1分)111.阅读教材P168例4.8的程序,回答问题:1、程序中为什么要使用头文件string.h?2、程序中的P是什么含义?3、说明该程序进行奇偶校验的原理?4、除程序中的方法外,还有什么方法实现串行通信中的奇偶校验?(1分)112.XRAM的BLOCK单元开始有一8位无符号数据块,其长度存放在片内RAM的LEN单元中,用汇编语言编写程序找出其中的最小值,放入片内RAM的MIN单元。(1分)113.阅读教材P259~P264利用C8051F020片内温度传感器进行芯片温度采集的程序,回答问题。1、说明选择片内温度传感器通道工作的方法。2、说明用查询方式进行A/D转换的查询步骤。3、启动ADC0转换的方法有哪几种,两段程序中分别使用的是哪种启动方法?4、在中断方式的程序中,为了提高数据采集的准确性,采用了什么方法?5、如果想实现对特定范围的温度进行判定,如当温度在20~30℃时执行某项功能,使用ADC0的窗口比较功能,应如何对程序进行扩充?(1分)114.阅读P244图5-4ADC0系统功能框图,回答下列问题1、ADC0采用的转换原理是什么?2、ADC0支持多少路模拟通道,如何对通道进行选择和配置?3、ADC0有哪几种启动方式?4、如将AIN0配置为单端方式,当AIN0上输入的模拟电压为VREF/2时,转换结果采用右对齐和左对齐时分别是多少?5、图中上方的四个寄存器ADC0GTH、ADC0GTL、ADC0LTH、ADC0LTL的作用是什么。(1分)115.XRAM的BLOCK单元开始处有一8位无符号数据块,其长度存放在片外RAM的LEN单元中,用汇编语言编写程序找出其中的最大值,放入片外RAM的MAX单元。(1分)116.若系统时钟频率SYSCLK=12MHz,T0工作在方式1,产生25ms的定时中断,TF0为高级中断源,使P1.1输出周期为1s的方波,试编写用中断方式实现的C51程序。(1分)117.下面是用DAC0产生正弦波输出的程序,阅读之后回答问题。#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=2048*(sin(x)+1)的设计依据。4、程序中for(i=0;i<=200;i++);语句的作用是什么?(1分)118.C8051F020单片机的中断系统有多少个中断源和优先级?对中断的允许和禁止是如何控制的?多个中断源优先级相同的情况下,按什么顺序响应中断请求?一个中断从提出到得到CPU的响应最短要多长时间,如果CPU响应中断的条件全部具备,响应中断的最长时间为多少,什么情况下会出现这种情况?C51中如何定义中断服务函数?(1分)119.阅读下图,说出使用C8051F020的A/D转换器用到哪些SFR?各个SFR起什么作用?(1分)120.C8051F020单片机有强大的中断系统,回答下列相关问题1、C8051F020单片机有多少中断源和优先级?2、对中断源的使能是如何控制的?3、用两种方法写出允许定时器T1中断,并将其设为高级中断的指令序列。4、不同中断源的中断向量是如何分配的?5、在C51中如何定义中断函数?6、中断响应最快需要多少时钟周期,最慢需要多少时钟周期,最慢发生在什么情况时?(1分)121.C8051F020单片机有灵活的复位与时钟控制系统,回答下列相关问题1、C8051F020单片机有哪几种复位源?2、在程序中如何禁止看门狗复位源,给出C51代码。3、应用程序中如何将内部时钟切换到外部时钟,给出C51代码。(1分)122.如何才能节省单片机的功耗?C8051F单片机的电源管理有哪些方式?(1分)123.C8051F020单片机有哪些存储空间,各存储空间的容量有多大,访问这些存储空间使用的指令和寻址方式有什么区别,C51语言中如何区分这些存储空间?若(PSW)=0x18,则当前的工作寄存器R0~R7在片内RAM的哪些单元?堆栈指针SP的复位值是多少,堆栈一般安排在哪些存储区域?(1分)124.下列程序是一个中断方式的程序,说出程序功能并用查询法实现该程序的功能。主程序:#include<c8051f020.h>chardata*p;//发送数据块地址指针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;//发送第一个字符while(1);//等待发送中断}中断服务程序:voidinterrupt_UART0(void)interrupt4{TI0=0;//清发送中断标志p++;if(p<0x40)SBUF0=*p;//发送下一字节elseES0=0;//关串口中断}(1分)125.下列程序是一个中断方式的程序,说出程序功能并用查询法实现该程序的功能。#include<c8051f020.h>chardata*p;//发送数据块地址指针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;//发送第一个字符while(1);//等待发送中断}voidinterrupt_UART0(void)interrupt4{TI0=0;p++;if(p<0x40)SBUF0=*p;elseES0=0;}(1分)126.阅读P242图5-4ADC0系统功能框图,回答下列问题1、ADC0采用的转换原理是什么?按转换原理分,还有哪些类型的AD转换器?2、如果要将AIN0和AIN1配置为差分方式,AMX0CF和AMX0SL应如何配置?3、如果要使用ADC0内部的温度传感器通道采集芯片内部的温度,应做哪些设置,给出汇编指令代码?4、采用往AD0BUSY写1启动转换,查询方式读取转换结果,相应的步骤是什么,给出C51代码?(1分)127.C8051F020单片机的存储器组织采用哈佛结构,回答下列相关问题1、访问片内RAM、片外RAM、程序存储器各用什么指令?2、能够进行位寻址的空间有哪些?3、外部RAM扩展时,地址复用与非复用有什么区别?如用低端端口非复用方式扩展,地址线、数据线各由哪个端口提供。4、在C51语言中定义变量时,如何区分变量所在的存储区域,为此C51扩展了哪些与存储器类型的关键字?5、若(PSW)=0x08,则当前工作寄存器对应内部RAM的哪些单元?在C51的函数定义中,如何设置工作寄存器区?(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实现,给出完整的程序。(1分)129.阅读教材P199例4.8的程序,回答问题1、程序中为什么要使用头文件string.h?2、程序中的P是什么含义?3、说明该程序进行奇偶校验的原理?4、除程序中的方法外,还有什么方法实现串行通信中的奇偶校验?(1分)130.有7个能使C8051F系列单片机进入复位状态的复位源:上电/掉电复位、外部/RST引脚复位、外部CNVSTR信号复位、软件命令复位、比较器0复位、时钟丢失检测器和看门狗定时器超时复位。请说出这7种复位的含义及你认为的用途。(1分)131.若系统时钟频率SYSCLK=12MHz,T0工作在方式1,产生25ms的定时中断,TF0为高级中断源,使P1.1输出周期为1s的方波,试编写用中断方式实现的C51程序。要求给出定时器初值的计算过程,给出关键代码处的注释。(1分)132.P2、P3口驱动发光管,共接了16个发光二极管,请阅读下面的程序,问:定时器3的作用是什么?说出程序的执行效果。#include<c8051f020.h>//包含特殊功能寄存器SFR声明的头文件#defineSYSCLK2000000//系统时钟频率近似为2MHzsfr16TMR3RL=0x92;//Timer3定时器重装值sfr16TMR3=0x94;//Timer3定时器计数值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;//使能系统全局中断while(1);//死循环等待中断}//配置交叉开关和通用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开始的单元有一无符号数据块,数据长度存放在片内RAM的LEN单元,要求用汇编语言编写程序统计其中奇数和偶数的个数,分别存放在片内RAM的ODD和EVEN单元(1分)134.C8051F020单片机的存储器组织采用哈佛结构,回答下列相关问题1、片内RAM根据功能可以划分为哪些部分?堆栈一般设置在什么区域?2、片内RAM的高128B与SFR地址重复,如何区分?3、读写XRAM的指令有哪两种形式?4、在C51语言中如何区分变量所在的存储区域,为此C51扩展了哪些与存储器类型有关的关键字?(1分)135.下面一段程序是什么意思?单片机使用的是内部还是外部振荡源?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的时基设为系统时钟的12分频,而不影响其他定时器的时基。如用CKCON=0xef;语句虽然也可以把T1的时基设为系统时钟的12分频,但同时也会把其他定时器的时基设为系统时钟,而影响其工作。2、从产生溢出中断请求到得到中断服务这段时间,T1仍在计时,使用TL1|=0xb0;语句可以把这段时间的计数值累加到初始值中,提高定时精确度。3、因为T1是16位的定时计数器,216在16位寄存器中相当于0,因此可以将216去掉,另外-50000/256的结果相当于取-50000的高8位,-50000%256的结果相当于取-50000的低8位。4、程序中带下划线部分是需要修改的部分#include<c8051f020.h>sbitP1_0=P1^0;intcount=10;全局变量voidmain(void){WDTCN=0xDE;WDTCN=0xAD;CKCON&=0xf7;//T0时基选择系统时钟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、扩展了外部数据存储器、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片内数据存储器、64KB片外数据存储器、256b位寻址空间、128B特殊功能寄存器空间。(2)程序存储器读用MOVC指令,写用MOVX指令;片内RAM和SFR用MOV指令;片外RAM用MOVX指令;片内RAM低128字节可以用直接寻址或间接寻址,高128字节只能间接寻址;SFR只能直接寻址。(3)C51中定义变量时,用data、bdata、idata、xdata、pdata、code等存储类型关键字进行区分。(4)0x18~0x1f。(5)0x07,一般设在0x30以上的片内RAM。解析过程:25.答案:初值计算:要定时25ms,必须使T0M=0,对SYSCLK/12进行计数主程序:#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数据。3、4种:向AD0BUSY位写1、T3溢出、CNVSTR上升沿、T2溢出。第一段程序采用向AD0BUSY写1启动,后一段程序采用T3溢出启动4、采用了均值滤波的方法。采集256次,求平均值。5、在ADC0初始化的时候,对窗口寄存器ADC0GTH:ADC0GTL(下限、大于)和ADC0LTH:ADC0LTL(上限、小于)进行设置,将上、下限温度对应的数字量置入对应的寄存器。增加ADC0窗口中断服务程序进行相应处理。解析过程:28.答案:$INCLUDE(C8051F020.INC)ORG0000HAJMP0100HORG0100HSTART:MOVDPTR,#BLOCKMOVODD,#0;计数单元清0MOVEVEN,#0LOOP:MOVXA,@DPTR;取数JBACC.0,ODDCOUNT;若ACC.0=1,转奇数计数INCEVEN;若ACC.0=0,则偶数个数加lAJMPNEXTODDCOUNT:INCODD;奇数计数单元加1NEXT:INCDPTR;修正指针DJNZLEN,LOOP;未完继续SJMP$END解析过程:29.答案:ADC0的运行主要与10个SFR有关。配置寄存器AMX0CF:8个外部输入的模拟量可以通过配置寄存器设定为单端输入或双端输入;通道选择寄存器AMX0SL:8个外部输入的模拟量和一个内部温度传感器量通过通道选择寄存器AMX0SL设定在某一时刻通过多路选择器;配置寄存器ADC0CF:从多路选择器出来的模拟量通过配置寄存器ADC0CF设定ADC转换速度和对模拟量的放大倍数;配置寄存器ADC0CF:由控制寄存器ADC0CN对ADC进行模拟量转换的启动、启动方式、采样保持、转换结束、数字量格式等进行设定;数据字寄存器ADC0H、ADC0L:12位的转换好的数字量存放在数据字寄存器ADC0H、ADC0L中;上下限寄存器ADC0GTH、ADC0GTL、ADC0LTH、ADC0LTL:ADC0中提供了可编程窗口检测器,通过上下限寄存器ADC0GTH、ADC0GTL、ADC0LTH、ADC0LTL设定所需要的比较极限值。解析过程:30.答案:选T0M=0,即使用系统时钟的12分频作为计数源,则T计数=12/(12×106)=1usTC=216-25×103=40536=0x9e5b,即TH0=0x9e;TL0=0x5b;#include<c8051f020.h>sbitP1_1=P1^1;intcount=20;//计数器溢出20次为500msvoidmain(void){WDTCN=0xDE;WDTCN=0xAD;CKCON&=0xf7;//T0时基选择系统时钟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产生周期间隔改变P2、P3的状态。P2口输出的灯从左边(高位)开始亮,一次往右边一位一位的亮,其余都灯都灭,周而复始。P3口输出的灯开始全灭,然后从右(低位)往左亮过来,直至全亮,然后周而复始。解析过程:32.答案:1、22个中断源,2个优先级2、两级使能控制,总允许位EA(IE.7),各中断源的分允许位(位于IE、EIE1、EIE2中)3、字节寻址方式:MOVIE,#88HMOVIP,#08H位寻址方式:SETBEASETBET1SETBPT14、从0x03开始,每个中断源的入口地址与下一个中断源的入口地址相差8B,即0x03、0x0b、0x13、0x1b…..5、在函数定义中增加interruptn说明是中断函数,即函数类型函数名(形式参数列表)interruptn;n为中断类型号6、最快5个周期,最慢18个周期,发生在当收到中断请求时正执行RETI指令的时候。解析过程:33.答案:1、0x00-0x1f为工作寄存器区、0x20-0x2f为可位寻址区、0x30以上为临时存储器区,可作一般数据存储器用。堆栈理论上可设在内部RAM的任何区域,但为了避免与工作寄存器和位寻址空间冲突,一般设在0x30以上的区域。2、通过寻址方式区分,片内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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论