单片机程序分析题练习B2复习过程
- 格式:doc
- 大小:47.50 KB
- 文档页数:8
单片机补考试题B卷及答案As a person, we must have independent thoughts and personality.一、填空题(每题3分,共30分)1、8031内部有()个RAM、8751内部有4K()。
2、MCS-51的指令可分为几种不同的寻址方式。
如:MOV A,20H属于()寻址方式,MOVC A,@A+DPTR 属于()寻址方式,MOV C, bit 属于( ) 寻址方式。
3、堆栈地址由()内容确定,操作规律是“()进()出”。
4、DA指令是()指令,它只能紧跟在()指令后使用。
5、在单片机扩展时,()口和()口为地址线,()口为数据线。
6、利用8155可以扩展()个并行口,()个RAM单元。
7、若某8位D/A转换器的输出满刻度电压为+5V,则该D/A转换器的分辨率为()V。
8、假定累加器A的内容为30H,执行指令:1000H:MOVC A,@A+PC 后,把程存储()单元的内容送累加器A中。
9、假定(SP)=60H, (ACC)=30H,(B)=70H, 执行下列命令:PUSH ACCPUSH B后,SP的内容为(), 61H的单元的内容为()。
10、单片机串行通信时,若要发送数据,就必须将要发送的数据送至()单元,若要接收数据也要到该单元取数。
二、单项选择题(每小题3分,共30分)1、计算机能直接识别的语言是()。
A.汇编语言 B.自然语言 C.机器语言 D.硬件和软件2、开机复位后,CPU使用的是寄存器第一组,地址范围是()A、00H-10HB、00H-07HC、10H-1FHD、08H-0FH3、在单片机中,()是数据存储器,()是程序存储器。
A.ROM B.EPROM C.RAM D.EEPROM 4、单片机在与外部I/O口进行数据传送时,将使用()线。
A.ALE INT0 B.PSEN ALE C.WR RD ALE D.ALE INT15、区分片外程序存储器和数据存储器的最可靠方法是()。
单片机考试复习单片机是嵌入式系统中的关键组成部分,掌握单片机的原理和编程技巧对于学习和应用嵌入式系统有着重要的意义。
为了备考单片机考试,以下是一些复习的重点内容,帮助大家系统地进行复习。
1. 单片机基础知识1.1 单片机的概念和发展历程单片机是一种集成度很高的微型计算机系统,具有片上集成的特点。
从早期的8位单片机到现在的32位单片机,单片机的发展经历了几个重要的阶段。
1.2 单片机的工作原理单片机通过执行存储在其内部存储器中的指令,在控制下完成特定功能。
了解单片机的架构和工作原理是学习和理解单片机编程的基础。
2. 单片机编程基础2.1 汇编语言单片机的底层程序一般使用汇编语言进行编写。
掌握汇编语言的语法和指令集是了解单片机底层运行机制的关键。
2.2 C语言C语言虽然是高级语言,但是在单片机编程中也得到了广泛的应用。
掌握C语言在单片机编程中的基本语法和特点,能够更加高效地进行程序开发。
2.3 嵌入式编程技巧在单片机编程中,还需要掌握一些嵌入式编程技巧,如中断处理、时钟配置、IO口控制等。
这些技巧能够提高单片机程序的可靠性和性能。
3. 单片机外部设备接口3.1 数字输入输出口单片机常用的数字输入输出口是与外部设备进行信息交互的重要接口。
了解数字输入输出口的特点和编程方法,能够灵活地控制和读取外部设备的状态。
3.2 模拟输入输出口模拟输入输出口常用于与模拟信号进行交互。
掌握模拟输入输出口的工作原理和编程方法,能够实现对模拟信号的采集和处理。
3.3 串口通信串口通信是单片机与外部设备进行通信的一种常见方式。
了解串口通信的原理和常用协议,能够实现单片机与其他设备的数据交换。
4. 单片机应用案例4.1 LED显示控制LED显示控制是单片机最基础的应用之一,通过控制LED的亮灭状态可以实现各种显示效果。
了解LED显示控制的原理和编程方法,能够实现对LED的动态控制。
4.2 按键输入和响应按键输入和响应是单片机与外部设备交互的一种常见方式。
1.程序如下:MOV SP,#13HMOV 33H,#7FHMOV 44H,#0ABHPUSH 33HPUSH 44HPOP 33HPOP 44H程序执行后,(33H)=0ABh ,(44H)=7Fh2.下列各条指令其源操作数的寻址方式是什么?各条指令单独执行后,A中的结果是什么?设(60H)=35H,(A)=19H,(R0)=30H,(30H)=0FH。
(1)MOV A,#48H ;寻址方式:(A)= 48H(2)ADD A,60H ;寻址方式:(A)= 4DH(3)ANL A,@R0 ;寻址方式:(A)= 10H3.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能?MOV R1,#30H ;(R1)=30HMOV A,#64H ;(A)= 64HADD A,#47H ;(A)=ABH ,(CY)= 0 ,(AC)= 0DA A ;(A)=31H ,(CY)=1 ,(AC)=MOV @R1,A ;(R1)= 30H ,(30H)= 31H此程序段完成的功能4.设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)=0ORL A,#27HANL A,28HXCHD A,@R0CPL A5.设(A)=38H,(20H)=49H,PSW=00H,(B)=02H,填写以下中间结果。
SETB CADDC A, 20H (A)= 82H (CY)= 0 (AC)= 1RLC A (A)=04H (CY)=1 (P)= 1MUL AB (A)=08H (B)=00H (OV)=06.已知(R0)=20H, (20H ) =10H, (P0) =30H, (R2) =20H, 执行如下程序段后( 40H ) =15H MOV @R0 , #11H (20H)=11HMOV A , R2 A=20HADD A , 20H A=40HMOV PSW , #80HSUBB A , P0 A=10HXRL A , #45H A=15HMOV 40H , A (40H)=15H7. 已知( R0 )=20H, (20H )=36H, (21H) =17H, (36H) =34H, 执行过程如下:MOV A , @R0 A=36HMOV R0 , A R0=36HMOV A , @R0 A=34HADD A , 21H A=4BHORL A , #21H A=21HRL A A=42HMOV R2 , A R2=42HRET则执行结束(R0)=36H (R2)= 42H8.设在31H单元存有#23H,执行下面程序:MOV A, 31H A=23HANL A, #0FH A=03HMOV 41H, A (41H)=03HMOV A, 31H A=23HANL A, #0F0H A=20HSW AP A A=02HMOV 42H, A (42H)=02H则(41H)= 03H (42H)= 02H9.(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(40)=20HMOV A,@R0 A=7FHMOV @R0,40H (4BH)=20HMOV 40H,A (40H)=7FH;MOV R0,#35H R0=35H问执行程序后,R0=35H A= 7FH 4BH= 20H 40H= 7FH10.若PSW=00, 执行下列程序后,PSW的CY,AC,OV,P各位状态如何? MOV A,#0FBH A=FBHMOV PSW,#10HADD A,#7FH A=7AH CY=1; AC=1;OV=1; P=1;MOVA,20HA=O1HINCAA=02HMOVDPTR,#2000HDPRT=2000HMOVCA,@A+DPTRA=5BHCPLAA=A3HMOV 30H,A (30H) =A3HSJMP $END执行程序后,(30H)= A3H12.分析程序段:CLRC清零cy指令MOVA,#91H给A立即数SUBBA,61H;A寄存器与地址(61h)的值相减ADDA,61H;A寄存器与地址(61h)的值相加DAA;BDC码调整指令MOV62H,A把累加器A的值送给地址寄存器62h(1)程序执行何种操作?对91H做BDC码调整;(2)若已知初值:(60H)=24H,(61H)=72H,则运行后,(62H)= 91H 。
习题二答案1. 单片机机应用系统软、硬件开发工具有哪些?答:单片机机应用系统软、硬件开发工具包括在线仿真器、编程器、仿真插头等部件,软件包括汇编和调试程序等。
2. 单片机仿真器的作用是什么答:仿真器通过串行口与PC机相连,用户可以利用仿真软件在PC机上编辑、修改源程序,然后通过汇编软件生成目标代码,传送给仿真器,由仿真器通过仿真插头传送到用户系统,之后就可以进行调试了。
通常单片机仿真软件都集成有调试功能,能够设置/清除断点、单步运行、连续运行、启动/停止控制、查看系统资源(如程序存储器、数据存储器、各种寄存器、I/O端口等)的状态等。
调试用户系统时,必须把仿真插头插入用户系统的单片机插座上。
现在有不少单片机具有JTAG接口,可以不再使用仿真插座,直接对单片机在线进行系统仿真调试。
3. 解释ISP和IAP的含义,具有ISP和IAP功能的单片机有什么好处?答:在系统编程(In-System Programming,简称ISP)和在应用编程(In-Application Programming,简称IAP)。
ISP是指用户通过PC机的软件,把已编译好的用户代码通过串行口直接写入用户系统的单片机,不管单片机片内的存储器是空白的还是被编程过,都可以用ISP方式擦除或再编程,不需要从电路板上取下器件。
IAP指MCU可以在系统中获取新代码并对自己重新编程,即可用程序来改变程序。
IAP的实现相对要复杂一些,在实现IAP 功能时,单片机内部一定要有两块存储区,一块被称为BOOT区,另外一块被称为存储区。
单片机上电运行在BOOT区,如果外部改写程序的条件满足,则对存储区的程序进行改写操作。
如果外部改写程序的条件不满足,程序指针跳到存储区,开始执行放在存储区的程序,这样便实现了IAP功能。
4. 在Proteus ISIS环境中使用AT89C52设计八个发光二极管两个一组点亮流动的电路,并编写C51程序,然后在μVision3环境下编译调试。
复习题纲复习题纲一、一、 填空题;填空题;1、微型计算机与外部设备之间的信息传送方式通常可以分为 同步传输、同步传输、 异步传输、异步传输、中断传输中断传输 、DMA 传输传输 等四种方式。
等四种方式。
2、MCS-5单片机有五个中断源,分别是:INTO 非 、定时器T0、INT1非 、 定时器T1 和 串行口中断串行口中断 。
3、 MCS-5单片机五个中断源的入口地址分别是:0003h 、 000bh 、0013h 、001bh 和0023h 。
4、按数据传送方向,串行通信可分为:半双工、全双工 和 单工单工 。
4、单片机中使用的串行通信都是:全双工串行5、虽然MCS-51串行口的发送和接收缓冲寄存器都名为SBUF ,但发送和接收可通过指令MOV SBUF,A 、MOV A , SBUF 来区别(以累加器为例)。
6、P3.0第二功能线为串行端口的第二功能线为串行端口的 接收RXD 端;P3.1的第二功能线为串行端口的发送TXD 端。
端。
7、8051串行端口的RXD 是第是第 P3.0引脚;串行端口的TXD 是第是第 P3.1引脚。
引脚。
8、在MCS-5单片机扩展系统中,高8位地址由P2 端口提供,低8位地址由位地址由 P0端口提供。
端口提供。
9、8155片内具有256 字节的静态RAM ,2个 8位的并行I/O 端口和1个 6 位的并行I/O 端口,1个 14位的减法计数器/定时器,以及定时器,以及 1 个地址锁存器。
个地址锁存器。
10、P0端口既可以传递端口既可以传递 输入/输出数据输出数据 又可以传递外部存储器低8位地址位地址 ,是分时复用的。
,是分时复用的。
10.单片机复位后,程序的入口地址是0000b 11、子程序必须使用RET 返回指令返回主程序,而中断服务程序必须使用 RETI 指令返回主程序。
指令返回主程序。
12、访问接口采用MOVX 指令,而且在命令中只能使用间接寻址 传送数据。
单片机课后重要习题答案单片机课后重要习题答案在学习单片机的过程中,课后习题是巩固知识、提高编程能力的重要环节。
下面是一些常见的单片机课后习题及其答案,供大家参考。
一、基础题1. 请用C语言编写一个程序,实现将一个整数的二进制表示输出到LED灯上。
答案:```c#include <reg52.h>void main(){int num = 10; // 待转换的整数int i;while (1){for (i = 0; i < 8; i++){P1 = num & (1 << i) ? 0xFF : 0x00; // 判断第i位是否为1,是则点亮LED灯delay(); // 延时函数}}```2. 请编写一个程序,实现将一个8位二进制数的奇偶校验位计算出来,并输出到P1口。
答案:```c#include <reg52.h>void main(){unsigned char num = 0b10011010; // 待计算的8位二进制数int count = 0;int i;for (i = 0; i < 8; i++){if (num & (1 << i)){count++;}}P1 = count % 2 ? 0xFF : 0x00; // 奇数个1则输出高电平,偶数个1则输出低电平}二、进阶题1. 请编写一个程序,实现一个简单的计算器功能,能够进行加、减、乘、除四则运算,并将结果输出到数码管上。
答案:```c#include <reg52.h>void main(){unsigned char num1 = 10; // 第一个操作数unsigned char num2 = 5; // 第二个操作数unsigned char operator = '+'; // 运算符,可修改为其他运算符unsigned char result;switch (operator){case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;case '*':result = num1 * num2;break;case '/':result = num1 / num2;break;default:result = 0;break;}// 将结果输出到数码管上P1 = result;}```2. 请编写一个程序,实现一个简单的密码验证功能,用户输入密码后,若密码正确,则点亮一个LED灯,否则不点亮。
一、读程序题(每小题4分,共20分)1.执行下列程序段后,(P1)=_______。
MOV P1,#5DHCPL P1.1CPL P1.2CLR P1.6SETB P1.72.执行下列程序段后,(A)=_______,(CY)=____。
MOV A,#C5HRL A3.下列程序段执行后,(R0)=_______,(7EH)=____,(7FH)=_______。
MOV R0,#7EHMOV 7EH,#0FFHMOV 7FH,#40H1NC @R01NC R01NC @R04.已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN双字节指令后,(PC)=___,(61H)=_______,(62H)= ____。
5.阅读下列程序,说明其功能。
MOV R0,#dataMOV A,@R0RL AMOV R1,ARL ARL AADD A,R1MOV @R0,ARET读程序题(每小题4分,共20分)1.(P1)=9BH2.(A)=8BH(或10001011B)(CY)=不影响3.(R0)=7FH(7EH)=00H(7FH)=41H4.(PC)=0345H(61H)=25H(62H)=01H5.(data)×10操作二、使用简单指令序列完成以下操作(12分)1.请将片外RAM20H—25H单元清零2.请将ROM3000H单元内容送R7使用简单指令序列完成以下操作(12分,每小题6分)1.MOV R0,#20HCLR ALOOP:MOVX @R0,AINC R0DJNZ R7,LOOP2.MOV DPTR,#3000HCLR AMOVC A,@A+DPTRMOV R7,A三、使用简单指令序列完成以下操作(12分)1、将20H单元清零MOV 20H,#00H 或CLR AMOV 20H, A2、将片外RAM2000H中的低字节与片内20H中的低字节交换。
单片机应用技术b2第2章单片机开发系统一个单片机应用系统从提出任务到正式投入运行的过程,称为单片机的开发。
开发过程所用的设备称为开发工具。
虽然单片机造价低、功能强、简单易学、使用方便,可用来组成各种不同规模的应用系统,但由于它的硬件和软件的支持能力有限,自身无调试能力,因此必须配备一定的研制工具,借助于开发工具来排除应用系统(或称目标系统)样机中的硬件故障,生成目标程序,并排除程序错误。
当目标系统调试成功以后,还需要用开发工具把目标程序固化到单片机内部或外部EPROM芯片中。
本章简述单片机应用系统设计制造中所必需的开发工具以及用它们调试单片机应用系统的基本方法。
实训2 单片机开发系统及使用1.实训目的(1) 了解单片机开发系统的基本组成及功能。
(2) 通过最简应用系统实例了解单片机开发系统的使用方法。
2.实训设备与器件实训设备:单片机开发系统。
实训电路:参见附录原理图。
3.实训步骤及要求1)系统连接参照图2.1将单片机开发系统、实验板及计算机连接起来。
注意单片机开发系统的电源不要接反。
2)输入、编辑汇编语言源程序利用DOS提供的EDIT或其它文本编辑软件QE、SK等,输入下面程序。
注意,分号后面的文字为说明文字,输入时可以省略。
保存文件时,程序名后缀应为ASM,例如:LED1.ASM。
程序;说明ORG 0000H ;程序从地址0000H开始存放START: MOV P1,#00H ;把立即数00H 送P1口,点亮所有发光二极管ACALL DELAY ;延时MOV P1,#0FFH ;灭掉所有发光二极管ACALL DELAY ;延时AJMP START ;重复闪动DELAY: MOV R3,#0FFH ;延时子程序开始DEL2: MOV R4,#0FFHDEL1: NOPDJNZ R4,DEL1DJNZ R3,DEL2RET ;子程序返回END ;汇编程序结束3)启动单片机开发系统调试软件使用不同的单片机开发系统,调试软件也有所不同。
第四章中断类P104 例4-1发0均为下降沿触发,当外部中断和外部中断假设外部中断01端口的电P11发生时,生时,P0端口的电平反向,当外部中断平反向。
#include<reg51.h>void IS0(void) interrupt 0{ P0=~P0;} //P0端口反向void IS1(void) interrupt 2P1=~P1;} //P1{ 端口反向void main( )P1=0xFF; {P0=0x00;IT0=1; IT1=1;EX0=1; EX1=1; EA=1;while(1);}】外部中断示例4-9【例然后外部输入一脉冲串,D1,首先通过在本实例中,P1.7口点亮发光二极管则发光二极管D1亮、暗交替。
#include<reg51.h>P1_7=P1^7;sbit0 //外部中断void interrupt0( ) interrupt 0 using 2P1_7=!P1_7;} {main( )void//{开中断EA=1;脉冲触发//外部中断0 IT0=1;EX0=1; //外部中断0P1_7=0;do{ }while(1);}3个脉冲,则灯亮、暗交替一次,可如下面编程:如果有#include<reg51.h> P17=P1^7; Sbitchar i=3; unsignedmain( ) voidEX0=1; IT0=1; EA=1; {P17=0;} do{ }while(1);void interrupt0( ) interrupt 0i=i-1; {if(i==0)P17=!P17; i=3;{}}S1口,两开关S0、LED【例4-10】如图4-18所示,8只阴极接至单片机P0S0LED 状态。
按下P3.2分别接至单片机引脚()和P3.3()。
编写程序控制S1后,变为闪烁状态。
后,点亮8只LED;按下#include<reg51.h>P32=P3^2;sbit定义延时子函数// void delay(unsigned int d)while(--d>0); {}main( ) voidLED//熄灭P0=0xFF; {IT1=1; IT0=1; 脉冲触发方式1、0外中断//EA=1; EX0=1; EX1=1; //开中断for( ; ; ) //延时等待中断发生{;}}INT0_ISR( ) interrupt 0//外中断0中断服务函数voidP0=0x00;{}1void INT1_ISR( ) interrupt 2//外中断中断服务函数while(P32!=0)//如果有外部中断0,则退出{{delay(5000);P0=0x00;delay(5000);P0=0xFF;}}定时类【例4-16】设单片机的fosc=12MHz,要求在P1.0上产生周期为2ms的方波。
程序分析及编程1.设(A)=04H,(CY)=1, 写出下列各条指令的结果。
RL A; (A)= 08HRR A; (A)= 02HRLC A; (A)= 09HRRC A; (A)= 82H2设(A)=7AH,(R0)=30H,(30H)=A5H,(CY)=1, 写出下列各条指令的结果。
MOV A ,R0 (A)=30H (R0)=30HXCH A, R0 (A)=30H (R0)=30HXCHD A,@R0 (A)=A5H (R0)=30H (30H)=30HADD A,#30H (A)=D5H (CY)=1ADDC A,30H (A)=06H (CY)=1SUBB A,#30H (A)=D5H (CY)=14.已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)=FFH。
下述程序执行后:请问:A=(),SP=(),(51H)=(),(52H)=(),PC=()。
POP DPHPOP DPLMOV DPTR,#4000HRL AMOV B,AMOVC A,@A+DPTRPUSH AMOV A,BINC AMOVC A,@A+DPTRPUSH ARETORG4000HDB10H,80H,30H,50H,30H,50H答:(A)=50H , (SP)=50H , (51H)=30H , (52H)=50H , (PC)=5030H5.假定A=83H,(R0)=17H,(17H)=34H,执行以下指令后,A的内容为()。
:ANL A,#17HORL17H,AXRL A,@R0CPL A答:0CBH6.如果DPTR=507BH,SP=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后则:DPH=(),DPL=(),SP=():POP DPHPOP DPLPOP SP答:DPH=3CH , DPL=5FH , SP=4FH7.假定,SP=60H,A=30H,B=70H,执行下列指令后,SP的内容为(),61H单元的内容为(),62H单元的内容为()。
单片机复习题带答案版一、简答题1、何谓单片机?单片机与一般微型计算机相比,具有哪些特点?2、简述8051单片机的内部基本结构。
3、程序状态字PSW中主要包含了哪些状态信息?4、什么是时钟周期、机器周期、指令周期?8051CPU机器周期与时钟周期是什么关系?5、若震荡频率f osc=12MHz,则震荡周期、状态周期、机器周期分别为多少?6、如何区别一条访问数据存储器的指令是访问片RAM还是访问片外RAM?7、8051的存储器由哪几部分组成?片内RAM分为哪几个性质和用途不同的区域?8、在8051单片机中,什么是特殊功能寄存器?特殊功能寄存器与其它片内RAM单元有什么区别?9、简述堆栈工作过程和SP的作用。
10、EA引脚有何功能?11、51系列程序存储器的编址规律是怎样的?如何知道单片机执行指令时,是从片内ROM中取指令,还是从片外ROM中取指令?12、访问位地址20H和字节地址20H的区别是什么?13、按照同一优先级中的优先权排队顺序列出MCS-51的中断源和相应的中断入口地址14、MCS-51定时器/计数器作定时器以及计数器使用时,计数脉冲由谁提供?这与什么因素有关?15、已知振荡器振荡频率为12MHz,要求定时器/计数器0产生10ms的定时,试编写初始化程序首先计算TH0、TL0的初值,TH0=D8H,TL0=F0H;其次确定方式寄存器TMOD的值为01H;最后写出初始化程序:START:MOV TL0,#0F0HMOV TH0,#0D8HMOV TMOD,#01HSETB TR016、简述定时器/计数器0、1的4中工作方式的特点。
17、综述P0、P1、P2、P3口各有哪几个功能?18、为何说P1口是“准双向接口”?19、波特率表示什么?8051单片机的串口在4种工作方式下的波特率分别如何确定?20、如异步通信,每个字符由11位组成,串行口每秒钟传送250个字符,则波特率为多少?答:波特率是每秒钟传送的二进制数的位数,所以波特率为11×250=275021、设串行异步通信的传送速率为2400波特,传送的是带奇偶校验的ASCII码字符,每个字符包含10位(1个起始位,7个数据位,1个奇偶校验位,1个停止符),问每秒钟最多可传送多少个字符?答:2400/10=24022、串行数据传送的主要优点和用途是什么?23、MCS-51有几个中断优先级?如何设定?24、MCS-51单片机CPU响应中断后,由硬件自动执行哪些操作?25、MCS-51指令系统主要有哪几种寻址方式?请举例说明。
单片机练习题第二章答案单片机练习题第二章答案单片机是一种非常重要的电子器件,广泛应用于各个领域。
为了更好地掌握单片机的知识和技能,我们需要进行一些练习题的训练。
本文将为大家提供单片机练习题第二章的答案,希望能对大家的学习有所帮助。
第一题:请编写一段代码,实现将一个8位二进制数的高4位和低4位交换的功能。
答案:以下是实现该功能的代码:```c#include <reg52.h>void main(){unsigned char num = 0b11001100; // 待交换的二进制数unsigned char high = 0; // 高4位unsigned char low = 0; // 低4位high = (num & 0xF0) >> 4; // 取出高4位low = (num & 0x0F) << 4; // 取出低4位num = high | low; // 交换高低4位while (1){// 循环执行其他操作}}```第二题:请编写一段代码,实现将一个8位二进制数的第2位和第6位取反的功能。
答案:以下是实现该功能的代码:```c#include <reg52.h>void main(){unsigned char num = 0b11001100; // 待取反的二进制数num ^= (1 << 2); // 第2位取反num ^= (1 << 6); // 第6位取反while (1){// 循环执行其他操作}}```第三题:请编写一段代码,实现将一个8位二进制数的第3位和第7位置1的功能。
答案:以下是实现该功能的代码:```c#include <reg52.h>void main(){unsigned char num = 0b11001100; // 待操作的二进制数num |= (1 << 3); // 第3位置1num |= (1 << 7); // 第7位置1while (1){// 循环执行其他操作}}```通过以上三个练习题的答案,我们可以看到单片机的位操作非常灵活,可以实现各种功能。
单⽚机原理第2章习题解答第2章思考题及习题2参考答案⼀、填空1. 在AT89S52单⽚机中,如果采⽤6MHz晶振,⼀个机器周期为。
答:2µs2. AT89S52单⽚机的机器周期等于个时钟振荡周期。
答:123. 内部RAM中,位地址为40H、88H的位,该位所在字节的字节地址分别为和。
答:28H,88H4. ⽚内字节地址为2AH单元最低位的位地址是;⽚内字节地址为A8H 单元的最低位的位地址为。
答:50H,A8H5. 若A中的内容为63H,那么,P标志位的值为。
答:06. AT89S52单⽚机复位后,R4所对应的存储单元的地址为,因上电时PSW= 。
这时当前的⼯作寄存器区是组⼯作寄存器区。
答:04H,00H,0。
7. 内部RAM中,可作为⼯作寄存器区的单元地址为 H~ H。
答:00H,1FH8. 通过堆栈操作实现⼦程序调⽤时,⾸先要把的内容⼊栈,以进⾏断点保护。
调⽤⼦程序返回指令时,再进⾏出栈保护,把保护的断点送回到,先弹出的是原来中的内容。
答:PC, PC,PCH9. AT89S52单⽚机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为AT89S52单⽚机的PC是16位的,因此其寻址的范围为 KB。
答:6410. AT89S52单⽚机复位时,P0~P3⼝的各引脚为电平。
答:⾼11. AT89S52单⽚机使⽤⽚外振荡器作为时钟信号时,引脚XTAL1接,引脚XTAL2的接法是。
答:⽚外振荡器的输出信号,悬空12. AT89S52单⽚机复位时,堆栈指针SP中的内容为,程序指针PC 中的内容为。
答:07H,0000H⼆、单选1. 程序在运⾏中,当前PC的值是。
A.当前正在执⾏指令的前⼀条指令的地址 B.当前正在执⾏指令的地址。
C.当前正在执⾏指令的下⼀条指令的⾸地址 D.控制器中指令寄存器的地址。
答:C2. 判断下列哪⼀种说法是正确的?A.PC是⼀个可寻址的寄存器 B.单⽚机的主频越⾼,其运算速度越快。
1.程序如下:MOV SP,#13HMOV 33H,#7FHMOV 44H,#0ABHPUSH 33HPUSH 44HPOP 33HPOP 44H程序执行后,(33H)=0ABh ,(44H)=7Fh2.下列各条指令其源操作数的寻址方式是什么?各条指令单独执行后,A中的结果是什么?设(60H)=35H,(A)=19H,(R0)=30H,(30H)=0FH。
(1)MOV A,#48H ;寻址方式:(A)= 48H(2)ADD A,60H ;寻址方式:(A)= 4DH(3)ANL A,@R0 ;寻址方式:(A)= 10H3.阅读下列程序段,写出每条指令执行后的结果,并说明此程序段完成什么功能?MOV R1,#30H ;(R1)=30HMOV A,#64H ;(A)= 64HADD A,#47H ;(A)=ABH ,(CY)= 0 ,(AC)= 0DA A ;(A)=31H ,(CY)=1 ,(AC)=MOV @R1,A ;(R1)= 30H ,(30H)= 31H此程序段完成的功能4.设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)=0ORL A,#27HANL A,28HXCHD A,@R0CPL A5.设(A)=38H,(20H)=49H,PSW=00H,(B)=02H,填写以下中间结果。
SETB CADDC A, 20H (A)= 82H (CY)= 0 (AC)= 1RLC A (A)=04H (CY)=1 (P)= 1MUL AB (A)=08H (B)=00H (OV)=06.已知(R0)=20H, (20H ) =10H, (P0) =30H, (R2) =20H, 执行如下程序段后( 40H ) =15H MOV @R0 , #11H (20H)=11HMOV A , R2 A=20HADD A , 20H A=40HMOV PSW , #80HSUBB A , P0 A=10HXRL A , #45H A=15HMOV 40H , A (40H)=15H7. 已知( R0 )=20H, (20H )=36H, (21H) =17H, (36H) =34H, 执行过程如下:MOV A , @R0 A=36HMOV R0 , A R0=36HMOV A , @R0 A=34HADD A , 21H A=4BHORL A , #21H A=21HRL A A=42HMOV R2 , A R2=42HRET则执行结束(R0)=36H (R2)= 42H8.设在31H单元存有#23H,执行下面程序:MOV A, 31H A=23HANL A, #0FH A=03HMOV 41H, A (41H)=03HMOV A, 31H A=23HANL A, #0F0H A=20HSW AP A A=02HMOV 42H, A (42H)=02H则(41H)= 03H (42H)= 02H9.(R0)=4BH,(A)=84H,片内RAM(4BH)=7FH,(40)=20HMOV A,@R0 A=7FHMOV @R0,40H (4BH)=20HMOV 40H,A (40H)=7FH;MOV R0,#35H R0=35H问执行程序后,R0=35H A= 7FH 4BH= 20H 40H= 7FH10.若PSW=00, 执行下列程序后,PSW的CY,AC,OV,P各位状态如何? MOV A,#0FBH A=FBHMOV PSW,#10HADD A,#7FH A=7AH CY=1; AC=1;OV=1; P=1;MOVA,20HA=O1HINCAA=02HMOVDPTR,#2000HDPRT=2000HMOVCA,@A+DPTRA=5BHCPLAA=A3HMOV 30H,A (30H) =A3HSJMP $END执行程序后,(30H)= A3H12.分析程序段:CLRC清零cy指令MOVA,#91H给A立即数SUBBA,61H;A寄存器与地址(61h)的值相减ADDA,61H;A寄存器与地址(61h)的值相加DAA;BDC码调整指令MOV62H,A把累加器A的值送给地址寄存器62h(1)程序执行何种操作?对91H做BDC码调整;(2)若已知初值:(60H)=24H,(61H)=72H,则运行后,(62H)= 91H 。
13.设(R0)=7EH,DPTR=10FEH,片内RAM7EH和7FH两单元的内容分别是FFH和38H,请写出下列程序段的每条指令的执行结果。
INC@R0(7E)=00HINCR0R0=7FHINC@R0(7FH)=39HINCDPTRDPTR=10FFHINCDPTRDPTR=1100HINCDPTRDPTR=1101H14.设R0=20H,R1=25H,(20H)=80H,(21H)=90H,(22H)=A0H,(25H)=A0H,(26H)=6 FH,(27H)=76H,下列程序执行程序后,结果如何?CLR C C=0;MOV R2,#3 R2=3;LOOP: MOV A,@R0 A=80H A=90HADDC A,@R1 A=20HMOV @R0,A (20H)=20H;(21H)=00H; (22H)=16HINC R0 R0=21H;INC R1 R1=26HDJNZ R2,LOOPJNC NEXT1MOV @R0,#01H (23H)=01HSJMP $NEXT: DEC R0SJMP $(20H)=20H 、(21H)= 00H 、(22H)=16H 、(23H)= 01H 、CY=1A=16H 、R0=23H 、R1=27H 。
15.MOV DPTR,#2000H (DPTR)= 2000HMOV A,#80H (A)= 80HMOVX @DPTR,A (2000H)= 80HINC DPTR (DPTR)= 2001MOV A,#90H (A)= 90HMOVX @DPTR,A (2001H)= 90HMOV DPTR,#2000H (DPTR)= 2000HMOVX A,@DPTR (A)= 80HMOV B,A (B)=80HINC DPTR (DPTR)= 2001HMOVX A,@DPTR (A)= 90H16.若(10H)=0FFH,(11H)=00H,(12H)=0FFH,(13H)=00H,写出每一步指令运行结果MOV A,10H (A)= FFH ,ANL A,#01H (A)= 01H ,MOV A,11H (A)= 00H ,ORL A,#01H (A)= 01H ,MOV A,12H (A)= FFH ,XRL A,#01H (A)= FEH ,MOV A,13H (A)= 00H ,XRL A,#0AA (A)= AAH ,(10H)= FFH , (11H)= 00H , (12H)= FFH , (13H)= 00H17. 阅读程序并回答下列问题:X DATA 50HY DATA 51HORG 00HJMP STARTORG 100HSTART: MOV SP,#60HMOV X,#10 (50H)=10MOV Y,#10 (51H)=10LCALL SUBSUB: NOPINC X (50H)=11 X+10=20DEC Y (51H)=9 Y=0;MOV A,Y A=9JZ SUBRETLCALL SUBSUBRET: NOPRET计算X和Y的值是多少?(X)=20 ;(Y)=0 ;18. 设自变量为X,存放在ARE单元,应变量Y存放在BUF单元。
给程序标注注释,说明该段子程序的功能并写出该程序的函数关系式。
(7分)START:MOV DPTR,#AREMOVX A,@DPTRJZ SULJB ACC.7,NEG ;注释:如果A的值大于128跳转NEGMOV A,#02HSUL:MOV DPTR,#BUFMOVX @DPTR,A ;注释:把A的值传送给BUF地址中RETNEG:MOV A,#0FEHSJMP SUL如果X=0,Y=0;如果X<128,Y=02h;如果X>128,Y=FEH;19. 执行下列程序段后,(P1)=_9AH__。
MOV P1,#5DHCPL P1.1CPL P1.2CLR P1.6SETB P1.720. 执行下列程序段后,(A)=___8BH____,(C Y)=__0_。
MOV A,#C5HRL A21. 下列程序段执行后,(R0)=___7EH____,(7EH)=__41H__,(7FH)=___01H____。
MOV R0,#7EH R0=7EHMOV 7EH,#0FFH (7EH)=FFHMOV 7FH,#40H (7EH)=40H1NC @R0 (7EH)=41H1NC R0 R0=7FH;1NC @R0 (7FH)=1;22. 已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALLSUBTRN双字节指令后,(PC)=___,(61H)=_______,(62H)= ____。
23. 阅读下列程序,说明其功能。
MOV R0,#dataMOV A,@R0RL AMOV R1,ARL ARL AADD A,R1MOV @R0,ARET24. 程序填空1)数据块传送,将RAM从30H开始的连续32个单元的内容传递给片内RAM从60H开始的连续32个单元。
ORG 1000HMOV R7,_____MOV R0, #30HMOV R1,#60HLOOP:MOV A,@R0MOV _____,AINC R0INC R1DJNZ R7, _____SJMP $END2)RAM中40H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数,BCD 码的十位和个位放在累加器A中,百位放在R2中。
ORG 2200HMOV A,_____MOV B,#64HDIV ABMOV R2,AMOV A,_____XCH A,BDIV ABSWAP _____ORL A,BSJMP $END3)编程序将片内40H-46H单元内容的高4位清零,保持低4位不变。
ORG 1000HMOV R7,#07HMOV R0,_____LOOP:MOV A,@R0ANL A,_____MOV @R0,AINC R0DJNZ R7,LOOPSJMP $END25. 程序如下2506H M5: MOV SP,#58H;2509HMOV 10H,#0FH;250CH MOV 11H,#0BH;250FH ACALL XHD;2511H MOV 20H,11H2514H M5A: SJMP M5AXHD: PUSH 10HPUSH 11HPOP 10HPOP 11HRET问:(1)执行POP 10H后堆栈内容?(2)执行M5A: SJMP M5A后,( SP )=?( 20H )=?26. 解读下列程序,然后填写有关寄存器内容(1)MOV R1,#48HMOV 48H,#51HCJNE @R1,#51H,00HJNC NEXT1MOV A,#0FFHSJMP NEXT2NEXT: MOV A,#0AAHNEXT2: SJMP NEXT2累加器A=( )(2) MOV A,#0FBHMOV PSW,#10HADD A,#7FH若PSW=00,当执行完上述程序段后,将PSW各位状态填入下表:PSW27.改正下列指令MOV @R3,AMOV DPTR,AINC @R3 IDEC DPTRADDC #30H,A28. 设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何?(8分)MOV R0,#30HMOV A,@R0MOV R1,AMOV B,R1MOV @R1,P1MOV A,P1MOV 40H,#20HMOV 30H,40H。