1、单片机原理及接口技术思考题与习题思考题与习题1.8051单片机内包含哪些主要逻辑功能部件?一个8位的CPU、128B/256B的片内数据存储器、4KB/8KB程序存储器、四个8位并行I/O接口、两个定时/计数器、5个中断源的中断控制系统、一个全双工UART的串行I/O口、片内振荡器和时钟产生电路。2.8051的EA端有何用途? 当EA为低电平时,CPU只能访问外部的程序存储器。 当EA为高电平时,CPU能访问内部的程序存储器,并当PC的值超过0FFFH时,自动转向访问片外的程序存储器。3.8051的存储器分为哪几个空间?如何区别不同空间的寻址?4.简述8051RAM的空间分配。5.6.如何简便
2、地判断8051正在工作? 当8051上电正常工作时,ALE引脚输出fosc/6的正脉冲,可用示波器查看及判断。7.8051如何确定和改变当前工作寄存器组? CPU通过程序状态字PSW中RS1、RS0来确定和改变当前工作寄存器组。8.9.10.11.8051单片机由哪些信号需要芯片以第二功能的方式提供? RXD、TXD、INT0、INT1、T0、T1、WR、RD这些信号分别由P3.0P3.7以第二功能的方式提供。12.13.14.开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组? 开机复位后,CPU使用0组工作寄存器。 它们的地址是00H07H。
3、CPU通过程序状态字PSW中RS1、RS0来确定和改变当前工作寄存器组。15.程序状态寄存器PSW的作用是什么?常用标志有哪些位?作用是什么? PSW中存放着程序执行后的状态信息,供程序查询或判断。 常用的标志有: 进(借)位位:C=0无进(借)位;C=1有进(借)位。 半进(借)位位:AC=0无进(借)位;AC=1有进(借)位。 用户标志位:由用户自己定义。 工作寄存器组选择控制位:选择当前工作寄存器组。 溢出标志位:判断是否溢出。OV=0无溢出;OV=1有溢出。 奇偶标志位:判断结果中有奇数或偶数个“1”P=0则累加器A中有偶数个1;P=1则累加器A中有奇数个1。16.17.18.19.思
4、考题与习题1.2.3.4.5.要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式。 特殊功能寄存器:直接寻址、位寻址(部分特殊功能寄存器) 片外数据存储器:寄存器间接寻址MOVX(R1、R2、DPTR)6.在8051片内RAM中,已知(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。请分析下面各是什么指令,说明源操作数的寻址方式以及按顺序执行每条指令后的结果。指 令 源操作数的寻址方式 执行结果 MOV A,40H 直接寻址 A=48H MOV R0,A 寄存器寻址 R0=48H MOV P1,#FOH 立即数寻址 P1=48H MOV R0,30H 直接寻
5、址 (48H)=38H MOV DPTR,#3848H 立即数寻址 DPTR=3848H MOV 40H,38H 直接寻址 (40H)=40H MOV R0,30H 直接寻址 R0=38H MOV P0,R0 寄存器寻址 P0=38H MOV 18H,#30H 立即寻址 (18H)=30H MOV A,R0 寄存器间接寻址 A=40H MOV P2,P1 寄存器寻址 P2=48H 7.8.指出下列指令的本质区别?MOV A,DATAMOV A,#DATA 前一条指令源操作数的寻址方式是直接寻址,把地址为DATA的内存单元中的内容传送到累加器A中。 后一条指令源操作数的寻址方式是立即寻址,把DA
6、TA这个立即数赋给寄存器A。 MOV DATA1,DATA2MOV 74H,#78H 前一条指令源操作数的寻址方式是直接寻址,把地址为DATA2的内存单元中的内容传送到地址为DATA1的内存单元中。 后一条指令源操作数的寻址方式是立即寻址,把78H这个立即数传送到内存单元74H中。 9.设R0的内容为32H,A的内容为48H,片内RAM的32H单元内容为80H,40H单元内容为08H。请指出在执行下列程序段后上述各单元内容的变化。MOV A,R0 A=80H;R0=32H;(32H)=80H;(40H)=08H MOV R0,40H A=80H;R0=32H;(32H)=08H;(40H)=0
7、8H MOV 40H,A A=80H;R0=32H;(32H)=80H;(40H)=80H MOV R0,#35H A=80H;R0=35H;(32H)=80H;(40H)=08H 10.11.如何访问外部RAM单元,可使用哪些寻址方式? 使用MOVX指令,可采用寄存器间接寻址方式(R0,R1,DPTR)12.13.14.15.16.设A=83H,R0=17H,(17H)=34H。问执行以下指令后,A=?ANL A,#17H ;A=03H ORL 17H,A ;A=03H,(17H)=37H XRL A,R0 ;A=34H CPL A ;A=0CBH 17.使用位操作指令实现下列逻辑操作。要求
8、不得改变未涉及位的内容。使ACC.0置1。 SETB ACC.0 清除累加器高4位。 CLR ACC.7CLR ACC.6CLR ACC.5CLR ACC.4 清除ACC.3,ACC.4,ACC.5,ACC.6。 CLR ACC.6CLR ACC.5CLR ACC.4CLR ACC.3 18.编程实现把内部RAM R0R7的内容传送到20H27H单元。MOV 20H,R0 MOV 21H,R1 MOV 22H,R2 MOV 23H,R3 MOV 24H,R4 MOV 25H,R5 MOV 26H,R6 MOV 27H,R7 19.设逻辑表达式为:Y=A(B+C)+D(E+F),试编一程序以软件
9、方法实现上述逻辑功能。20.试编写程序,将内部RAM的20H,21H,22H三个连续单元的内容依次存入2FH,2EH,2DH中。MOV 2FH,20H MOV 2EH,21H MOV 2DH,22H 21.编写程序,进行两个6位数的减法:6F5DH-13B4H,结果的高8位和低8位分别存入内部RAM的31H、30H单元中。CLR C MOV A,#5DH SUBB A,#B4H MOV 30H,A MOV A,#6FH SUBB A,13H MOV 31H,A 22.编写程序,若累加器A的内容分别满足下列条件时,则程序转至LABEL存储单元。设A中存放的是无符号数。A10 A10 A10 CJ
10、NE A,#10,L1 LABEL: SJMP L2 L1: JNC LABEL L2: CJNE A,#11,L1 LABEL: SJMP L2 L1: JNC LABEL L2: CJNE A,#10,L1 LABEL: SJMP L2 L1: JC LABEL L2: 23.24.25.26.试编写程序,查找在内部RAM的20H50H单元中是否有0AAH这一数据。若有则将51H单元置为01H;若未找到,则将51H置为0。 MOV R0,#31H MOV R1,#20H MOV 51H,#00H L1: CJNE R1,#0AAH,L2 MOV 51H,#01H SJMP L3 L2: I
11、NC R1 DJNZ R0,L1 L3: 27.试编写程序,查找在内部RAM的20H50H单元中有多少个00H这一数据,并将查找结果存入51H单元。 MOV R0,#31H MOV R1,#20H MOV R2,#00H L1: CJNE R1,#00H,L2 INC R2 L2: INC R1 DJNZ R0,L1 L3: MOV 51H,R2 28.外部数据RAM中有一个数据块,存有若干个字符、数字,首地址为SOURCE。要求将该数据块传送到内部RAM以DIST开始的区域,直到遇到字符“$”时结束(“$”也要传送,它的ASCII码为24H)。 MOV DPTR,#SOURCE MOV R1
12、,#DIST L1: MOVX A,DPTR INC DPTR MOV R1,A INC R1 CJNE A,#24H,L1 29.已知R3,R4中存放一个16位的二进制数,高位在R3中,低位在R4中。试编一程序将其求补,结果存回原处。方法一 方法二 CLR C CLR C MOV A,#00H MOV A,R3 SUBB A,R4 CPL A MOV R4,A MOV R3,A MOV A,#00H MOV A,R4 SUBB A,R3 CPL A MOV R3,A ADD A,1 MOV R4,A MOV A,R3 ADDC A,#00H MOV R3,A 30.已知30H,31H中存放一
13、个16位的二进制数,高位在前,低位在后。试编一程序将其乘2,结果存回原处。方法一 方法二 MOV A,31H CLR C ADD A,31H MOV A,31H MOV 31H,A RL A MOV A,30H MOV 31H,A ADDC A,30H MOV A,30H MOV R3,A RLC A MOV 30H,A 31.32.编写一个程序,把片外RAM从2000H开始存放的8个数传送到片内30H开始的单元中。 MOV DPTR,#2000H MOV R0,#30H MOV R1,#08H L1: MOV A,DPTR MOV R0,A INC DPTR INC R0 DJNZ R1,L
14、1 33.34.35.设(R0)=7EH,(DPTR)=10FEH,片内RAM中7E单元的内容为0FFH,7FH单元的内容为38H。试为下列程序的每条指令注释其执行结果。INC R0 (7EH)=00H INC R0 R0=7FH INC R0 (7FH)=39H INC DPTR (DPTR)=10FFH INC DPTR (DPTR)=1100H INC DPTR (DPTR)=1101H 36.下列程序段经汇编后,从1000H开始的各有关存储单元的内容将是什么? ORG 1000H 1000H “S” 1001H “T” 1002H “A” 1003H “R” 1004H “T” 100
15、5H 12H 1006H 34H 1007H 30H 1008H 00H 1009H 00H 100AH 70H TAB1: EQU 1234H TAB2: EQU 3000H DB “START DW TAB1,TAB2,70H 37.38.39.试编写程序,判断30H单元中的数据是奇数还是偶数,是奇数则把31H单元置1,是偶数则把31置0。要求不破坏30H单元的内容。方法一 MOV A,30H MOV 31H,#00H ORL A,#01H JZ L1 MOV 31H,#01H L1: 方法二 MOV A,30H ORL A,#01H JZ L1 MOV 31H,#01H SJMP L2
16、L1: MOV 31H,#00H L2: 40.试编写程序,使31H单元中二进制数的最高位(符号位)置1。MOV A,30H ORL A,#80H MOV 30H,A 41.试编写程序,把31H单元中二进制数的最高位(符号位)求反。MOV A,30H XRL A,#80H MOV 30H,A 思考题与习题1.什么是中断和中断系统?其主要功能是什么?2.试编写一段对中断系统初始化的程序,使之允许INT0、INT1、TO、串行口中断,且使T0中断为高优先级中断。 字节操作方式 位操作方式 MOV IP,#00000101BMOV IE,#10010111B SETB ESSETB EX1SETB
17、EX0SETB ET0SETB PX1SETB PX0SETB EA 3.在单片机中,中断能实现哪些功能? 答:I/O设备请求服务;硬件故障;实时时钟;为调试程序而设置的中断源。 4.8051共有哪些中断源?对其中断请求如何进行控制? 5.什么是中断优先级?中断优先级处理的原则是什么? 答:中断优先级是CPU相应中断的顺序。其处理原则是:高优先级组的中断优先响应低优先组的中断。同组(级)按外部中断0、定时器0、外中断1、定时器1、串行口的顺序响应。6.说明外部中断请求的查询和响应过程。7.8051在什么条件下可响应中断? 答:CPU开中断(EA=1); 中断源发中断请求信号且其中断允许位为1;
18、无同级中断或更高级中断正在被服务; 当前的指令周期已经结束(若是当前指令为RETI或访问IE、IP的指令,则应等CPU再执行完一条指令)。8.简述8051单片机的中断响应过程。9.在8051内存中,应如何安排程序区? 答:8051复位后PC=0000H,而0003H002BH为各中断源的入口地址,故程序段一般从0030H(以后)的地址开始存放。因此编程时应在0000H出写一跳转指令转至0030H(或相应的开始地址)。10.试述中断的作用及中断的全过程。11.当正在执行某一中断源的中断服务程序时,如果有新的中断请求出现,试问在什么情况下可响应新的中断请求?在什么情况下不能响应新的中断请求?12.
19、8051单片机外部中断源有几种触发中断请求的方法?如何实现中断请求?13.8051单片机有5个中断源,但只能设置两个中断优先级,因此,在中断优先级安排上受到一定的限制。试问以下几种中断优先级顺序的安排(级别由高到低)是否可能?若可能,则应如何设置中断源的中断级别?否则,请简述不可能的理由。 定时器0、定时器1、外中断0、外中断1、串行口。 答:可以。MOV IP,#00001010B。 串行口、外中断0、定时器0、外中断1、定时器1。 答:可以。MOV IP,#00010000B。 外中断0、定时器1、外中断1、定时器0、串行口。 答:不可能。因为把外中断0、定时器1设定为高优先级时,在低优先
20、级中定时器0的优先级高于外中断1。 外中断0、外中断1、串行口、定时器0、定时器1。 答:可以。MOV IP,#00010101B。 串行口、定时器0、外中断0、外中断1、定时器1。 答:不可能。因为若把串行口及定时器0设定为高优先级中断,在同级中断优先级中串行口为最低。而单独把串行口设定为高优先级中断时,低优先级组中的最高优先级应为外中断0。 外中断0、外中断1、定时器0、串行口、定时器1。 答:不可能。 外中断0、定时器1、定时器0、外中断1、串行口。 答:不可能。14.以中断方法设计单片机秒、分脉冲发生器。假定P1.0每秒钟产生一个机器周期的正脉冲,P1.1每分钟产生一个机器周期的正脉冲
21、。思考题与习题1.定时器模式2有什么特点?使用于什么应用场合? 答:定时器模式2具有自动重装载的8位定时器/计数器。 一般使用于串行口波特率发生器。2.单片机用内部定时方法产生频率为100KHZ等宽矩形波,假定单片机的晶振频率为12MHZ。请编程实现。3.8051定时器有哪几种工作模式?有何区别?4.8051单片机内部设有几个定时器/计数器?它们是由哪些特殊功能寄存器组成?5.定时器/计数器用作定时器时,其定时时间与哪些因素有关?作为计数器时,对外界计数频率有何限制? 答:用作定时器时定时时间与振荡器的频率、计数器的初值有关。 用作计数器时计数频率为振荡频率/24。6.简述定时器四种工作模式的
22、特点。如何选择和设定?7.8.9.10.11.8051定时器作定时和计数时,其计数脉冲分别由谁提供? 定时:单片机的主频经12分频提供。 计数:Ti引脚提供。12.8051定时器门控信号GATE设置为1时,定时器如何启动? 答:8051定时器门控信号GATE设置为1时,定时器将由INTi引脚启动。13.已知8051单片机的fosc=6MHZ,请利用T0和P1.0输出矩形波。矩形波高电平宽度50s,低电平宽度300s。 定时时间为50s,则时间常数=28-(50*10-6*6*106/12)=28-25=231=0E7H ORG 0000H RESET: AJMP MAIN ;跳过中断服务程序区
23、 ORG 000BH AJMP ITOP 主程序 ORG 0100H MAIN: MOV SP,#60H ;设置堆栈指针 PTOMD: MOV TMOD,#02H ;设置T0模式2 MOV TH0,#0E7H ;送初值 MOV TL0,#0E7H MOV R0,#00H ;设置计数器 SETB TR0 ;启动定时 SETB ET0 ;T0开中断 SETB EA ;CPU开中断 HERE: SJMP HERE ;等待时间到,转入中断服务程序(模拟主程序的运行) 中断服务程序 ORG 0120H ITOP: CJNE R0,#00H,L1 ;若R0不等于0转L1输出低电平 SETB P1.0 ;R
24、0=0输出高电平 SJMP L2 L1: CLR P1.0 ;R00输出低电平 L2: INC R0 ;R0加1 CJNE R0,#07H,L3 ;判断是否已输出6个50s的低电平 MOV R0,#00H ;是则重置R0=0 L3: SET ET0 ;T0开中断 RETI 14.已知8051单片机的fosc=12MHz,用T1定时。试编程由P1.0和P1.1引脚分别输出周期为2ms和500s的方波。 定时时间为250s,则时间常数=28-(250*10-6*6*106/12)=28-125=131=83H ORG 0000H RESET: AJMP MAIN ;跳过中断服务程序区 ORG 00
25、1BH AJMP ITOP 主程序 ORG 0100H MAIN: MOV SP,#60H ;设置堆栈指针 PTOMD: MOV TMOD,#20H ;设置T1模式2 MOV TH0,#83H ;送初值 MOV TL0,#083H MOV R0,#00H ;设置计数器 SETB TR1 ;启动定时 SETB ET1 ;T0开中断 SETB EA ;CPU开中断 HERE: SJMP HERE ;等待时间到,转入中断服务程序(模拟主程序的运行) 中断服务程序 ORG 0120H ITOP: CPL P1.0 ;每间隔250使P1.0反相输出 MOV A,R0 JNB ACC.3,L1 ;若ACC
26、.3不等于1转L1输出低电平 SETB P1.1 ;ACC.3等于1输出高电平 SJMP L2 L1: CLR P1.1 ;ACC.3不等于1输出低电平 L2: INC R0 ;R0加1 L3: SET ET0 ;T0开中断 RETI 15.16.17.18.思考题与习题1.简述单片机系统扩展的基本原则和实现方法。2.什么是RAM?有什么特点?3.以8031为主机的系统,拟采用2片2764 EPROM 芯片扩展16KB程序存储器。请设计出硬件结构图。4.5.6.7.8.9.10.11.12.13.下图是四片8K8位存储器芯片的连接图。请确定每片存储器芯片的地址范围。 答: 显示子程序DISP:
27、SETB 0D4H;改变当前工作寄存器组MOV R1,#7EH;设置显示缓冲区首址MOV R2,#20H;设置最左边的显示位MOV R3,#00H;延时时间DISP1:MOV DPTR,#0FF21H;字位口MOV A,R2MOVX DPTR,A;设置字位口显示位MOV DPTR,#DATACOMOV A,R1MOVC A,A+DPTR;取显示代码MOV DPTR,#0FF22HMOVX DPTR,A;显示字型DISP2:DJNZ R3,DISP2;延时DEC R1;显示缓冲区指针减1CLR CMOV A,R2RRC A;右移显示位1位MOV R2,AJNZ DISP1MOV A,#0FFH;关显示MOV DPTR,#0FF22HMOVX DPTR,ACLR 0D4H;恢复原来的工作寄存器组RETDATAC0:DB 0C0H,0F9H,0A4H,0B0H,99H,92HDB 82H,0F8H,80H,90H,88H,83H,0C6HDB 0A1H,86H,8EH,0FFH,0CH,89H,0DEH
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1