51单片机试题及答案_第1页
51单片机试题及答案_第2页
51单片机试题及答案_第3页
51单片机试题及答案_第4页
51单片机试题及答案_第5页
已阅读5页,还剩45页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

51单片机试题及答案一、选择题(每题2分,共20分)1.关于51单片机的特点,下列说法正确的是:A.51单片机是16位单片机B.51单片机的程序存储器是只读存储器(ROM)C.51单片机的数据存储器是随机存取存储器(RAM),容量为64KBD.51单片机的特殊功能寄存器(SFR)位于片外存储器空间2.51单片机的引脚中,用于提供外部时钟信号的是:A.XTAL1和XTAL2B.RSTC.ALED.PSEN3.下列指令中,不能改变程序计数器(PC)值的是:A.LJMPB.SJMPC.MOVA,BD.CALL4.51单片机的中断系统有几个中断源?A.3个B.4个C.5个D.6个5.下列关于51单片机定时器/计数器的说法,错误的是:A.定时器/计数器0和1都是16位的B.定时器/计数器2是16位的,仅在52子系列中存在C.定时器/计数器的工作模式由TMOD寄存器决定D.定时器/计数器的溢出标志TF由硬件置位,必须由软件清零6.51单片机的串行口工作方式1的波特率由什么决定?A.定时器1的溢出率B.定时器2的溢出率C.系统时钟频率D.外部输入的时钟信号7.下列关于51单片机存储器结构的说法,正确的是:A.51单片机的程序存储器和数据存储器统一编址B.51单片机的内部RAM有128个字节,地址从00H到7FHC.51单片机的特殊功能寄存器(SFR)可以位于80H到FFH的任何地址D.51单片机的位寻址区位于20H到2FH,共16个字节8.下列指令中,不能用于访问外部存储器的是:A.MOVXA,@DPTRB.MOVX@DPTR,AC.MOVCA,@A+PCD.MOVA,@R09.51单片机的堆栈指针(SP)的默认值是:A.00HB.07HC.08HD.0FH10.关于51单片机的低功耗模式,下列说法错误的是:A.51单片机有两种低功耗模式:空闲模式和掉电模式B.在空闲模式下,CPU停止工作,但定时器、串行口和中断系统继续工作C.在掉电模式下,只有外部中断可以唤醒单片机D.进入低功耗模式需要设置PCON寄存器中的相应位二、填空题(每空2分,共20分)1.51单片机的CPU由____、____和____三部分组成。2.51单片机的4个I/O端口中,作为数据/地址分时复用端口的是____端口。3.51单片机的指令系统中,用于将立即数送入累加器A的指令是____。4.51单片机的程序状态字(PSW)中,用于指示当前工作寄存器区选择的位是____和____。5.51单片机的定时器/计数器工作在计数模式时,对外部输入信号的计数频率最高为____。6.51单片机的串行口工作在方式2时,波特率为____或____。7.51单片机的中断优先级控制寄存器是____。8.51单片机的堆栈是按照____原则进行数据存取的。9.51单片机中,用于存放当前指令操作码的寄存器是____。10.51单片机中,用于指示指令执行结果的进位/借位状态的标志位是____。三、简答题(每题4分,共20分)1.简述51单片机的存储器结构,并说明程序存储器和数据存储器的区别。2.解释51单片机的指令周期、机器周期和状态周期的概念及其关系。3.简述51单片机中断系统的基本工作原理,并说明中断服务程序的编写要点。4.比较51单片机的定时器/计数器0和定时器/计数器2的异同点。5.简述51单片机串行通信的四种工作方式及其特点。四、编程题(每题10分,共20分)1.编写一个程序,使用51单片机的定时器0工作在方式1,实现1秒的定时,并在P1.0端口输出一个周期为2秒的方波(高电平1秒,低电平1秒)。假设系统时钟频率为12MHz。2.编写一个程序,使用51单片机的串行口工作在方式1,波特率为9600bps,实现单片机与PC之间的双向通信。要求单片机能够接收PC发送的字符,并将其发送回PC(回显功能)。假设系统时钟频率为11.0592MHz。五、综合应用题(20分)设计一个基于51单片机的电子密码锁系统,要求如下:1.使用4×4矩阵键盘作为输入设备,用户可以通过键盘输入4位密码。2.使用LCD1602显示提示信息和密码输入状态。3.系统预设一个4位密码(例如1234)。4.用户输入密码后,按"确认"键进行验证。如果密码正确,则继电器动作,模拟开锁,并在LCD上显示"Unlock";如果密码错误,则在LCD上显示"Error",并等待3秒后清空显示。5.用户连续输入错误密码3次后,系统锁定5分钟,期间不接受任何输入。6.使用一个LED指示系统状态:绿灯表示正常状态,红灯表示锁定状态。7.使用蜂鸣器在按键时发出提示音,密码错误时发出警告音,密码正确时发出成功音。请编写完整的程序代码,并简要说明硬件连接和程序设计思路。---答案及解析一、选择题1.答案:B解析:51单片机是8位单片机,不是16位单片机,所以A错误。51单片机的程序存储器是只读存储器(ROM),用于存放程序代码,所以B正确。51单片机的内部RAM只有128个字节,外部RAM可以扩展到64KB,所以C错误。51单片机的特殊功能寄存器(SFR)位于内部RAM的80H-FFH地址空间,而不是片外存储器空间,所以D错误。2.答案:A解析:51单片机的XTAL1和XTAL2引脚用于连接外部晶振,提供系统时钟信号,所以A正确。RST引脚用于复位,ALE用于锁存低8位地址,PSEN用于选通外部程序存储器,所以B、C、D错误。3.答案:C解析:LJMP(长跳转)、SJMP(短跳转)和CALL(调用)都是改变程序计数器(PC)值的指令,而MOVA,B是一条数据传送指令,不改变PC的值,所以C正确。4.答案:C解析:51单片机的中断系统有5个中断源:外部中断0(INT0)、外部中断1(INT1)、定时器/计数器0(T0)、定时器/计数器1(T1)和串行口中断,所以C正确。5.答案:A解析:定时器/计数器0和1都是16位的,但定时器/计数器2也是16位的,在51子系列中不存在,但在52子系列中存在,所以A错误。定时器/计数器的工作模式由TMOD寄存器决定,所以C正确。定时器/计数器的溢出标志TF由硬件置位,必须由软件清零,所以D正确。6.答案:A解析:51单片机的串行口工作在方式1时,波特率由定时器1的溢出率决定,所以A正确。定时器2也可以用于波特率生成,但方式1默认使用定时器1,所以B错误。系统时钟频率和外部输入的时钟信号不是决定方式1波特率的因素,所以C、D错误。7.答案:B解析:51单片机的程序存储器和数据存储器是分开编址的,所以A错误。51单片机的内部RAM有128个字节,地址从00H到7FH,所以B正确。51单片机的特殊功能寄存器(SFR)位于80H到FFH地址空间,但不是所有地址都有定义,所以C错误。51单片机的位寻址区位于20H到2FH,共16个字节,128个位,所以D正确。8.答案:D解析:MOVXA,@DPTR和MOVX@DPTR,A用于访问外部数据存储器,MOVCA,@A+PC用于访问程序存储器,而MOVA,@R0用于访问内部RAM,所以D正确。9.答案:B解析:51单片机的堆栈指针(SP)的默认值是07H,所以B正确。10.答案:C解析:51单片机有两种低功耗模式:空闲模式和掉电模式,所以A正确。在空闲模式下,CPU停止工作,但定时器、串行口和中断系统继续工作,所以B正确。在掉电模式下,只有外部中断0或1可以唤醒单片机,所以C错误。进入低功耗模式需要设置PCON寄存器中的相应位,所以D正确。二、填空题1.算术逻辑单元(ALU)、控制器、寄存器组解析:51单片机的CPU由三部分组成:算术逻辑单元(ALU)用于执行算术和逻辑运算,控制器用于控制指令的执行,寄存器组用于存放数据和地址。2.P0解析:51单片机的4个I/O端口中,P0端口作为数据/地址分时复用端口,在访问外部存储器时,用于传送低8位地址和数据。3.MOVA,data解析:51单片机的指令系统中,MOVA,data用于将立即数data送入累加器A。4.RS0、RS1解析:51单片机的程序状态字(PSW)中,RS0和RS1两位用于指示当前工作寄存器区选择,00、01、10、11分别对应选择0、1、2、3区。5.系统时钟频率的1/24解析:51单片机的定时器/计数器工作在计数模式时,对外部输入信号的计数频率最高为系统时钟频率的1/24,因为对外部信号的采样是在每个机器周期的S5P2进行的。6.fosc/32、fosc/64解析:51单片机的串行口工作在方式2时,波特率为固定值,由系统时钟频率fosc决定,可以是fosc/32或fosc/64,具体由SMOD位决定。7.IP解析:51单片机的中断优先级控制寄存器是IP(InterruptPriority),用于设置各中断源的优先级。8.后进先出(LIFO)解析:51单片机的堆栈是按照后进先出(LIFO)原则进行数据存取的。9.指令寄存器(IR)解析:51单片机中,用于存放当前指令操作码的寄存器是指令寄存器(IR)。10.CY解析:51单片机中,用于指示指令执行结果的进位/借位状态的标志位是CY(Carry)。三、简答题1.51单片机的存储器结构:51单片机的存储器结构分为程序存储器和数据存储器两部分,它们是分开编址的。程序存储器:-用于存放程序代码、常数和表格-地址空间为0000H-FFFFH,共64KB-内部有4KB或8KB的ROM,外部可扩展至64KB-使用MOVC指令访问数据存储器:-用于存放变量和中间结果-分为内部RAM和外部RAM-内部RAM地址为00H-7FH,共128字节-外部RAM地址为0000H-FFFFH,共64KB-使用MOV指令访问内部RAM,MOVX指令访问外部RAM区别:-程序存储器用于存放程序代码,数据存储器用于存放数据-程序存储器使用MOVC指令访问,数据存储器使用MOV或MOVX指令访问-程序存储器是只读的,数据存储器是可读写的2.51单片机的指令周期、机器周期和状态周期的概念及其关系:-指令周期:执行一条指令所需的时间,以机器周期为单位-机器周期:完成一个基本操作所需的时间,51单片机的机器周期由12个时钟周期组成-状态周期:时钟周期的两倍,每个机器周期包含6个状态周期(S1-S6)关系:-一个机器周期包含6个状态周期-一个指令周期可以包含1-4个机器周期-例如,NOP指令的指令周期为1个机器周期,而乘法指令(MULAB)的指令周期为4个机器周期3.51单片机中断系统的基本工作原理:51单片机的中断系统允许外部或内部事件打断CPU的当前执行,转而处理这些事件处理完毕后再返回原来的执行位置。基本工作原理:-中断源产生中断请求-CPU检测到中断请求并响应-保护现场(将当前程序计数器PC和程序状态字PSW等压入堆栈)-转入中断服务程序-执行中断服务程序-恢复现场(从堆栈中弹出PC和PSW等)-返回原程序继续执行中断服务程序的编写要点:-中断服务程序应以特定向量地址开始(如外部中断0的入口地址为0003H)-使用ORG指令设置正确的中断向量地址-保护和恢复现场,避免中断影响主程序-中断服务程序应尽可能简短,避免长时间占用CPU-注意中断优先级,确保关键中断能够及时响应-使用RETI指令结束中断服务程序,而不是RET4.51单片机的定时器/计数器0和定时器/计数器2的异同点:相同点:-都是16位的定时器/计数器-都有多种工作模式(方式0、1、2、3)-都有溢出标志位(TF0和TF2)-都可以被中断不同点:-定时器/计数器0在51和52子系列中都存在,而定时器/计数器2只在52子系列中存在-定时器/计数器0有方式3(分裂成两个8位定时器),而定时器/计数器2没有方式3-定时器/计数器2有捕获和自动重载功能,而定时器/计数器0没有-定时器/计数器2的波特率生成功能更强大,可以作为串行口的波特率发生器-定时器/计数器2的控制寄存器是T2CON,而定时器/计数器0的控制寄存器是TCON-定时器/计数器2有专门的捕获/重载寄存器RCAP2H和RCAP2L,而定时器/计数0没有5.51单片机串行通信的四种工作方式及其特点:方式0(同步移位寄存器方式):-8位数据,通过RXD发送/接收-TXD用于输出移位脉冲-常用于扩展I/O口,连接移位寄存器-波特率固定为fosc/12方式1(8位UART方式):-10位数据帧:1起始位、8数据位、1停止位-通过TXD发送,RXD接收-波特率可变,由定时器1的溢出率决定-常用于点对点的异步通信方式2(9位UART方式):-11位数据帧:1起始位、9数据位、1停止位-通过TXD发送,RXD接收-波特率固定,为fosc/32或fosc/64(取决于SMOD位)-常用于多机通信方式3(9位UART方式,可变波特率):-11位数据帧:1起始位、9数据位、1停止位-通过TXD发送,RXD接收-波特率可变,由定时器1的溢出率决定-常用于多机通信,需要可变波特率的场合四、编程题1.使用定时器0实现1秒定时,并在P1.0输出周期为2秒的方波:```assembly;系统时钟频率为12MHz;定时器0工作在方式1,16位定时器;1秒定时需要定时50000次(50ms定时中断20次)ORG0000HLJMPMAINORG000BHLJMPTIMER0_ISRORG0030HMAIN:MOVSP,60H;设置堆栈指针MOVTMOD,01H;定时器0工作在方式1MOVTH0,3CH;定时50ms,初值=65536-50000=15536=3CB0HMOVTL0,0B0HMOVR0,20;20次50ms定时=1秒SETBTR0;启动定时器0SETBET0;允许定时器0中断SETBEA;开总中断SJMP$;等待中断TIMER0_ISR:PUSHPSW;保护现场PUSHACCCLRTR0;停止定时器0MOVTH0,3CH;重新加载初值MOVTL0,0B0HSETBTR0;重新启动定时器0DJNZR0,TIMER0_EXIT;1秒未到,继续计数;1秒到,切换P1.0状态CPLP1.0;翻转P1.0MOVR0,20;重置计数器TIMER0_EXIT:POPACC;恢复现场POPPSWRETI;中断返回END```解析:-程序使用定时器0工作在方式1,实现50ms的定时-定时器0中断服务程序中,每50ms中断一次,计数20次即为1秒-每当1秒定时完成,翻转P1.0的状态,从而实现周期为2秒的方波输出-定时器0的初值设置为3CB0H(15536),因为12MHz时钟下,50ms需要计数50000次(65536-50000=15536)-程序中使用R0寄存器作为计数器,记录中断次数2.使用串行口实现与PC的双向通信(回显功能):```assembly;系统时钟频率为11.0592MHz;串行口工作在方式1,波特率9600bps;定时器1工作在方式2,作为波特率发生器ORG0000HLJMPMAINORG0023HLJMPSERIAL_ISRORG0030HMAIN:MOVSP,60H;设置堆栈指针MOVTMOD,20H;定时器1工作在方式2MOVTH1,0FDH;9600bps波特率初值(11.0592MHz)MOVTL1,0FDHSETBTR1;启动定时器1MOVSCON,50H;串行口工作在方式1,允许接收SETBES;允许串行口中断SETBEA;开总中断SJMP$;等待中断SERIAL_ISR:PUSHPSW;保护现场PUSHACCJNBRI,SERIAL_SEND;如果不是接收中断,则跳转到发送处理;接收中断处理CLRRI;清除接收中断标志MOVA,SBUF;读取接收到的数据MOVSBUF,A;将数据发送回PC(回显)SJMPSERIAL_EXITSERIAL_SEND:;发送中断处理(如果有需要)CLRTI;清除发送中断标志SERIAL_EXIT:POPACC;恢复现场POPPSWRETI;中断返回END```解析:-程序使用定时器1工作在方式2,作为波特率发生器,产生9600bps的波特率-串行口工作在方式1,10位UART格式,允许接收-串行口中断服务程序中,如果是接收中断(RI=1),则读取接收到的数据并发送回PC-定时器1的初值设置为0FDH,因为11.0592MHz时钟下,9600bps波特率需要定时器1溢出率为38400,定时器初值为256-38400/32=256-1200=-944=256-944=FDH(补码)-程序使用查询方式检测中断类型,如果是接收中断则处理回显功能五、综合应用题基于51单片机的电子密码锁系统程序代码:```assembly;电子密码锁系统;硬件连接:;-LCD1602:P0口连接数据线,P2.0-RS,P2.1-R/W,P2.2-EN;-4x4矩阵键盘:P3.0-P3.3作为行线,P3.4-P3.7作为列线;-LED:P1.0-绿灯(正常状态),P1.1-红灯(锁定状态);-蜂鸣器:P1.7;-继电器:P2.7ORG0000HLJMPMAINORG0003HLJMPINT0_ISRORG0023HLJMPSERIAL_ISR;LCD1602子程序LCD_CMD:EQU3000HLCD_DATA:EQU3050HLCD_INIT:EQU3100HLCD_CLEAR:EQU3150HLCD_PRINT:EQU3200H;键盘扫描子程序KEY_SCAN:EQU3250H;延时子程序DELAY_MS:EQU3300HDELAY_S:EQU3350HORG0030HMAIN:MOVSP,60H;设置堆栈指针;初始化LCDLCALLLCD_INITMOVDPTR,MSG_WELCOMELCALLLCD_PRINT;初始化LEDCLRP1.0;绿灯亮SETBP1.1;红灯灭CLRP2.7;继电器断开;初始化蜂鸣器CLRP1.7;蜂鸣器不响;初始化变量MOVR0,0;密码输入计数器MOVR1,0;错误计数器MOVR2,0;锁定计时器MOV30H,1;1-正常状态,2-锁定状态MOV31H,1;1-等待密码,2-密码输入中;设置外部中断0SETBIT0;边沿触发SETBEX0;允许外部中断0SETBEA;开总中断;主循环MAIN_LOOP:MOVA,30H;读取系统状态CJNEA,2,CHECK_KEY;如果不是锁定状态,检查键盘;锁定状态处理MOVA,R2CJNEA,0,MAIN_LOOP;如果锁定时间未到,继续等待;锁定时间到,恢复正常状态MOV30H,1;设置为正常状态CLRP1.1;红灯灭SETBP1.0;绿灯亮MOVR1,0;清除错误计数器MOVR0,0;清除密码输入计数器;显示欢迎信息LCALLLCD_CLEARMOVDPTR,MSG_WELCOMELCALLLCD_PRINTSJMPMAIN_LOOPCHECK_KEY:;检查键盘输入LCALLKEY_SCANCJNEA,0FFH,KEY_PRESSED;如果有按键按下;没有按键,检查密码输入状态MOVA,31HCJNEA,2,MAIN_LOOP;如果不是密码输入中,继续等待;密码输入完成,验证密码LCALLVERIFY_PASSWORDSJMPMAIN_LOOPKEY_PRESSED:;按键处理MOVB,A;保存按键值;蜂鸣器提示音SETBP1.7LCALLDELAY_MSCLRP1.7;根据按键值处理CJNEA,10,CHECK_NUM;不是确认键;确认键处理MOVA,31HCJNEA,2,MAIN_LOOP;如果不是密码输入中,忽略;密码输入完成,验证密码LCALLVERIFY_PASSWORDSJMPMAIN_LOOPCHECK_NUM:CJNEA,11,MAIN_LOOP;不是清除键;清除键处理MOVR0,0;清除密码输入计数器MOV31H,1;设置为等待密码状态;清除LCD显示LCALLLCD_CLEARMOVDPTR,MSG_ENTERLCALLLCD_PRINTSJMPMAIN_LOOP;数字键处理MOVA,31HCJNEA,1,MAIN_LOOP;如果不是等待密码状态,忽略;添加密码MOVA,R0CJNEA,4,ADD_PASS;密码未满;密码已满,忽略SJMPMAIN_LOOPADD_PASS:;存储密码MOVA,BADDA,30H;转换为ASCIIMOV@R0,A;存储密码;更新LCD显示MOVDPTR,MSG_ENTERLCALLLCD_PRINTMOVA,R0ADDA,31H;密码显示位置MOVB,1MULAB;计算显示位置MOVR3,A;保存显示位置MOVA,@R0LCALLLCD_PRINT_CHAR;显示密码字符;增加密码计数器INCR0MOV31H,2;设置为密码输入中;检查密码是否已满MOVA,R0CJNEA,4,MAIN_LOOP;密码未满;密码已满,自动验证LCALLVERIFY_PASSWORDSJMPMAIN_LOOP;验证密码子程序VERIFY_PASSWORD:;比较输入密码和预设密码MOVR4,4;密码长度MOVR5,0;预设密码指针VERIFY_LOOP:MOVA,@R0;读取输入密码MOVB,A;保存输入密码MOVDPTR,PASSWORD;预设密码表MOVA,R5MOVCA,@A+DPTR;读取预设密码CJNEA,B,PASSWORD_ERROR;密码不匹配;密码匹配,继续比较下一位DECR0INCR5DJNZR4,VERIFY_LOOP;所有密码匹配,密码正确SJMPPASSWORD_CORRECTPASSWORD_ERROR:;密码错误INCR1;增加错误计数器;显示错误信息LCALLLCD_CLEARMOVDPTR,MSG_ERRORLCALLLCD_PRINT;蜂鸣器警告音SETBP1.7LCALLDELAY_MSCLRP1.7;检查错误次数MOVA,R1CJNEA,3,PASSWORD_EXIT;错误次数未到3次;错误次数达到3次,锁定系统MOV30H,2;设置为锁定状态SETBP1.1;红灯亮CLRP1.0;绿灯灭MOVR2,300;锁定5分钟(300秒);显示锁定信息LCALLLCD_CLEARMOVDPTR,MSG_LOCKEDLCALLLCD_PRINTPASSWORD_EXIT:;清除密码输入MOVR0,0;清除密码输入计数器MOV31H,1;设置为等待密码状态SJMPVERIFY_DONEPASSWORD_CORRECT:;密码正确CLRP2.7;继电器动作,模拟开锁SETBP1.0;绿灯亮CLRP1.1;红灯灭;显示成功信息LCALLLCD_CLEARMOVDPTR,MSG_UNLOCKLCALLLCD_PRINT;蜂鸣器成功音MOVR6,3SUCCESS_BEEP:SETBP1.7LCALLDELAY_MSCLRP1.7LCALLDELAY_MSDJNZR6,SUCCESS_BEEP;清除错误计数器MOVR1,0;清除密码输入MOVR0,0;清除密码输入计数器MOV31H,1;设置为等待密码状态;3秒后清除显示LCALLDELAY_SLCALLDELAY_SLCALLDELAY_SLCALLLCD_CLEARMOVDPTR,MSG_WELCOMELCALLLCD_PRINTVERIFY_DONE:RET;外部中断0服务程序(用于锁定计时)INT0_ISR:PUSHPSWPUSHACC;检查系统状态MOVA,30HCJNEA,2,INT0_EXIT;如果不是锁定状态,退出;减少锁定时间DECR2MOVA,R2CJNEA,0,INT0_EXIT;锁定时间未到,退出;锁定时间到,恢复正常状态MOV30H,1;设置为正常状态CLRP1.1;红灯灭SETBP1.0;绿灯亮MOVR1,0;清除错误计数器MOVR0,0;清除密码输入计数器;显示欢迎信息LCALLLCD_CLEARMOVDPTR,MSG_WELCOMELCALLLCD_PRIN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论