51单片机的16位和8位的运算不准

合集下载

单片机教程11:单片机算术运算指令

单片机教程11:单片机算术运算指令

单⽚机教程11:单⽚机算术运算指令不带进位位的单⽚机加法指令ADD A,#DATA ;例:ADD A,#10HADD A,direct ;例:ADD A,10HADD A,Rn ;例:ADD A,R7ADD A,@Ri ;例:ADD A,@R0⽤途:将A中的值与其后⾯的值相加,最终结果否是回到A中。

例:MOV A,#30HADD A,#10H则执⾏完本条指令后,A中的值为40H。

下⾯的题⽬⾃⾏练习MOV 34H,#10HMOV R0,#13HMOV A,34HADD A,R0MOV R1,#34HADD A,@R1带进位位的加法指令ADDC A,RnADDC A,directADDC A,@RiADDC A,#data⽤途:将A中的值和其后⾯的值相加,并且加上进位位C中的值。

说明:由于51单⽚机是⼀种8位机,所以只能做8位的数学运算,但8位运算的范围只有0-255,这在实际⼯作中是不够的,因此就要进⾏扩展,⼀般是将2个8位的数学运算合起来,成为⼀个16位的运算,这样,能表达的数的范围就能达到0-65535。

如何合并呢?其实很简单,让我们看⼀个10进制数的例程:66+78。

这两个数相加,我们根本不在意这的过程,但事实上我们是这样做的:先做6+8(低位),然后再做6+7,这是⾼位。

做了两次加法,只是我们做的时候并没有刻意分成两次加法来做罢了,或者说我们并没有意识到我们做了两次加法。

之所以要分成两次来做,是因为这两个数超过了⼀位数所能表达的范置(0-9)。

在做低位时产⽣了进位,我们做的时候是在适当的位置点⼀下,然后在做⾼位加法是将这⼀点加进去。

那么计算机中做16位加法时同样如此,先做低8位的,如果两数相加产⽣了进位,也要“点⼀下”做个标记,这个标记就是进位位C,在PSW中。

在进⾏⾼位加法是将这个C加进去。

例:1067H+10A0H,先做67H+A0H=107H,⽽107H显然超过了0FFH,因此最终保存在A 中的是7,⽽1则到了PSW中的CY位了,换⾔之,CY就相当于是100H。

MCS-51指令系统

MCS-51指令系统

❖ 目的操作数寻址方式(3种):
直接寻址、寄存器寻址、寄存器间接寻址
除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响
标志位。2022/2/15
16
3.3.1 十六位数的传递指令(1条)
MOV DPTR,#data16
8051是一种8位机,这是唯一的一条16位立即数传递指 令。功能:将一个16位的立即数送入DPTR中去。其中 高8位送入DPH,低8位送入DPL。
2022/2/15
2
常用符号 Rn:工作寄存器中的寄存器R0、R1…R7之一,
Ri:工作寄存器中的寄存器R0或R1
#data:8位立即数
#data16:16位立即数 direct:片内RAM或SFR的地址(8位)
@间接寻址寄存器
Bit:片内RAM或SFR的位地址 addr11:11位目的地址
addr16:16位目的地址
者内容相加,结果作为操作数的地址。
常用于查表操作。 ❖ MCS-51
操作数在程 序存储器中
MOVC A, @A+DPTR ;(A+DPTR) →A
MOVC A, @A+PC ; PC+1 →PC,(A+PC)→A
2022/2/15
10
如:MOVC A,@A+DPTR 设DPTR=2000H,A=E0H
常用于跳转指令。 如: JC 23H 若C=0,不跳转; C=1,跳转.
2022/2/15
12
如:JC 23
程序存储区
1000H 40 1001H 23 1002H 30
当前PC …

1024H 47 1025H 45
指令代码
23H

单片机试卷及答案(1)

单片机试卷及答案(1)

2013A卷一、填空题(每空1分,共20分)1、+1000001的反码是。

十进制数-4的8位二进制补码是。

2、计算机所能执行的指令的集合称为。

指令的编码规则称为,一般由和操作数两部分组成。

3、CPU一次可以处理的二进制数的位数称为CPU的。

4、当EA为电平时,CPU总是从外部存储器中去指令。

5、89C52单片机有6个中断源,其中内部中断源有个,外部中断源有个。

6、汇编指令中,对程序存储器的访问用指令来访问,外部RAM用指令来访问。

7、C51的数据类型sfr占个字节,C51中整型变量占个字节。

8、指令MOV 20H,#20H中,源操作数的寻址方式是,目的操作数的寻址方式是。

9、定时器T1方式2的8位常数重装初值存放于寄存器中。

定时器T0方式0,寄存器用于存放计数初值的低5位。

10、多机通信中,主机的SM2= 。

11、EPROM存储器27C256内部容量是32K字节,若不考虑片选信号,则对其内部全部存储单元进行寻址共需根地址线。

12、波特率倍增位位于特殊功能寄存器中。

13、8155A内部具有1个位减法定时器/计数器。

二、单项选择题(共20题,每题1分,共20分)1、单片机的应用程序一般存放于()中A、RAMB、ROMC、寄存器D、CPU2、定时器0工作于计数方式,外加计数脉冲信号应接到()引脚。

A、P3.2B、P3.3C、P3.4D、P3.53、MCS51单片机在同一优先级的中断源同时申请中断时,CPU首先响应()。

A、外部中断0B、外部中断1C、定时器0D、定时器14、ADC0809是()AD的转换器件A、4通道8位B、8通道8位C、4通道12位D、8通道12位5、执行中断返回指令后,从堆栈弹出地址送给()A、AB、RiC、PCD、DPTR6、串行通信中,发送和接收寄存器是()A、TMODB、SBUFC、SCOND、DPTR7、要使MCS-51能响应外部中断1和定时器T0中断,则中断允许寄存器IE的内容应该是()A、98HB、86HC、22HD、A2H8、要将P1口高4位清0,低4位不变,应使用指令()A、ORL P1,#0FHB、ORL P1,#F0HC、ANL P1,#F0HD、ANL P1,#0FH9、当选中第1工作寄存器区时,工作寄存器R1的地址是。

单片机原理及应用作业答案

单片机原理及应用作业答案

作业答案0-1绪论1.单片机是把组成微型计算机的各功能部件即(微处理器(CPU))、(存储器(ROM 和RAM))、(总线)、(定时器/计数器)、(输入/输出接口(I/O口))及(中断系统)等部件集成在一块芯片上的微型计算机。

2.什么叫单片机?其主要特点有哪些?解:将微处理器(CPU)、存储器(存放程序或数据的ROM和RAM)、总线、定时器/计数器、输入/输出接口(I/O口)、中断系统和其他多种功能器件集成在一块芯片上的微型计机,称为单片微型计算机,简称单片机。

单片机的特点:可靠性高、便于扩展、控制功能强、具有丰富的控制指令、低电压、低功耗、片内存储容量较小、集成度高、体积小、性价比高、应用广泛、易于产品化等。

第1章MCS-51单片机的结构与原理15. MCS-51系列单片机的引脚中有多少根I/O线?它们与单片机对外的地址总线和数据总线之间有什么关系?其地址总线和数据总线各有多少位?对外可寻址的地址空间有多大?解:MCS-51系列单片机有4个I/O端口,每个端口都是8位双向口,共占32根引脚。

每个端口都包括一个锁存器(即专用寄存器P0~P3)、一个输入驱动器和输入缓冲器。

通常把4个端口称为P0~P3。

在无片外扩展的存储器的系统中,这4个端口的每一位都可以作为双向通用I/O端口使用。

在具有片外扩展存储器的系统中,P2口作为高8位地址线,P0口分时作为低8位地址线和双向数据总线。

MCS-51系列单片机数据总线为8位,地址总线为18位,对外可寻址空间为64KB。

25. 开机复位后,CPU使用的是哪组工作寄存器(R0-R n)?它们的地址是什么?CPU如何确定和改变当前工作寄存器组(R0-R n)?解:开机复位后,CPU使用的是第0组工作寄存器。

它们的地址是00H-07H。

CPU通过对程序状态字PSW中RS1和RS0的设置来确定和改变当前工作寄存器组。

27. MCS-51单片机的时钟周期、机器周期、指令周期是如何定义的?当主频为12MHz的时候,一个机器周期是多长时间?执行一条最长的指令需要多长时间?解:时钟周期又称为振荡周期,由单片机内部振荡电路OSC产生,定义为OSC时钟频率的倒数。

51单片机内部时钟误差

51单片机内部时钟误差

51单片机内部时钟误差摘要:I.引言- 介绍51 单片机内部时钟误差的概念II.51 单片机内部时钟误差的原因- 晶振频率不准确- 机器周期占用III.51 单片机内部时钟误差的影响- 计时不准确- 影响系统运行IV.解决51 单片机内部时钟误差的方法- 采用高精度晶振方案- 动态同步修正方案V.结论- 总结解决51 单片机内部时钟误差的方法正文:I.引言51 单片机内部时钟误差是指在单片机内部运行时,由于各种原因导致其内部时钟与实际时间存在偏差。

这种误差对于一些对时间精度要求较高的应用而言,可能会造成系统运行不稳定或计时不准确。

本文将针对51 单片机内部时钟误差的原因及其解决方法进行探讨。

II.51 单片机内部时钟误差的原因51 单片机内部时钟误差的主要原因是晶振频率不准确和机器周期占用。

1.晶振频率不准确:51 单片机的内部时钟是由外部晶振提供的,如果晶振的频率不准确,那么单片机内部时钟的计时准确性就无法得到保证。

2.机器周期占用:在51 单片机内部,从定时器/计数器溢出中断请求到执行中断需要占用一定的机器周期,这个机器周期数很难确定,从而导致了电子时钟计时的不准确。

III.51 单片机内部时钟误差的影响51 单片机内部时钟误差会对计时和系统运行产生影响。

由于计时不准确,可能会导致系统在特定时间无法正常运行,进而影响整个系统的稳定性。

此外,在一些对时间精度要求较高的应用中,如实时操作系统、定时器等,这种误差可能会导致系统功能失效。

IV.解决51 单片机内部时钟误差的方法针对51 单片机内部时钟误差,可以采用以下方法进行解决:1.采用高精度晶振方案:虽然采用高精度的晶振可以稍微提高电子钟计时的精确度,但是晶振并不是导致电子钟计时不准的主要因素,而且高精度的晶振价格较高,所以不必采用此方案。

2.动态同步修正方案:从程序入手,采用动态同步修正方法给定时,计数器赋初值。

具体方法是将定时,计数器低位(TLO)中的值和初始值相加,然后送入定时,计数器中。

单片机原理与应用习题

单片机原理与应用习题

单片机原理与应用习题习题11.填空:⑴20D=10100B=14H;⑵1100101B=101D=65H;⑶1F8H=111111000B=504D;⑷1个字节由8个二进制位组成,每个二进制位只有2种状态,可表示为0或1;⑸1K字节就是2的10次方字节,即1024个字节;1M字节就是2的20次方字节,约为1048567个字节。

2.在8位二进制中,+26、-26、-127、-1的补码(用十六进制表示)是多少?解:正数的补码等于原码,负数的补码等于它的原码除符号位不变,其余的各位求反加1。

[+26]原=000110101B=1AH,[+26]补=1AH[-26]原=100110101B,[-26]补=11100101B+1=11100110B=0E6H[-127]原=11111111B,[-127]补=10000000B+1=10000001B=81H[-1]原=10000001B,[-1]补=11111110B+1=11111111B=0FFH3.用十进制写出下列补码表示的数的真值:FEH、FBH、80H、11H、70H、7FH。

解:真值是指日常用“+”或“-”号表示的数。

机器数是指计算机中用编码表示的数,正数的符号以最高位为0表示,负数的符号以最高位为1表示。

根据补码求真值的一个通俗口诀是“正码不变,负码求补,补后勿忘添负号”。

①FEH=11111110B,其符号位为“1”,属负数,故其原码为10000001B+1=10000010B,即FEH真值为-2;②同理FBH属负数,其真值为-5;③80H的真值为-128;④11H的真值为+17;⑤70H的真值为+112;⑥7FH的真值为+127。

4.微型计算机主要由哪几部分组成?各部分有何功能?答:一台微型计算机由中央处理单元(CPU)、存储器、I/O接口及I/O设备等组成,相互之间通过三组总线(Bu):即地址总线AB、数据总线DB和控制总线CB来连接。

谈谈51单片机的指令字节数

谈谈51单片机的指令字节数
CLR C
CALL BSUB
MOV 40H, A
.
.
.
A, #9AH
SUBB A, @R0
ADD A, @R1
DA A
INC R0
INC R1
程序分析
50ms延时子程序:
DEL:MOV R7,#200 ①
DEL1:MOV R6,#125 ②
DEL2:DJNZ R6,DEL2 ③
DJNZ R7,DEL1 ④
RET ⑤
1+(1*200)+(2*125*200)+(2*200)+2
=(2*125+3)*200+3 ⑥
2、8位立即数占用一个字节,16位立即数占用两个字节。
3、8位操作数地址占用一个字节,16位操作数地址占用两个字节。
4、CPU内部的各种寄存器不占用指令字节,如A, B, R0, R1, DPTR等。
现在就可以判断51的指令占用的字节数了:
MCS-51 单片机的十进制调整指令 (DA A) 只能放在加法指令之后,它对减法不起作用。
BCD 码的减法,必须变换成加法进行,才能使用 DA A 指令进行十进制调整。
“补数”的问题。
15 分和正拨 45 分,效果是相同的。
60-15=45 求出 15 对 60 的补数 45。
(50H) + [100 - (60H)]
100,又等效写成 9AH,不信,你对它 DA A 试试,马上就是 100H,这就是 100 的 BCD码,

“减数求补”的问题,是 MCS-51 单片机的汇编语言中,特有的问题。
BCD 码相减,如果想要得到 BCD 码形式的结果,就应该进行十进制调整。

51单片机bit、sbin、sfr、sfr_16区别分析

51单片机bit、sbin、sfr、sfr_16区别分析

bit、sbit、sfr、sfr 16区别分析以及#ifndef的使用2009-11-12 09:081.bit和sbit都是C51扩展的变量类型。

bit和int char之类的差不多,只不过char=8位, bit=1位而已。

都是变量,编译器在编译过程中分配地址。

除非你指定,否则这个地址是随机的。

这个地址是整个可寻址空间,RAM+FLASH+扩展空间。

bit只有0和1两种值,意义有点像Windows下VC中的BOOL。

sbit是对应可位寻址空间的一个位,可位寻址区:20H~2FH。

一旦用了sbit xxx = REGE^6这样的定义,这个sbit量就确定地址了。

sbit大部分是用在寄存器中的,方便对寄存器的某位进行操作的。

2.bit位标量bit位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。

它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的True和False。

3.sfr特殊功能寄存器sfr也是一种扩充数据类型,点用一个内存单元,值域为0~255。

利用它可以访问51单片机内部的所有特殊功能寄存器。

如用sfr P1 = 0x90这一句定P1为P1端口在片内的寄存器,在后面的语句中我们用以用P1 = 255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。

sfr P1 = 0x90; //定义P1 I/O 口,其地址90Hsfr 关键定后面是一个要定义的名字,可任意选取,但要符合标识符的命名规则,名字最好有一定的含义如P1 口可以用P1 为名,这样程序会变的好读好多.等号后面必须是常数,不允许有带运算符的表达式,而且该常数必须在特殊功能寄存器的地址范围之内(80H-FFH),具体可查看附录中的相关表.sfr 是定义8 位的特殊功能寄存器而sfr16 则是用来定义16 位特殊功能寄存器,如8052 的T2 定时器,可以定义为:sfr16 T2 = 0xCC; //这里定义8052 定时器2,地址为T2L=CCH,T2H=CDH用sfr16 定义16 位特殊功能寄存器时,等号后面是它的低位地址,高位地址一定要位于物理低位地址之上.注意的是不能用于定时器0 和1 的定义.sbit 可定义可位寻址对象.如访问特殊功能寄存器中的某位.其实这样应用是经常要用的如要访问P1 口中的第2 个引脚P1.1.我们可以照以下的方法去定义: (1) sbit 位变量名=位地址sbit P1_1 = Ox91;这样是把位的绝对地址赋给位变量.同sfr 一样sbit 的位地址必须位于80H-FFH 之间.(2) sbit 位变量名=特殊功能寄存器名^位位置sft P1 = 0x90;sbit P1_1 = P1 ^ 1; //先定义一个特殊功能寄存器名再指定位变量名所在的位置,当可寻址位位于特殊功能寄存器中时可采用这种方法(3) sbit 位变量名=字节地址^位位置sbit P1_1 = 0x90 ^ 1;这种方法其实和2 是一样的,只是把特殊功能寄存器的位址直接用常数表示.在C51存储器类型中提供有一个bdata 的存储器类型,这个是指可位寻址的数据存储器,位于单片机的可位寻址区中,可以将要求可位录址的数据定义为bdata,如:unsigned char bdata ib; //在可位录址区定义ucsigned char 类型的变量ib int bdata ab[2]; //在可位寻址区定义数组ab[2],这些也称为可寻址位对象sbit ib7=ib^7 //用关键字sbit 定义位变量来独立访问可寻址位对象的其中一位sbit ab12=ab[1]^12;操作符"^"后面的位位置的最大值取决于指定的基址类型,char0-7,int0-15,long0-31.sfr 并标准C 语言的关键字,而是Keil 为能直接访问80C51 中的SFR 而提供了一个新的关键词,其用法是:sfrt 变量名=地址值。

MCS-51的定时计数器

MCS-51的定时计数器

第六章MCS-51的定时/计数器1.如果采用晶振的频率为3MHz,定时器/计数器工作方式0、1、2下,其最大的定时时间为多少?解答:因为机器周期,所以定时器/计数器工作方式0下,其最大定时时间为;同样可以求得方式1下的最大定时时间为262.144ms;方式2下的最大定时时间为1024ms。

2.定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关?答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。

定时时间与时钟频率和定时初值有关。

3.定时/计数器用作定时器时,对外界计数频率有何限制?答:由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。

4.采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。

定时1ms后,又转为计数方式,如此循环不止。

假定MCS-51单片机的晶体振荡器的频率为6MHz,请使用方式1实现,要求编写出程序。

解答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。

除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。

编写程序如下:ORG 0000HLJMP MAINORG 000BHLJMP IT0PMAIN: MOV TMOD,#06H ;定时器/计数器T0为计数方式2MOV TL0,#156 ;计数100个脉冲的初值赋值MOV TH0,#156SETB GATE ;打开计数门SETB TR0 ;启动T0,开始计数SETB ET0 ;允许T0中断SETB EA ;CPU开中断CLR F0 ;设置下一轮为定时方式的标志位WAIT: AJMP WAITIT0P: CLR EA ;关中断JB F0,COUNT ;F0=1,转计数方式设置MOV TMOD,#00H ;定时器/计数器T0为定时方式0MOV TH0,#0FEH ;定时1ms初值赋值MOV TL0,#0CHSETB EARETICOUNT: MOV TMOD,#06HMOV TL0,#156SETB EARETI5. 定时器/计数器的工作方式2有什么特点?适用于哪些应用场合?答:定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,比如波特率的产生。

单片机试卷及答案分析

单片机试卷及答案分析

A卷一、填空题(本题共20分,每空1分)1.8051单片机片片内有程序存储器_________字节, 片内有数据存储器________字节。

2.MCS-51单片机片内有个中断源,其中个外部中断源。

3.MCS-51单片机片内RAM中位寻址区是从地址到的一块存储区域。

4.MCS-51单片机片内DPTR寄存器是一个位寄存器。

5.DA指令的作用是 _____________。

6.MCS-51单片机片内有______个16位定时/计数器, 它们具有_________种工作方式。

7.ADC0809是__________通道8位______________________。

DAC0832是______位D/A转换器。

8.假定(SP)=60H,(ACC)=30H,(B)=70H,执行下列指令:PUSH ACCPUSH B后,SP的内容为 62H ____,61H单元的内容为 30H ___,62H单元的内容为 70H 。

9.MCS-51单片机工作寄存器组共分为 __组寄存器,每组有个单元。

10.为扩展存储器而构造系统总线,应以P0口的8位口线作为线,以P2口的口线作为。

二、单项选择题(本题共10分,每小题1分)1.下列运算对OV没有影响或不受OV影响的的运算是()。

(A)逻辑运算(B)加减运算(C)乘法运算(D)除法运算2.在寄存器间接寻址方式中,寄存器中存放的是()。

(A)操作数(B)操作数地址(C)转移地址(D)地址偏移量3.如在系统中只扩展一片2764,除应使用P0口的8条口线外,至少还应使用P2口的口线()(A)2条(B)3条(C)4条(D)5条4.寻址空间为外部程序存储器所用的指令是()。

(A)MOVX (B)MOV (C)MOVC (D)ADDC5.PC的值是()。

(A)当前指令前一条指令的首地址 (B)当前正在执行指令的首地址(C)下一条指令的首地址 (D)控制器中指令寄存器的地址 6.执行中断返回指令,从堆栈弹出地址送给()。

简述mcs-51单片机中定时器方式0、方式1和方式2的工作特点。

简述mcs-51单片机中定时器方式0、方式1和方式2的工作特点。

MCS-51单片机中定时器的方式0、方式1和方式2具有不同的工作特点。

方式0是一个13位的定时器/计数器,其使用了16位寄存器(TH0和TL0)中的13位,包括TL0的低5位和TH0的8位,而TL0的高3位并未使用。

方式1是一个16位的定时器/计数器,TH0和TL0对应的16位全部参与计数运算。

当TH0和TL0计数满溢出时,硬件会自动将TF0置位并申请中断,同时16位加1计数器会从0开始继续计数。

在定时工作方式下,定时时间t对应的初值为X=216–t×fosc/12。

在计数工作方式下,计数长度最大为216=65536(个外部脉冲)。

方式2的特点是初值只需设置一次,每次溢出后,初值会自动从TH0加载到TL0或从TH1加载到TL1,但计数范围比方式1小。

在方式2中,只有TL0用作8位计数器参与脉冲计数工作,TH0不参与计数,只用来保存初值。

以上信息仅供参考,建议咨询专业计算机技术人员或者查阅专业书籍了解更多详细信息。

51单片机内部时钟误差

51单片机内部时钟误差

51单片机内部时钟误差
摘要:
1.51单片机内部时钟工作原理
2.影响时钟精度的因素
3.解决时钟误差的方法
4.提高时钟精度的建议
正文:
一、51单片机内部时钟工作原理
51单片机内部时钟由高增益的反相放大器构成,反相放大器的输入端为XTAL1,输出端为XTAL2。

振荡电路和时钟电路以此为基础工作,然而,即使是同一颗晶振,由于制造工艺等原因,其频率并不完全精确,这就导致了内部时钟的误差。

二、影响时钟精度的因素
1.晶振频率的稳定性:即使是同一颗晶振,其频率也会因为制造工艺、使用环境等因素而不完全精确。

2.中断响应时间:中断响应需要时间,并且,响应的时间是不一样的。

因为51执行不同指令时,所需的时间不同,而响应中断前,必须执行完当前指令。

3.多个中断的优先级和响应顺序:如果程序中有多个中断,当正在执行另外一个中断时,不能及时响应,这种情况可以导致很大的误差。

三、解决时钟误差的方法
1.调整定时器初值:根据实际测量的时间误差,调整定时器的初值,使得定时器定时的时间更加准确。

2.优化中断处理程序:优化中断处理程序,减少中断响应的时间,提高中断响应的及时性。

四、提高时钟精度的建议
1.选择稳定性好的晶振:在选择晶振时,尽量选择稳定性好的晶振,以减少频率误差。

2.优化程序设计:优化程序设计,减少中断处理程序的复杂度,降低中断响应时间。

3.定期校准:定期对单片机时钟进行校准,以保证时钟的准确性。

精编新版《单片机与接口技术》完整题库158题(含参考答案)

精编新版《单片机与接口技术》完整题库158题(含参考答案)

2020年《单片机与接口技术》试题库158题(含参考答案)一、单选题1.单片机8051的XTAL1和XTAL2引脚是 D 引脚。

A.外接定时器B.外接串行口C.外接中断D.外接晶振2.MCS-51单片机CPU的主要组成部分为 A 。

A.运算器、控制器B.加法器、寄存器C.运算器、加法器D.运算器、译码器3.能将A按位取反的指令是 A 。

A.CPL AB.CLR AC.RL AD.SWAP A4.在MCS-51指令中,下列指令中 C 是无条件转移指令。

A.LCALL addr16B.DJNZ direct,relC.SJMP relD.ACALL addr115.MCS-51单片机定时器外部中断1和外部中断0的触发方式选择位是 C 。

A.TR1和TR0B.IE1和IE0C.IT1和IT0D.TF1和TF06.MCS-51寻址方式中,直接寻址的寻址空间是D。

A.工作寄存器R0~R7B.专用寄存器SFRC.程序存储器ROMD.数据存储器256字节范围7.8051单片机的V SS(20)引脚是 B 引脚。

A.主电源+5VB.接地C.备用电源D.访问片外存贮器8.MCS-51单片机的P1口的功能是 A 。

A.可作通用双向I/O口用C.可作地址/数据总线用9.寻址方式就是 C 的方式。

A.查找指令操作码B.查找指令C.查找指令操作数D.查找指令操作码和操作数10.对定时器控制寄存器TCON中的IT1和IT0位清0后,则外部中断请求信号方式为A 。

A.低电平有效B.高电平有效C.脉冲上跳沿有效D.脉冲负跳有效11.启动定时器1开始定时的指令是 D 。

A.CLR TR0B.CLR TR1C.SETB TR0D.SETB TR112.执行下列程序后,累加器A的内容为 B 。

ORG 0000HMOV A, #00HADD A, #02HMOV DPTR, #0050HMOVC A, @A+DPTRMOV @R0, ASJMP $ORG 0050HBAO: DB 00H,08H,0BH,6H,09H,0CHENDA.00HB.0BHC.06HD.0CH13.单片机上电复位后,PC的内容和SP的内容为 B 。

单片机原理及接口技术试题及答案

单片机原理及接口技术试题及答案

单片机原理及接口技术一、判断题1. 指令字节数越多,执行时间越长。

……………………………………()2. 内部寄存器Rn(n=0~7)作为间接寻址寄存器。

……………………()3. 8031芯片内一共有4K的ROM,256字节的RAM。

……………………()4. 8位构成一个字节,一个字节所能表达的数的范围是0-255。

………()5. 8051中的工作寄存器就是内部RAM中的一部份。

………………………()6. 8051中特殊功能寄存器(SFR)就是内部RAM中的一部份。

…………()7. MOV A,@R0这条指令中@R0的寻址方式称之为寄存器间址寻址。

……()8. MOV A,30H这条指令执行后的结果是(A)=30H ………………………()9. MOV A,@R7,将R7单元中的数据作为地址,从该地址中取数,送入A中()10. SP称之为堆栈指针,堆栈是单片机内部的一个特殊区域,与RAM无关()二、简答题1. 分别列出传送指令、算术指令、逻辑指令和转移指令。

2. 指出下列指令的寻址方式:1):MOV A,#01 3):ADD A,10H2):MOV A,@R0 4):SETB 20H3. 要设置T0为16位计数器;T1为8位定时器,请填写TMOD寄存器4. 说出SCON中SM0 SM1 SM2 REN TB8 RB8 TI RI 的意义和功能5. 按动态扫描设计,6根线可以接多少个按键?并画出与51单片机的接线图。

6. 如果(DPTR)=507BH,(SP)=32H,(30H)=50H,(31H)=5FH,(32H)=3CH,则执行下列指令后:POP DPH;POP DPL;POP SP;则:(DPH)= ____;(DPL)=_______;(SP)=_______;7. 分析下列程序的功能PUSH ACCPUSH BPOP ACCPOP B8. 三片6264的地址范围分别是多少?(地址线未用到的位填1)9. 给8031单片机扩展一片2716和6116,请画出系统连接图,并给出地址范围。

单片机习题和试题库之四 问答题

单片机习题和试题库之四  问答题
6. 简述复位的用途,复位的方法。
7. MCS-51单片机系统中,外接程序存储器和数据存储器公用16位地址线和8位数据线,为什么不会发生冲突?
8. 若异步通信按方式2传送,每分钟传送3000个字符,其波特率是多少?
9. 中断响应的条件是什么?
10. MCS-51单片机系统中,外接程序存储器和数据存储器公用16位地址线和8位数据线,为什么不会发生冲突?
14.指令如下:
MOV A,R4 ;
在程序状态字PSW中 ⑴ RS1=0,RS0=0; ⑵ RS1=1,RS0=0
两种情况下,上述指令执行结果有何不同?
15.MCS-51 单片机堆栈有何特点?若SP=60H,PC=2000H,标号LABEL所在的地址为3000H,问执行长调用指令LCALL LABEL后,堆栈指针和堆栈的内容发生什么变化?PC的值等于什么?
3456,623,105
57. 写出下列字符的ASCII码
A 9 * = !
58. 设机器字长为8位,求下列数值的二、十六进制原码、反码、和补码
+0,-0,+33,-33,+127,-127,+75,-75;
59. 已知X=+59,Y=+78用八位机器数补码运算求X+Y=?,X-Y=?并判别溢出情况?
82.用74373输入(P2.0片选),74377输出(P2.1片选),试画出与80C51的连接电路,并编制程序,从373依次读入8个数据,取反后,从377输出。
83.51系列单片机具有几个中断源,分别是如何定义的?其中哪些中断源可以被定义为高优先级中断,如何定义?
84.各中断源对应的中断服务程序的入口地址是否能任意设定?

51单片机如何实现16位二进制除以8位二进制数

51单片机如何实现16位二进制除以8位二进制数

51单片机如何实现16位二进制除以8位二进制数在51单片机中实现16位二进制数除以8位二进制数,需要使用软件算法来模拟除法运算。

下面将介绍一种常见的算法,即软件实现的二进制长除法。

1. 初始化数据:设置一个16位的被除数(dividend)和一个8位的除数(divisor),以及一个16位的商(quotient)和一个8位的余数(remainder),初值均为0。

将被除数初始化为要进行除法运算的16位二进制数。

2.进行除法运算:-将被除数依次左移1位,将商的对应符号位设置为左移的次数,直到高位与除数相同或者高位比除数小为止。

这一步是为了找到最高位与除数相等或小于的位置。

-如果此时被除数小于除数,则被除数右移1位,并将商右移1位;反之,被除数减去除数,并将商对应位置1-重复上述过程直到商的最低位左边都处理完毕(共8位)。

-最终16位的商即为运算结果的高8位,余数为运算结果的低8位。

3.输出结果:将商和余数保存到指定的内存地址或寄存器中,即可完成除法运算过程。

需要注意的是,当除数为0时,应该进行异常处理。

接下来提供一段简化的C语言代码实例,以帮助理解:```c#include <stdio.h>unsigned int quotient = 0; // 商unsigned char remainder = 0; // 余数void binaryDivide(unsigned int dividend, unsigned char divisor)for (int i = 0; i < 16; i++)if ((dividend & 0x8000) != 0) { // 当被除数最高位为1dividend = (dividend << 1) & 0xFFFF; // 左移1位后,最高位清零quotient = (quotient << 1) , 0x01; // 商左移1位后,最低位置1if (dividend >= divisor)dividend -= divisor;} elsequotient &= 0xFFFE; // 商最低位置0}} else { // 当被除数最高位为0dividend = (dividend << 1) & 0xFFFF; // 左移1位后,最高位清零quotient = quotient << 1; // 商左移1位if (dividend >= divisor)dividend -= divisor;quotient ,= 0x01; // 商最低位置1}}}remainder = dividend & 0x00FF; // 取低8位为余数int maibinaryDivide(dividend, divisor);printf("Quotient: %04X\n", quotient);printf("Remainder: %02X\n", remainder);return 0;```执行以上代码,输出结果为:```Quotient: 00AARemainder: 24```以上就是如何在51单片机中实现16位二进制数除以8位二进制数的简单介绍和示例。

微机原理习题库(51单片机)含答案

微机原理习题库(51单片机)含答案

第一章单片机概述与构造一、选择题1.访问片外部数据存储器时,不起作用的信号是〔C〕。

A./RD B./WE C./PSEN D.ALE2.51 单片机P0 口用作输出时,应外接〔 A 〕。

A.上拉电阻B.二极管C.三极管D.下拉电阻3.进位标志CY 在〔C 〕中。

A.累加器B.算逻运算部件ALU C.程序状态字存放器PSW D.DPTR4.堆栈数据的进出原则是〔 D 〕。

A.先进先出B.进入不出C.后进后出D.先进后出5.51 单片机系统中,假设晶振频率为6MHz,一个机器周期等于〔D 〕μ。

sA.1.5 B.3 C.1 D.26.在家用电器中使用单片机应属于微计算机的〔 B 〕。

A.关心设计应用B.测量、把握应用C.数值计算应用D.数据处理应用7.PC 的值是〔C 〕。

A.当前正在执行指令的前一条指令的地址B.当前正在执行指令的地址C.当前正在执行指令的下一条指令的地址D.把握器中指令存放器的地址8.单片机应用程序一般存放在〔 B 〕中。

A.RAM B.ROM C.存放器D.CPU9.在堆栈操作中,当进栈数据全部弹出后,这时SP 应指向〔 D 〕A.栈底单元B.7FH 单元C.栈底单元地址加1 D.栈底单元地址减1 10.51单片机的并行I/O口信息有两种读取方法:一种是读引脚,还有一种是〔A〕。

A.读锁存器B.读数据库C.读A 累加器D.读CPU二、填空题1.单片机复位后,SP、PC 和I/O 口的内容分别为07H\000H\FFH 。

2.单片机有四个工作存放器区,由PSW 状态字中的RS1 和RS0 两位的状态来打算。

单片机复位后,假设执行SETB R S0 指令,此时只能使用 1 区的工作存放器,地址范围是08H---0FH 。

3.51 单片机驱动力量最强的并行端口为P0 端口。

4.51 单片机PC 的长度为16 位,SP 的长度为8 位,DPTR 的长度为_16位。

5.访问51 单片机程序存储器地址空间、片内数据存储器地址、片外数据存储器地址的指令分别为movc ,MOV 和_movx 。

大学51系列单片机第八章习题及参考答案

大学51系列单片机第八章习题及参考答案

大学51系列单片机第八章习题及参考答案一、填空题1、MCS-51外扩ROM、RAM或I/O时,它的地址总线是P0、P2 口。

2、12根地址线可寻址 4 KB存储单元。

3、微机与外设间传送数据有程序传送、中断传送和DMA传送三种传送方式。

4、74LS138是具有3个输入的译码器芯片,其输出作为片选信号时,最多可以选中8 块芯片。

5、74LS273通常用来作简单输出接口扩展;而74LS244则常用来作简单输入接口扩展。

6、并行扩展存储器,产生片选信号的方式有线选法和译码法两种。

7、在存储器扩展中,无论是线选法还是译码法,最终都是为了扩展芯片的片选端提供信号。

8、起止范围为0000H-3FFFH的存储器的容量是16 KB。

9、11根地址线可选2KB 个存储单元,16KB存储单元需要14 根地址线。

10、32KB RAM存储器的首地址若为2000H,则末地址为9FFF H。

11、假定一个存储器有4096个存储单元,其首地址为0,则末地址为0FFFH 。

12、除地线公用外,6根地址线可选64 个地址,11根地址线可选2048 个地址。

13、单片机扩展的内容有程序存储器扩展、数据存储器扩展及I/O口的扩展等。

二、选择题1、当8031外扩程序存储器8KB时,需使用EPROM2716( C )A、2片B、3片C、4片D、5片2、某种存储器芯片是8KB*4/片,那么它的地址线根数是( C )A、11根B、12根C、13根D、14根3、74LS138芯片是( B )A、驱动器B、译码器C、锁存器D、编码器4、MCS-51外扩ROM、RAM和I/O口时,它的数据总线是( A )A、P0B、P1C、P2D、P35、6264芯片是( B )A、E2PROMB、RAMC、Flash ROMD、EPROM6、一个EPROM的地址有A0----A11引脚,它的容量为( B )。

A、2KBB、4KBC、11KBD、12KB7、单片机要扩展一片EPROM2764需占用( C )条P2口线。

2015年单片机期末复习题

2015年单片机期末复习题

2015年单片机原理与应用期末复习试题一.填空题:1.典型的80C51单片机的内部主要有___ 、___ 、___ 、___ 、___ 、____ 、___ 组成。

2. P1口的主要用途是___________,P3口的主要用途是________,_________。

控制总线PSEN的用途是 ___________________。

3.MCS-51单片机指令系统中,指令长度有一字节、二字节和字节,指令执行时间有一个机器周期、两个机器周期和机器周期,乘法指令需机器周期。

4.双列直插封装形式的80C51单片机引脚有_ P,电源和地线占用 _____P, I/O口占用 P,振荡器占用 P,控制线占用______P。

5.设(A)=55H,(R5)=AAH,则执行ANL A,R5指令后的结果是(A)= ,(R5)= ;则执行ORL A,R5指令后的结果是(A)= ,(R5)= 。

6.DA指令跟在指令的后面,用与二进制数与码的调整。

若(A)=0AH ,执行DA A指令后,(A)= 。

7. 8031单片机的机器周期为2μs,则其晶振频率fosc为______MHz。

8. 80C51单片机片外ROM最大扩展空间为___________KB,RAM最大扩展空间为___________KB。

9. 8051的串行口工作方式中适合多机通信的是______。

10. 8051的PC是16位,因此程序存储器的最大寻址空间为______KB。

11. 访问外部存贮器时,作数据线和低8位地址线的口线是______。

12. 8051单片机内部RAM的工作寄存器区有4组寄存器,共___________个字节。

13. MCS-51单片机属于___________位机。

14. 8051单片机被强制复位后,其寄存器SP的内容为___________。

15. 要把地址为20H的位置零,应使用的一条指令是___________。

16. 指令MOV R0,#data8中,无符号立即数data8最大可以是___________。

51单片机的16位和8位的运算不准

51单片机的16位和8位的运算不准

51单片机的16位乘以8位乘法运算可能会出现问题:例如2927 * 17 = 49759;但是在51中2927 * 17 和2927 * 1.7 * 10的结果并不同,后者是对的。

/******************************************************************** * 文件名:A_SHUMA.c* 创建人:zhongbaohua,2012年6月10日天津工业大学电气工程与自动化学院* 版本号:1.0********************************************************************* **/#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int/****本地变量定义**************************************/sbit duan = P2^2;uchar code d_table[17] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x 71,0x00};// 0, 1. 2, 3, 4, 5, 6, 7, 8, 9, uchar code w_table[4] = {0xfe,0xfd,0xfb,0xf7};unsigned int disbuff[4] = {0};unsigned long int diatance = 0;/************本地变函数定声名**************************************/ void delay_ms(uint del);void display(uchar w,uchar d);void Display();/************本地main函数******************************************/ void Main(void){unsigned int i = 0;duan = 1;P0 = 0x00;delay_ms(1);duan = 0;while(1){diatance = 2927 * 17; //算出来是CMdisbuff[0] = diatance % 1000 / 100;disbuff[1] = diatance % 1000 %100 / 10;disbuff[2] = diatance % 1000 %100 % 10;for(i=0; i<=300;i++){Display();}diatance = 21927 * 1.7 * 10 ; //算出来是CMdisbuff[0] = diatance % 1000 / 100;disbuff[1] = diatance % 100 / 10;disbuff[2] = diatance % 10;for(i=0; i<=300;i++){Display();}/**/}}/******************************************************************** *** 名称: delay_ms()* 功能: 延时,延时时间为1ms * del* 输入: del* 输出: 无********************************************************************* **/void delay_ms(uint del){uint i,j;for(i=0; i<del; i++)for(j=0; j<60; j++);}/****************************************************************** * 名称: void display(uchar w,uchar d)* 功能: 数码管定位显示数值功能* 输入: w 为位置;d 为数值;* 输出: 无******************************************************************/ void display(uchar w,uchar d){P1=w_table[w];duan=1;P0=d_table[d];duan = 0;P0=0X00;//消影}/******************************************************************** *** 名称: void Display()* 功能: 数码管位现函数集合* 输入: none* 输出: none*******************************************************************/ void Display(){display(0,disbuff[0]);delay_ms(2);display(1,disbuff[1]);delay_ms(2);display(2,disbuff[2]);delay_ms(2);}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机的16位乘以8位乘法运算可能会出现问题:
例如2927 * 17 = 49759;
但是在51中2927 * 17 和2927 * 1.7 * 10的结果并不同,后者是对的。

/******************************************************************** * 文件名:A_SHUMA.c
* 创建人:zhongbaohua,2012年6月10日
天津工业大学电气工程与自动化学院
* 版本号:1.0
********************************************************************* **/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
/****本地变量定义**************************************/
sbit duan = P2^2;
uchar code d_table[17] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x 71,0x00};
// 0, 1. 2, 3, 4, 5, 6, 7, 8, 9, uchar code w_table[4] = {0xfe,0xfd,0xfb,0xf7};
unsigned int disbuff[4] = {0};
unsigned long int diatance = 0;
/************本地变函数定声名**************************************/ void delay_ms(uint del);
void display(uchar w,uchar d);
void Display();
/************本地main函数******************************************/ void Main(void)
{
unsigned int i = 0;
duan = 1;
P0 = 0x00;
delay_ms(1);
duan = 0;
while(1)
{
diatance = 2927 * 17; //算出来是CM
disbuff[0] = diatance % 1000 / 100;
disbuff[1] = diatance % 1000 %100 / 10;
disbuff[2] = diatance % 1000 %100 % 10;
for(i=0; i<=300;i++)
{
Display();
}
diatance = 21927 * 1.7 * 10 ; //算出来是CM
disbuff[0] = diatance % 1000 / 100;
disbuff[1] = diatance % 100 / 10;
disbuff[2] = diatance % 10;
for(i=0; i<=300;i++)
{
Display();
}/**/
}
}
/******************************************************************** **
* 名称: delay_ms()
* 功能: 延时,延时时间为1ms * del
* 输入: del
* 输出: 无
********************************************************************* **/
void delay_ms(uint del)
{
uint i,j;
for(i=0; i<del; i++)
for(j=0; j<60; j++)
;
}
/****************************************************************** * 名称: void display(uchar w,uchar d)
* 功能: 数码管定位显示数值功能
* 输入: w 为位置;d 为数值;
* 输出: 无
******************************************************************/ void display(uchar w,uchar d)
{
P1=w_table[w];
duan=1;
P0=d_table[d];
duan = 0;
P0=0X00;//消影
}
/******************************************************************** **
* 名称: void Display()
* 功能: 数码管位现函数集合
* 输入: none
* 输出: none
*******************************************************************/ void Display()
{
display(0,disbuff[0]);
delay_ms(2);
display(1,disbuff[1]);
delay_ms(2);
display(2,disbuff[2]);
delay_ms(2);
}。

相关文档
最新文档