文档库 最新最全的文档下载
当前位置:文档库 › 51单片机常见简答题

51单片机常见简答题

51单片机常见简答题
51单片机常见简答题

简答题部分

1、什么叫堆栈?

2、进位和溢出?

3、在单片机中,片内ROM的配置有几种形式?各有什么特点?

4、什么是单片机的机器周期、状态周期、振荡周期和指令周期?它们之间是什么关系?

5、MCS-51单片机通常内部包含哪些主要逻辑功能部件?

6、MCS-51单片机的存储器从物理结构上可划分几个空间?

7、存储器中有几个保留特殊功能的单元用做入口地址?分别作什么作用?

8、MCS-51单片机片内256B的数据存储器可分为几个区?分别起什么作用?

8、MCS-51单片机的P0~P3四个I/O端口在结构上有何异同?使用时应注意的事项?

9、存储器空间在物理结构上可划分为几个部分?

10、开机复位后,CPU使用是的哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组?

11、MCS-51的时钟周期、机器周期、指令周期的如何分配的?当振荡频率为8MHz时,一个单片机时钟周期为多少微秒?

12、程序状态存储器PSW的作用是什么?常用状态标志有哪几位?作用是什么?

13、EA/VPP引脚有何功用?8031的引脚应如何处理?为什么?

14、单片机有哪几个特殊功能寄存器?各在单片机的哪些功能部件中?

15、什么是指令?什么是程序?简述程序在计算机中的执行过程。

16、什么叫寻址方式?MCS51有几种寻址方式?

17、SJMP(短转移)指令和AJMP(绝对转移)指令的主要区别。

18、中断服务子程序与普通子程序有哪些异同之处?

19、MCS-51响应中断的条件是什么?CPU响应中断后,CPU要进行哪些操作?不同的中断源的中断入口地址是什么?

20、单片机对中断优先级的处理原则是什么?

21、MCS-51的外部中断有哪两种触发方式?他们对触发脉冲或电平有什么要求?

22、什么是中断和中断系统?其主要功能是什么?

23、MCS-51有哪些中断源?

24、说明外部中断请求的查询和响应过程

25、MCS-51响应中断的条件?。

26、简述MCS-51单片机的中断响应过程。

27、在执行某一中断源的中断服务程序时,如果有新的中断请求出现,试问在什么情况下可响应新的中断请求?在什么情况下不能响应新的中断请求?

28、MCS-51单片机外部中断源有几种触发中断请求的方法?如何实现中断请求?

29、什么是中断优先级?中断优先级处理的原则是什么?

30、中断响应过程中,为什么通常要保护现场?如何保护?

31、MCS-51定时器有哪几种工作模式?有何区别?

32、串行数据传送的主要优点和用途是什么?

33、简述串行接口接收和发送数据的过程。

34、MCS-51串行接口有几种工作方式?

35、MCS-51中SCON的SM2、TB8、RB8有何作用?

36、简述单片机多机通信的原理。

37、串行通信的总线标准是什么?有哪些内容?

38、简述单片机系统扩展的基本原则和实现方法。

39、8255有哪几种工作方式?怎样选择其工作方式?

40、8155有哪几种工作方式?怎样进行选择?

41、什么是D/A转换器?简述T形电阻网络转换器的工作原理。

42、波特率、比特率和数据传送速率的含意各是什么?

43. 存储器的作用是什么?只读存储器和随机存储器有什么不同?

44. MCS-51 存储器结构的主要特点是什么?程序存储器和数据存储器各有何不同?

45. MCS-51 单片机的P0~P3 四个I/O 端口在结构上有何异同?使用时应注意哪些事项?

46.位寻址和字节寻址如何区分?在使用时有何不同?

47.为了提高汇编语言程序的效率,在编写时应注意哪些问题?

48.在MCS-51 单片机应用系统中,外接程序存储器和数据存储器的地址空间允许重叠而

49.外部存储器的片选方式有几种?各有哪些特点?

50.简述MCS-51 单片机CPU 访问外部扩展程序存储器的过程。

51.简述MCS-51 单片机CPU 访问外部扩展数据存储器的过程。

52、请指出程序存储器中有特殊用途的几个单元,并说明它们的作用

53、十进制调整指令DA A的功能是什么?其运作过程是怎样的?

54、什么叫中断?CPU为什么要采用中断结构?

55、单片机响应中断的条件和过程是怎样的?

56.何谓单片机?单片机与一般微型计算机相比,具有哪些特点?

57 在各种系列的单片机中,片内ROM的配置有几种形式?用户应根据什么原则来选用?

58 SJMP(短转移)指令和AJMP(绝对转移)指令的主要区别。

59 8031的扩展储存器系统中,为什么P0口要接一个8位锁存器,而P2口却不接?

60 在8031扩展系统中,外部程序存储器和数据存储器共用16位地址线和8位数据线,为什么两个存储空间不会发生冲突?

61 8031单片机需要外接程序存储器,实际上它还有多少条I/O线可以用?当使用外部存储器时,还剩下多少条I/O线可用?

1、什么叫堆栈?

答:堆栈是在片内RAM中专门开辟出来的一个区域,数据的存取是以"后进先出"的结构方式处理的。实质上,堆栈就是一个按照"后进先出"原则组织的一段内存区域。

2、进位和溢出?

答:两数运算的结果若没有超出字长的表示范围,则由此产生的进位是自然进位;若两数的运算结果超出了字长的表示范围(即结果不合理),则称为溢出。

3、在单片机中,片内ROM的配置有几种形式?各有什么特点?

答:单片机片内程序存储器的配置形式主要有以下几种形式:

(1)掩膜(Msak)ROM型单片机:内部具有工厂掩膜编程的ROM,ROM中的程序只能由单片机制造厂家用掩膜工艺固化,用户不能修改ROM中的程序。掩膜ROM单片机适合于大批量生产的产品。用户可委托芯片生产厂家采用掩膜方法将程序制作在芯片的ROM。

(2)EPROM型单片机:内部具有紫外线可擦除电可编程的只读存储器,用户可以自行将程序写入到芯片内部的EPROM中,也可以将EPROM中的信息全部擦除。擦去信息的芯片还可以再次写入新的程序,允许反复改写。

(3)无ROM型单片机:内部没有程序存储器,它必须连接程序存储器才能组成完整的应用系统。

无ROM型单片机价格低廉,用户可根据程序的大小来选择外接程序存储器的容量。这种单片机扩展灵活,但系统结构较复杂。

(4)E2ROM型单片机:内部具有电可擦除叫可编程的程序存储器,使用更为方便。该类型目前比较常用

(5)OTP(One Time Programmable)ROM单片机:内部具有一次可编程的程序存储器,用户可以在编程器上将程序写入片内程序存储器中,程序写入后不能再改写。这种芯片的价格也较低。

4、什么是单片机的机器周期、状态周期、振荡周期和指令周期?它们之间是什么关系?

答:某条指令的执行周期由若干个机器周期(简称M周期)构成,一个机器周期包含6个状态周期(又称时钟周期,简称S周期),而一个状态周期又包含两个振荡周期(P1和P2,简称P周期)。也就是说,指令执行周期有长有短,但一个机器周期恒等于6个状态周期或12个振荡周期,即1M=6S=12P。

5、MCS-51单片机通常内部包含哪些主要逻辑功能部件?

答:51单片机通常由下列部件组成:一个8位CPU、一个片内振荡器及时钟电路、内部Flash Rom 程序存储器、256B的RAM、2个16位的定时/计数器、可寻址64KB片外数据存储器和64KB片外数据存储器和64KB片外程序存储器空间的控制电路、4个8位并行I/O端口及一个可编程全双工串行接口。

6、MCS-51单片机的存储器从物理结构上可划分几个空间?

答:MCS-51系列单片机的存储器配置从物理结构上可分为:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。从逻辑上可分为:片内外统一编址的64KB的程序存储器、片内256B的数据存储器以及片外64KB的数据存储器。

7、存储器中有几个保留特殊功能的单元用做入口地址?分别作什么作用?

答:MCS-51系列单片机的存储器中有6个保留特殊功能单元,其中0000H为复位入口、0003H 为外部中断0入口、000BH为T0溢出中断入口、0013H为外部中断1入口、001BH为T1溢出中断入口、0023H为串行接口中断入口。

8、MCS-51单片机片内256B的数据存储器可分为几个区?分别起什么作用?

答:MCS-51单片机片内数据存储器可分为二个区:00H~7FH单元组成的低128B的片内RAM 区、80H~FFH单元组成的高128B的专用寄存器区。其中低128B的RAM区又分为:00H~1FH单元为工作寄存器区、20H~2FH单元为位寻址区、30H~7FH单元为用户RAM区。工作寄存器区可作通用寄存器用,用户RAM区可作堆栈和数据缓冲用。专用寄存器区又称特殊功能寄存器,使用80H~FFH单元。

8、MCS-51单片机的P0~P3四个I/O端口在结构上有何异同?使用时应注意的事项?

答:MCS-51单片机的四个端口在结构上相同之处:P0~P3都是准双向I/O口,作输入时,必须先向相应端口的锁存器写入“1”。不同之处;P0口的输出级与P1~P3口不相同,它无内部上拉电阻,不能提供拉电流输出,而P1~P3则带内部上拉电阻,可以提供拉电流输出。

当P0口作通用I/O口输出使用时,需外接上拉电阻才可输出高电平;但作地址/数据总线时,不需要外接上拉电阻。P1~P3口I/O输出时,均无需外接上拉电阻。

9、存储器空间在物理结构上可划分为几个部分?

答:MCS-51存储器是采用将程序存储器和数据存储器分开寻址的结构,其存储器空间在物理结构上可划分为如下四个空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。

10、开机复位后,CPU使用是的哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组?

答:开机复位后,CPU使用的是第0组工作寄存器。它们的地址是00H~07H。CPU通过对程序状态字PSW中RS1、RS0的设置来确定和改变当前工作寄存器组。如:RS1、RS0为00则指向第0组;为01则指向第1组;为10则指向第2组;为11则指向第3组。

11、MCS-51的时钟周期、机器周期、指令周期的如何分配的?当振荡频率为8MHz时,一个单片机时钟周期为多少微秒?

答:MCS-51的时钟周期是最小的定时单位,也称为振荡周期或节拍。一个机器周期包含12个时钟周期或节拍。不同的指令其指令周期一般是不同的,可包含有1~4个机器周期。当振荡频率为8MHz时,一个单片机时钟周期为0.125μs 。

12、程序状态存储器PSW的作用是什么?常用状态标志有哪几位?作用是什么?

答:PSW是8位寄存器,用于作为程序运行状态的标志,其格式如下:

PSW位地址D7H D6H D5H D4H D3H D2H D1H D0H

字节地址D0H C AC F0 RS1 RS0 OV F1 P

当CPU进行各种逻辑操作或算术运算时,为反映操作或运算结果的状态,把相应的标志位置1或清0。这些标志的状态,可由专门的指令来测试,也可通过指令来读出。它为计算机确定程序的下一步运行方向提供依据。PSW寄存器中各位的名称及文职如上所示,下面说明各标志的作用。P:奇偶标志。该位始终跟踪累加器A内容的奇偶性。如果有奇数个“1”,则置P为1,否则置0。在MCS-51的指令系统中,凡是改变累加器A中内容的指令均影响奇偶标志位P。

F1:用户标志。由用户置位或复位。

OV:溢出标志。有符号数运算时,如果发生溢出时,OV置1,否则清0。对于一个字节的有符号数,如果用最高位表示正、负号,则只有7位有效位,能表示—128~~+127之间的数;如果运算结果超出了这个数值范围,就会发生溢出,此时,OV=1,否则OV=0。此外,在乘法运算中,OV=1

表示乘积超过255;在除法运算中,OV=1表示除数为0。

RS0、RS1:工作寄存器组选择位,用以选择指令当前工作的寄存器组。由用户用软件改变RS0和RS1的组合,以切换当前选用的工作寄存器组,其组合关系如下。

RS1 RS0 寄存器组片内RAM地址

0 0 第0组00H~07H

0 1 第1组08H~0FH

1 0 第2组10H~17H

1 1 第3组18H~1FH

13、EA/V PP引脚有何功用?8031的引脚应如何处理?为什么?

答:EA/V PP是双功能引脚,功能如下:

(1)EA接高电平时,在低4KB程序地址空间(0000H~0FFFH),CPU执行片内程序存储器的指令,当程序地址超出低4KB空间(1000H~FFFFH)时,CPU将自动执行片外程序存储器的指令。

(2)EA接低电平时,CPU只能执行外部程序存储器的指令。

8031单片机内部无ROM,必须外接程序存储器。因此,8031的EA引脚必须接低电平。

在对8751单片机内部的EPROM编程时,此引脚V PP外接+12V电压,用于固化EPROM程序。

14、单片机有哪几个特殊功能寄存器?各在单片机的哪些功能部件中?

答:MCS-51单片机内部有21个特殊功能寄存器,在物理上是分散在片内各功能部件中,在数学上把它们组织在内部数据存储器地址空间80H~FFH中,以便能使用统一的直接寻址方式来访问。这些特殊功能寄存器颁在以下各个功能部件中:

(1)CPU:ACC、B、PSW、SP、DPTR(由DPL和DPH两个8位寄存器组成);

(2)中断系统:IP、IE;

(3)定时器/计数器:TMOD、TCOM、TL0、TH0、TL1、TH1;

(4)并行I/O口:P0、P1、P2、P3;

(5)串行口:SCON、SBUF、PCON。

15、什么是指令?什么是程序?简述程序在计算机中的执行过程。

答:指令是控制计算机进行某种指令的命令。CPU就是根据指令来指挥和控制计算机各部分协调地动作,完成规定的操作。指令是由二进制代码表示的。通常指令氛围操作码和操作数两部分:操作码规定操作的类型,操作数给出参加操作的数据或存放数据的地址。

为完成某项规定任务,把计算机指令按一定次序进行编排组合所行成的指令集称为程序。

程序在计算机中的执行过程实质就是执行人们所编制程序的过程,即逐条执行指令的过程。计算机每执行一条指令都可氛围三个简短进行,即取指令,分析指令和执行指令。

取指令简短的任务是:根据程序计数器PC中的植从程序存储器读出现行指令,送到指令寄存器。分析指令阶段的任务是:将指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。

执行指令阶段的任务是:取出操作数,然后按照操作码的性质对操作数进行操作,即执行指令。计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至停机指令或循环等待指令。

16、什么叫寻址方式?MCS51有几种寻址方式?

答:寻址方式:寻址方式就是寻找指令中操作数或操作数所在地址的方式。也就是如何找到存放操作数的地址,把操作数提取出来的方法。MCS51的寻址方式有:立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对对址、位寻址。

17、SJMP(短转移)指令和AJMP(绝对转移)指令的主要区别。

答:SJMP提供了以SJMP的下一条指令的起始地址为中心的256字节范围的转移(-128~+127),AJMP的转移目标地址必须在与AJMP的下一条指令的第一字节相同的2KB区的程序储存器中。短转移方便了可重定位编码。SJMP方便了PC可重定位编码,但转移范围小。而ASJMP转移范围大,但存在跳区的限制,AJMP指令只能位于2KB区的最后2个字节处时,才可跳到下一个区去。因此用AJMP指令来代替SJMP指令是有条件的,也就是目标地址必须与它下面的指令存放地址在同一个2KB区域内。

18、中断服务子程序与普通子程序有哪些异同之处?

答:相同点:都是让CPU从主程序转去实行子程序,执行完毕后又返回主程序。不同点:中断服务子程序是随机执行的,而普通子程序是预先安排好的;中断服务子程序以RETI结束,而一般子程序以RET结束。RETI除了将短点弹回PC动作之外,还要清除对应的中断优先标志位(片内不可寻址的触发器),以便新的中断请求能被响应。

19、MCS-51响应中断的条件是什么?CPU响应中断后,CPU要进行哪些操作?不同的中断源的中断入口地址是什么?

答: CPU响应中断的条件如下:

①首先要有中断源发出有效的中断申请;

②CPU中断是开放的,即中断总允许位EA=1,允许所有中断源申请中断。

③申请中断的中断源的中断允许位为1,即此中断源可以向CPU申请中断。

以上是CPU响应中断的基本条件。如果上述条件不足,则CPU一般会影响中断。但是,若有下列任何一种情况存在,则中断响应会被阻止。

①CPU正处在为一个同级或高级的中断服务中。

②现行机器周期不所执行的指令的最后一个机器周期。作此限制的目的在与使当前指令执行完毕后,才能进行中断响应,以确保当前指令的完整执行。

③当前指令是返回指令(RET、RETI)或访问IE、IP的指令。因为按MCS-51中断系统的特性规定,在执行完这些指令之后,还应在继续执行一条指令,然后才能影响中断。

若存在任何一种情况,CPU将丢弃中断查询结果;否则,将在紧接着的下一个机器周期内执行中断查询结果,响应中断。

CPU响应中断后,保护断点,硬件自动将(PC)→堆栈,寻找中断源,中断矢量→PC,程序转向中断服务程序入口地址。其中,INT0=0003H,T0=000BH,INT1=0013H,T1=001BH,串行接口=0023H。

20、单片机对中断优先级的处理原则是什么?

答:⑴低级不能打断高级,高级能够打断低级;

⑵一个中断以被响应,同级的被禁止;

⑶同级,按查询顺序,INT0→T0→INT1→T1→串行接口

21、MCS-51的外部中断有哪两种触发方式?他们对触发脉冲或电平有什么要求?

答:有电平触发和脉冲触发。电平方式是低电平有效。只要单片机在中断要求引入端INT0和INT1上采样到低电平时,就激活外部中断。脉冲方式则是脉冲的下条沿有效。这种方式下,在两个相邻机器周期对中断请求引入端进行采样中,如前一次为高,后一次为低,即为有效中断请求。因此在这两种中断请求信号方式下,中断请求信号的高电平状态和低电平状态都应至少维持一个周期以保电平变化能被单片机采样用。

22、什么是中断和中断系统?其主要功能是什么?

答:当CPU正在处理某件事情的时候,外部发生的某一件事情请求CPU迅速去处理,于是,CPU 暂时终止当前的工作,转去处理发生的事情,中断处理完该事件以后,再回到原来被终止的地方,继续原来的工作。这种过程称为中断,实现这种功能的部件称为中断系统。

功能:(1)使计算机具有实时处理功能,能对外界异步发生的事件作出及时的处理。(2)完全消除了CPU在查询方式中的等待现象,大大提高了CPU的工作效率。(3)实现实时控制。

23、MCS-51有哪些中断源?

答: MCS-51有如下中断源:INTO:外部中断0请求,低电平有效(由P3.2输入);INT1:外部中断1请求,低点平有效(由P3.3输入);TO:定时器/计数器0溢出中断请求;T1:定时器/计数器1溢出中断请求;TX/RX:串行借口中断请求。通过对特殊功能积存器TCON、SCON、IE、IP的个位进行置位或复位等操作,可实现各种中断控制功能。

24、说明外部中断请求的查询和响应过程。

答:当CPU执行主程序第K条指令时,外设向CPU发出中断请求,CPU接到中断请求信号并在本条指令执行完后,中断主程序的执行并保存断点地址,然后转去响应中断。CPU在每一个S5P2期间顺序采样每个中断源,CPU在下一个机器周期S6期间按优先级顺序查询中断标志,如查询到某个中断标记为1,将在接下来的机器周期S1期间按优先级进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入PC,以便进入相应的中断服务程序。中断服务完毕后,CPU返回到主程序第K+1条指令继续执行。

25、MCS-51响应中断的条件?

答:(1)有中断源发出中断请求。

(2)中断总允许位EA=1,即CPU开中断。

(3)申请中断的中断源的中断允许位为1,即中断没有被屏蔽。

(4)无同级或更高级中断正在服务。

(5)当前指令周期已经结束。

(6)若现行指令为RETI或访问IE或IP指令时,该指令以及紧接着的另一条指令已执行完毕。

26、简述MCS-51单片机的中断响应过程。

答:CPU在每个机器周期S5P2期间顺序采用每个中断源,CPU在下一个机器周期S6期间按优先级顺序查询中断标志,如查询到某个中断标志为1,将在接下来的机器周期S1期间按优先级进行中断处理,中断系统通过硬件自动将相应的中断矢量地址装入PC,以便进入相应的中断服务程序。一旦响应中断,MCS-51首先置位相应的中断“优先级生效”触发器,然后由硬件执行一条长调用指令,把当前的PC值压入堆栈,以保护断点,再将相应的中断服务的入口地址送入PC,于是CPU 接着从中断服务程序的入口处开始执行。对于有些中断源,CPU在响应中断后会自动清除中断标志。

27、在执行某一中断源的中断服务程序时,如果有新的中断请求出现,试问在什么情况下可响应新的中断请求?在什么情况下不能响应新的中断请求?

答:符合以下6个条件可响应新的中断请求:有中断源发出中断请求、中断总允许位EA=1,即CPU开中断、申请中断的中断源的中断允许位为1,即中断没有被屏蔽、无同级或更高级中断正在被服务、当前的指令周期已结束、若现行指令为RETI或访问IE或IP指令时,该指令以及紧接着的另一条指令已执行完。

如果新的中断请求“优先级”低于正在执行的中断请求或与其同级,则不能被响应。

28、MCS-51单片机外部中断源有几种触发中断请求的方法?如何实现中断请求?

答:有两种方式:电平触发和沿触发。电平触发方式:CPU在每个机器周期的S5P2期间采样外部中断引脚的输入电平。若为低电平,使IE1(IE0)置“1”,申请中断;若为高电平,则IE1(IE0)清零。边沿触发方式:CPU在每个机器周期的S5P2期间采样外部中断请求引脚的输入电平。如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断请求为高水平,接着下一个机器周期采样到外部中断请求为低水平,则使IE1(IE0)置1,申请中断;否则,IE1(IE0)置0。29、什么是中断优先级?中断优先级处理的原则是什么?

答:通常,在系统中有多个中断源,有时会出现两个或更多个中断源同时提出中断请求的情况。这就要求计算机既能区分各个中断源的请求,又能确定首先为哪一个中断源服务。为了解决这一问题,通常给各中断源规定了优先级别,称为优先权或中断优先级。

中断优先级处理的原则是:当两个或者两个以上的中断源同时提出中断请求时,计算机首先为优先权最高的中断源服务,服务结束后,再响应级别较低的中断源。

30、中断响应过程中,为什么通常要保护现场?如何保护?

答:因为一般主程序和中断服务程序都可能会用到累加器、PSW寄存器和其他一些寄存器。CPU 在进入中断服务程序后,用到上述寄存器时,就会破坏它原来存在寄存器中的内容;一旦中断返回,将会造成主程序的混乱。因而在进入中断服务程序后,一般要先保护现场,然后再执行中断处理程序,在返回主程序前再恢复现场。

保护现场的一般方法是把累加器、PSW寄存器及其他一些与主程序有关的寄存器压入堆栈。在保护现场和恢复现场时,为了不使现场数据受到破坏或者造成混乱,一般规定此时CPU不响应新的中断请求。这就要求在编写中断服务程序时,注意在保护现场前要关中断,在恢复现场后要开中断。如果在中断处理时允许有更高级的中断打断它,在保护现场之后要再开中断,恢复现场之前关中断。

31、MCS-51定时器有哪几种工作模式?有何区别?

答:有模式0,模式1,模式2,模式3。

(1)模式0:选择定时器(T0或T1)的高8位和低5位组成的一个13位定时器/计数器。TL低5位溢出时向TH进位,TH溢出时向中断标志位TF0进位,并申请中断。

定时时间t=(213-初值)*振荡周期*12;计数长度为213=8192个外部脉冲。

(2)模式1:与模式0的唯一区别是寄存器TH与TL以全部16位参与操作。

定时时间t=(216-初值)*振荡周期*12;计数长度为216=65536个外部脉冲。

(3)模式2:把TL0与TL1配置成一个可以自动重装载的8位定时器/计数器。TL用作8位计数器,TH用以保存初值。TL计数器溢出是不仅使TF0置1,而且还自动将TH中的内容装载到TL中。

定时时间t=(28-初值)*振荡周期*12;计数长度为256个外部脉冲。

(4)模式3:对T0和T1不大相同。

若T0设为模式3,TL0和TH0被分为两个相互独立的8位计数器。TL0为8位计数器,功能与模式0和模式1相同,可定时可计数。

TH0仅用于作简单的内部定时功能,它占用了定时器T1的控制位TR1和中断标志位TF1,启动和关闭仅受TR1的控制。

定时器T1无工作模式3,但T0在工作模式3时T1仍可设置为模式0~2。

32、串行数据传送的主要优点和用途是什么?

答:串行数据传送是将数据按位进行传送的方式。其主要优点是所需的传送线根数少,对于远距离数据传送的情况,采用串行方式是比较经济的。所以窜行方式主要用于计算机与远程终端之间的数据传送。

33、简述串行接口接收和发送数据的过程。

答:串行接口的接收和发送是对同一地址(99H)两个物理空间的特殊功能寄存器SBUF进行读或写的。当向SBUF发“写”命令时(执行“MOV SBUF,A“指令),即向发送缓冲器SBUF装载并开始由TXD引脚向外发送一帧数据,发送完便使发送中断标志位T1=1。在满足串行接口接收中断标志位RI(SCON。)=0的条件下,置允许接收位REN(SCON.4)=1,就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1。当发读SBUF命令时(执行“MOV A,SBUF”指令),便由接收缓冲器SBUF取出信息通过MCS-51内部总线送CPU。

34、MCS-51串行接口有几种工作方式?

答:MCS-51串行接口有四种工作方式;方式0(8位同步移位寄存器),方式1(10位异步收发),方式2(11位异步收发),方式3(11位异步收发)。

35、MCS-51中SCON的SM2、TB8、RB8有何作用?

答:MCS-51中SCON的SM2是多机通信控制位,主要用于方式2和方式3。若置SM2=1,则允许多机通信。

TB8是发送数据的第9位,在方式2或方式3中,根据发送数据的需求有软件置位或复位。它在许多通信协议中可用作奇偶校验位;在多机通信中作为发送地址帧或数据帧的标志位。

RB8是接收数据的第9位,在方式2或方式3中,接收到的第9位数据放在RB8位。它或是约定的奇/偶校验位,或是约定的地址/数据标识位。

36、简述单片机多机通信的原理。

答:当一片MCS-51主机与多片从机通信时,所有从机的SM2位置1。主机首先发送的一帧数据为地址,即某从机机号,其中第9位1,所有的接收到数据后,将其中第9位装入RB8中。各个从机根据收到的第9位数据(RB8中)的值来决定从机可否再接收主机的信息。若(RB8)=0,说明是数据帧,则使接收中断标志位RI=0,信息丢失;若(RB8)=1,说明是地址帧,数据装入SBUF 并置RI=1,中断所有从机,只有被寻址的目标从机清除SM2(SM2=0),以接收主机发来的一帧数据(点对点通信)。其他从机仍然保持SM2=1。

37、串行通信的总线标准是什么?有哪些内容?

答:美国电子工业协会(EIA)正式公布的串行总线接口标准有RS—232C、RS—422、RS—423和RS—485等。在异步串行通信中应用最广的标准总线是RS—232C。它包括了按位串行传输的电

气和机械方面的规定,如适用范围、信号特性、接口信号及引脚说明等,适用于短距离(<15m)或带调制解调器的通信场合。采用RS—422、RS—485标准时,通信距离可达1000m。

38、简述单片机系统扩展的基本原则和实现方法。

答:(1)以P0口作地址/数据总线,此地址总线是系统的低8位地址线。(2)以P2口的口线作高位地址线。(不固定为8位,需要几位就从P2口引出几条口线。)(3)控制信号线:

①、使用ALE作为地址锁存的选通信号,以实现低8位地址线。

②、以PSEN信号作为扩展程序存储器的读选通信号。

③、以EA信号作为外程序存储器的选择信号。

④、以RD和WR作为扩展数据存储器和I/O端口的读写选通信号,执行MOVX指令时,这两个信号分别自动有效。

39、8255有哪几种工作方式?怎样选择其工作方式?

答:8255有3种工作方式,即方式0、方式1、方式2。

(1) 方式0(基本输入/输出方式):这种方式不需要任何选通信号。A口、B口及C口的高4位和低4位都可以被设定输入或输出。作为输出口时,输出的数据被封锁;B口和C口作为输入口时,其输入的数据不封锁。

(2) 方式1(选通输入/输出方式):在这种工作方式下,A、B和C三个口将分为两组。A组包括A口和C口的高4位,A口可由编程设定为输入口或输出口,C口的高4位则用来作为输入/输出操作的控制和同步信号;B组包括B口和C口的低4位,B口可由编程设定为输入口或输出口,C口的低4位则用来作为输入/输出操作的控制和同步信号。A口和B口的输出数据都被锁存。

(3) 方式2(双向数据传送方式):在这种方式下,A口为8位双向数据口,C口的PC3~PC7用来作为输入/输出的控制同步信号。

8255的工作方式选择是通过对控制口输入控制字(或称命令字)的方式实现的。

40、8155有哪几种工作方式?怎样进行选择?

答:8155有3种工作方式,即通用I/O口、片外256B的RAM及定时器/计数器方式。

当作为通用I/O口时,将IO/M引角置高电平,I/O工作方式选择是通过对8155内部命令寄存器送命令字来实现的。

当作为片外256B的RAM时,将IO/M引角置低电平。这时8155内部的RAM只能作片外RAM 使用,其选址范围由片选线CE(高位地址译码)和AD0~AD7决定,应与应用系统中其他数据存储器统一编址。

当作为定时器/计数器使用时,将IO/M引角置高电平,然后分别选择定时器/计数器的高、低8位寄存器地址,通过对高8位的搞位的设置可定义4种输出波形。高8位中的低6位和低8位寄存器中的8位用于放14位计数器的初值。

41、什么是D/A转换器?简述T形电阻网络转换器的工作原理。

答:在计算机控制的实时控制系统中,有时被控对象需要用模拟量来控制,模拟量是连续变化的电量。此时,就需要将数字量转换为相应的模拟量,以便操纵控制对象。这一过程即为“数/模转换”D/A(Digit to Analog)。能实现D/A转换的期间称为D/A转换器或DAC。

一个二进制数是由各位代码组合起来的,每位代码都有一定的权。为了将数字量转换成模拟量,应将每一位代码按权大小转换成响应的模拟输出分量,然后根据叠加原理将各代码对应的模拟输出

分量相加,其综合就是与数字量成正比的模拟量,由此完成D/A转换。

为实现上述D/A转换,需要使用解码网络。解码网络的主要形式有二进制权电阻解码网络和T 形电阻解码网络。

T形电阻网络整个电路是有相同的电路环节所组成的,每节有二个电阻(R和2R)、一个开关,相当于二进制数的一位,开关由该位的代码所控制。由于电阻接成T形解码网络。此电路采用了分流原理实现对输入为数字量的转换。

42、波特率、比特率和数据传送速率的含意各是什么?

答:在数据通信中,描述数据传送速度的方式有3种:

(1)波特率——每秒传送多少个信号码元(或每秒信号码元变换的总个数),单位是波特(Bd)。(2)比特率——每秒传送多少个二进制位(或每秒传送二进制码元的个数),单位是b/s。

(3)数据传送速率(或字符传送速率)——每秒传送多少个字符(或单位时间内平均数据传移速率),单位是字符/秒。

43. 存储器的作用是什么?只读存储器和随机存储器有什么不同?

存储器具有记忆功能,用来存放数据和程序。计算机中的存储器主要有随机存储器

(RAM)和只读存储器(ROM)两种。随机存储器一般用来存放程序运行过程中的中间数

据,计算机掉电时数据不再保存。只读存储器一般用来存放程序,计算机掉电时信息不会

丢失。

44. MCS-51 存储器结构的主要特点是什么?程序存储器和数据存储器各有何不同?

MCS-51 单片机的存储器结构与一般微机存储器的配置方法不同,一般微机把程序和数

据共存同一存储空间,各存储单元对应惟一的地址。而MCS-51 的存储器把程序和数据的存

储空间严格区分开。

数据存储器用于存放程序运算的中间结果、状态标志位等。

45. MCS-51 单片机的P0~P3 四个I/O 端口在结构上有何异同?使用时应注意哪些事

项?

P0 口是一个8 位漏极开路型双向I/O 端口。

P1 口是一个内部带上拉电阻的8 位准双向I/O 端口。

P2 口也是一个内部带上拉电阻的8 位准双向I/O 端口

P3 口是一个内部带上拉电阻的8 位多功能双向I/O 端口。

在使用时应注意以下方面:

①P0~P3 都是准双向I/O 口,即CPU 在读取数据时,必须先向相应端口的锁存器写入

“1”。各端口名称与锁存器名称在编程时相同,均可用P0~P3 表示。当系统复位时,P0~P3

端口锁存器全为“1”,故可直接对其进行读取数据。

②P0 口每一输出位可驱动8 个LS 型TTL 负载,P0 口可作通用输入、输出端口使用,此

时,若要驱动NMOS 或其他拉电流负载时,需外接上拉电阻,才能使该位高电平输出有效。

在单片机进行外部存储器扩展时,P0 口必须作为地址/数据复用线使用,此时,不必外

接上拉电阻,P0 也不能作通用I/O 口使用。

③P1、P2、P3 口输出均接有内部上拉电阻,输入端无需外接上拉电阻,每一位输出可

以驱动4 个LS 型TTL 电路。

④P0、P2 口除可以作通用I/O 端口、以实现与外部进行数据交换外,更主要的是,当CPU 访问外部存储器时,CPU 将自动地把外部存储器的地址线信号(16 位)送P0、P2 口,作为地址总线(P0 口输出低8 位地址,P2 口输出高8 位地址),向外部存储器输出16 位存储单元地址。在控制信号作用下,该地址低8 位被锁存后,P0 口自动切换为数据总线,这时经P0 口可向外部存储器进行读、写数据操作.

46.位寻址和字节寻址如何区分?在使用时有何不同?

由寻址方式可以看出,不同的寻址方式所寻址的存储空间是不同的。正确地使用寻址方

式不仅取决于寻址方式的形式,而且取决于寻址方式所对应的存储空间。字节寻址必须是对8 位存储单元,位寻址的存储空间只能是片内RAM 的20H~2FH 字节地址中的所有位(位地址

为00H~7FH)和部分SFR 的位,决不能是该范围之外的任何单元的任何位。

47.为了提高汇编语言程序的效率,在编写时应注意哪些问题?

(1) 把要解决的问题化成一个个具有一定独立性的功能模块,各模块尽量采用子程序完

成其功能。

(2) 力求少用无条件转移指令,尽量采用循环结构。

(3) 对主要的程序段要下功夫精心设计,这样会收到事半功倍的效果。

(4) 能用8 位数据解决问题的就不要使用16 位数据。

(5) 累加器是信息传递的枢纽,在调用子程序时应通过累加器传送子程序的参数,通过

累加器向主程序传送返回参数。所以,在子程序中一般不把累加器推入堆栈。若需保护累加

器的内容时,应先把累加器的内容存入其他寄存器单元,然后再调用子程序。

(6)为了保证程序运行的安全可靠,应考虑使用软件抗干扰技术,如数字滤波技术、指

令冗余技术、软件陷井技术,用汇编语言程序实现这些技术,不需要增加硬件成本,可靠性高,稳定性好,方便灵活。

48.在MCS-51 单片机应用系统中,外接程序存储器和数据存储器的地址空间允许重叠而

不会发生冲突,为什么?外部I/O 接口地址是否允许与存储器地址重叠?为什么?

答案:

因为单片机访问外部程序存储器与访问外部数据存储器(包括外部I/O 口)时,会分别

产生与/ 两类不同的控制信号,因PSEN RD WR 此外接程序存储器和数据存储器的地址空间允许重叠而不会发生冲突。

外部扩展I/O 口占用数据存储器地址空间,与外部数据存储器统一编址,单片机用访问

外部数据存储器的指令来访问外部扩展I/O 口。因此外部I/O 接口地址是否允许与程序存储器地址重叠不允许与数据数据存储器地址重叠。

49.外部存储器的片选方式有几种?各有哪些特点?

答案:

外部存储器的片选方式有线选法和译码法两种。线选法的特点是连接简单,不必专门设

计逻辑电路,但是各个扩展芯片占有的空间地址不连续,因而地址空间利用率低。适用于扩

展地址空间容量不太大的场合。译码法的特点是在P2 口未被扩展芯片地址线占用的地址总

线数量相同的情况下,可以比线选法扩展更多的芯片,而且可以使各个扩展芯片占有的空间

地址连续,因而适用于扩展芯片数量多、地址空间容量大的复杂系统。

50.简述MCS-51 单片机CPU 访问外部扩展程序存储器的过程。

答案:

P0 口作为地址/数据复用的双向三态总线,用于输出程序存储器的低8 位地址或输入指

令,P2 口具有输出锁存功能,用于输出程序存储器的高8 位地址。当ALE 有效(高电平)

时,高8 位地址从P2 口输出,低8 位地址从P0 口输出,在ALE 的下降沿把P0 口输出的低

8 位地址锁存起来,然后在PSEN 有效(低电平)期间,选通外部程序存储器,将相应单元

的数据送到P0 口,CPU 在PSEN 上升沿完成对P0 口数据的采样。

51.简述MCS-51 单片机CPU 访问外部扩展数据存储器的过程。

答案:

第一个机器周期是从外部程序存储器读取MOVX 指令操作码,第二个机器周期才是执

行MOVX 指令访问外部数据存储器。在该周期中,若是读操作,则RD 信号有效(低电平),

P0 口变为输入方式,被地址信号选通的外部RAM 某个单元中的数据通过P0 口输入CPU;

若是写操作,则WR 信号有效(低电平),P0 口变为输出方式,CPU 内部数据通过P0 口写

入地址信号选通的外部RAM 的某个单元中。

52、请指出程序存储器中有特殊用途的几个单元,并说明它们的作用是什么?

答:程序存储器中有7个单元留作特殊用途。其作用如下:

0000H:单片机复位后,PC=0000H,即程序从0000H开始执行指令。

0003H:外部中断0入口地址。

000BH:定时器T0溢出中断入口地址。

0013H:外部中断1入口地址。

001BH:定时器T1溢出中断入口地址。

0023H:串行口中断入口地址。

002BH:定时器T2溢出或T2EX端负跳变中断入口地址,仅对52系列有用。

53、十进制调整指令DA A的功能是什么?其运作过程是怎样的?

答:功能是:对两个BCD变量相加后存放在累加器中的结果进行调整,使之成为一个正确的两位BCD 数。十进制调整所做的工作就是进行内部加法操作,其依据如下:

(1)、若AC标志为1,或BCD变量的个位数(低四位)大于9,则对此个位数进行加6调整。

(2)、若CY标志为1,或BCD变量的十位数(高四位)大于9,则对此十位数进行加6调整。

(3)、上述调整过程中,如果BCD码的最位产生进位,则CY置1,若无进位,则不对CY进行清零操作。这样,CY就成了两个BCD变量相加之和是否大于99的标志了。OV和AC位不受此指令的影响。

54、什么叫中断?CPU为什么要采用中断结构?

答:所谓中断,是指当计算机在执行正常的程序时,系统中出现一些急需CPU处理的异常情况或特殊请求,此时CPU暂时停止现在的程序,转去处理紧迫的事件,并在处理完毕后自动返回原来的正常程序继续运行。

引入中断之后,单片机具有以下的优点:

(1).CPU可以与外设实现同步工作。

(2).可以实时处理数据。

(3).实现对故障的自诊断。

55、单片机响应中断的条件和过程是怎样的?

答: 单片机响应中断的条件和过程是:中断源有中断请求,CPU允许所有中断源请求中断(EA=1),中断允许寄存器IE的相应位置"1"状态。这样,CPU在每个机器周期顺序采样每个中断源,并按优先级顺序查询中断标志。若查询到某一个中断标志为1时,如果没有被下述条件所阻止,CPU则在下一个机器周期的S1响应激活了的最高优先级中断请求。

(1).CPU正在处理相同的或更高优先级的中断。

(2).当前的机器周期不是所执行指令的最后一个机器周期。

(3).正在执行的指令是RETI或者是访问IE或IP的指令。若CPU正在执行RETI或者访问IE、IP,则至少要再执行一条指令CPU才会响应新的中断请求。

56.何谓单片机?单片机与一般微型计算机相比,具有哪些特点?

答:单片机是在一块集成电路上把CPU、存储器、定时器/计数器及多种形式的I/O接口集成在一起而构成的微型计算机。它与通用微型计算机相比,具有如下特点:

(1)单片机的程序存储器和数据存储器是分工的,前者为ROM,后者为RAM;

(2)采用面向控制的指令系统,控制功能强;

(3)多样化的I/O接口,多功能的I/O引脚;

(4)产品系列齐全,功能扩展性强;

(5)功能是通用的,像一般微处理机那样可广泛地应用在各个方面。

57 在各种系列的单片机中,片内ROM的配置有几种形式?用户应根据什么原则来选用?

答:各种类型的单片机片内程序存储器的配置形式主要有以下几种形式:

(1)掩膜(Msak)ROM型单片机:内部具有工厂掩膜编程的ROM,ROM中的程序只能由单片机制造厂家用掩膜工艺固化,用户不能修改ROM中的程序。例如:MCS—51系列的8051。

掩膜ROM单片机适合于大批量生产的产品。用户可委托芯片生产厂家采用掩膜方法将程序制作在芯片的ROM。

(2)EPROM型单片机:内部具有紫外线可擦除电可编程的只读存储器,用户可以自行将程序写入到芯片内部的EPROM中,也可以将EPROM中的信息全部擦除。擦去信息的芯片还可以再次写入新的程序,允许反复改写。例如:MCS—51系列的8751。

EPROM型单片机使用比较方便,但价格较高,适合于研制产品或结构要求简单的小批量产品。(3)无ROM型单片机:内部没有程序存储器,它必须连接程序存储器才能组成完整的应用系统。

例如:MCS—51系列的8031。

无ROM型单片机价格低廉,用户可根据程序的大小来选择外接程序存储器的容量。这种单片机扩展灵活,但系统结构较复杂。

(4)E2ROM型单片机:内部具有电可擦除叫可编程的程序存储器,使用更为方便。例如:MCS—51的派生型89C51单片机。

(5)OTP(One Time Programmable)ROM单片机:内部具有一次可编程的程序存储器,用户可以在编程器上将程序写入片内程序存储器中,程序写入后不能再改写。例如:NEC公司的μ

PD75P308GF—3B9。这种芯片的价格也较低。

58 SJMP(短转移)指令和AJMP(绝对转移)指令的主要区别。

前者提供了以SJMP的下一条指令的起始地址为中心的256字节范围的转移(-128~+127),后者的转移目标地址必须在与AJMP的下一条指令的第一字节相同的2KB区的程序储存器中。短转移方便了可重定位编码。SJMP方便了PC可重定位编码,但转移范围小。而ASJMP转移范围大,但存在跳区的限制,AJMP指令只能位于2KB区的最后2个字节处时,才可跳到下一个区去。因此用AJMP指令来代替SJMP指令是有条件的,也就是目标地址必须与它下面的指令存放地址在同一个2KB区域内。

59 8031的扩展储存器系统中,为什么P0口要接一个8位锁存器,而P2口却不接?

答:这是因为P0口是扩展储存器系统的多路低8位地址和数据总线,在访问外部存储器时,P0口分时用作输出外部储存器低8位地址和传送数据,为了在整个访问外部存储器期间,对外部存储器存在着有效的低8位地址信号,所以P0口需要外接一个地址锁存器。ALE信号就是用来把P0口输

出的地址字节锁存在这个外接的锁存器中,再从锁存器输出外部存储器的低8位地址。而P2口只用作扩展存储器系统的高8位地址线,并在整个访问外部存储器期间不变,所以不必外接地址锁存器。

60 在8031扩展系统中,外部程序存储器和数据存储器共用16位地址线和8位数据线,为什么两个存储空间不会发生冲突?

答:这是因为外部程序存储器和外部数据存储器所使用的控制信号不同。对外部程序存储器的选读通是用PSEN控制线,而对外部数据存储器的读/写控制是用RD和WR读、写控制线,所以不会发生地址冲突。

61 8031单片机需要外接程序存储器,实际上它还有多少条I/O线可以用?当使用外部存储器时,还剩下多少条I/O线可用?

答:8031系统必须外接程序促成器,原则上说,P0和P2口要用作数据和地址总线,所以只有P1和P3口可用作I/O口,共16条I/O线。在使用外部存储器时,除了占用P0和P2口外,还需要用P3口RD(P3.7)和WR(P3.6)两条控制线,所以这种情况下就只剩下14条I/O线可用了。

51单片机常用子程序汇总

目录 1、通过串口连续发送n个字节的数据 /*************************************************************** 模块功能:通过串口连续发送n个字节的数据 参数说明: s:待发送数据的首地址 n:要发送数据的字节数 ***************************************************************/ void SendD(unsigned char *s,unsigned char n) { unsigned char unX; if(n>0) { ES=0; // 关闭串口中断 for(unX=0;unX #include #define Nop() _nop_() //空指令

sbit SDA=P1^3; sbit SCL=P1^2; bit ACK; void Start_I2c() { SDA=1; Nop(); SCL=1; Nop(); Nop(); Nop(); Nop(); Nop(); SDA=0; Nop(); Nop(); Nop(); Nop(); Nop(); SCL=0; //钳住I2C总线,准备发送或接受数据Nop(); Nop(); } (2)结束总线函数 /*************************************************************** 模块功能:发送I2C总线结束条件 ***************************************************************/ void Stop_I2c() { SDA=0; Nop(); SCL=1; Nop(); Nop(); Nop(); Nop(); Nop(); SDA=1; Nop(); Nop(); Nop(); Nop();

51单片机汇编程序范例

16位二进制数转换成BCD码的的快速算法-51单片机2010-02-18 00:43在做而论道上篇博文中,回答了一个16位二进制数转换成BCD码的问题,给出了一个网上广泛流传的经典转换程序。 程序可见: http: 32.html中的HEX2BCD子程序。 .说它经典,不仅是因为它已经流传已久,重要的是它的编程思路十分清晰,十分易于延伸推广。做而论道曾经利用它的思路,很容易的编写出了48位二进制数变换成16位BCD码的程序。 但是这个程序有个明显的缺点,就是执行时间太长,转换16位二进制数,就必须循环16遍,转换48位二进制数,就必须循环48遍。 上述的HEX2BCD子程序,虽然长度仅仅为26字节,执行时间却要用331个机器周期。.单片机系统多半是用于各种类型的控制场合,很多时候都是需要“争分夺秒”的,在低功耗系统设计中,也必须考虑因为运算时间长而增加系统耗电量的问题。 为了提高整机运行的速度,在多年前,做而论道就另外编写了一个转换程序,程序的长度为81字节,执行时间是81个机器周期,(这两个数字怎么这么巧!)执行时间仅仅是经典程序的!.近来,在网上发现了一个链接: ,也对这个经典转换程序进行了改进,话是说了不少,只是没有实质性的东西。这篇文章提到的程序,一直也没有找到,也难辩真假。 这篇文章好像是选自某个著名杂志,但是在术语的使用上,有着明显的漏洞,不像是专业人员的手笔。比如说文中提到的:

“使用51条指令代码,但执行这段程序却要耗费312个指令周期”,就是败笔。51条指令代码,真不知道说的是什么,指令周期是因各种机型和指令而异的,也不能表示确切的时间。 .下面说说做而论道的编程思路。;----------------------------------------------------------------------- ;已知16位二进制整数n以b15~b0表示,取值范围为0~65535。 ;那么可以写成: ; n = [b15 ~ b0] ;把16位数分解成高8位、低8位来写,也是常见的形式: ; n = [b15~b8] * 256 + [b7~b0] ;那么,写成下列形式,也就可以理解了: ; n = [b15~b12] * 4096 + [b11~b0] ;式中高4位[b15~b12]取值范围为0~15,代表了4096的个数; ;上式可以变形为: ; n = [b15~b12] * 4000 + {[b15~b12] * (100 - 4) + [b11~b0]} ;用x代表[b15~b12],有: ; n =x * 4000 + {x * (100 - 4) + [b11~b0]} ;即: ; n =4*x (千位) + x (百位) + [b11~b0] - 4*x ;写到这里,就可以看出一点BCD码变换的意思来了。 ;;上式中后面的位:

51单片机实用汇编程序库(word)

51 单片机实用程序库 4.1 流水灯 程序介绍:利用P1 口通过一定延时轮流产生低电平 输出,以达到发光二极管轮流亮的效果。实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。 程序实例(LAMP.ASM) ORG 0000H AJMP MAIN ORG 0030H MAIN: 9 MOV A,#00H MOV P1,A ;灭所有的灯 MOV A,#11111110B MAIN1: MOV P1,A ;开最左边的灯 ACALL DELAY ;延时 RL A ;将开的灯向右边移 AJMP MAIN ;循环 DELAY: MOV 30H,#0FFH D1: MOV 31H,#0FFH D2: DJNZ 31H,D2 DJNZ 30H,D1 RET END 4.2 方波输出 程序介绍:P1.0 口输出高电平,延时后再输出低电 平,循环输出产生方波。实际应用中例如:波形发生器。 程序实例(FAN.ASM): ORG 0000H MAIN: ;直接利用P1.0 口产生高低电平地形成方波////////////// ACALL DELAY SETB P1.0 ACALL DELAY 10 CLR P1.0 AJMP MAIN ;////////////////////////////////////////////////// DELAY: MOV R1,#0FFH DJNZ R1,$ RET

五、定时器功能实例 5.1 定时1 秒报警 程序介绍:定时器1 每隔1 秒钟将p1.o 的输出状态改变1 次,以达到定时报警的目的。实际应用例如:定时报警器。程序实例(DIN1.ASM): ORG 0000H AJMP MAIN ORG 000BH AJMP DIN0 ;定时器0 入口 MAIN: TFLA G EQU 34H ;时间秒标志,判是否到50 个 0.2 秒,即50*0.2=1 秒 MOV TMOD,#00000001B;定时器0 工作于方式 1 MOV TL0,#0AFH MOV TH0,#3CH ;设定时时间为0.05 秒,定时 20 次则一秒 11 SETB EA ;开总中断 SETB ET0 ;开定时器0 中断允许 SETB TR0 ;开定时0 运行 SETB P1.0 LOOP: AJMP LOOP DIN0: ;是否到一秒//////////////////////////////////////// INCC: INC TFLAG MOV A,TFLAG CJNE A,#20,RE MOV TFLAG,#00H CPL P1.0 ;////////////////////////////////////////////////// RE: MOV TL0,#0AFH MOV TH0,#3CH ;设定时时间为0.05 秒,定时 20 次则一秒 RETI END 5.2 频率输出公式 介绍:f=1/t s51 使用12M 晶振,一个周期是1 微秒使用定时器1 工作于方式0,最大值为65535,以产生200HZ 的频率为例: 200=1/t:推出t=0.005 秒,即5000 微秒,即一个高电

51单片机汇编指令速查表

51单片机汇编指令速查表 指令格式功能简述字节数周期 一、数据传送类指令 MOV A, Rn 寄存器送累加器 1 1 MOV Rn,A 累加器送寄存器 1 1 MOV A ,@Ri 内部RAM单元送累加器 1 1 MOV @Ri ,A 累加器送内部RAM单元 1 1 MOV A ,#data 立即数送累加器 2 1 MOV A ,direct 直接寻址单元送累加器 2 1 MOV direct ,A 累加器送直接寻址单元 2 1 MOV Rn,#data 立即数送寄存器 2 1 MOV direct ,#data 立即数送直接寻址单元 3 2 MOV @Ri ,#data 立即数送内部RAM单元 2 1 MOV direct ,Rn 寄存器送直接寻址单元 2 2 MOV Rn ,direct 直接寻址单元送寄存器 2 2 MOV direct ,@Ri 内部RAM单元送直接寻址单元 2 2 MOV @Ri ,direct 直接寻址单元送内部RAM单元 2 2 MOV direct2,direct1 直接寻址单元送直接寻址单元 3 2 MOV DPTR ,#data16 16位立即数送数据指针 3 2 MOVX A ,@Ri 外部RAM单元送累加器(8位地址) 1 2 MOVX @Ri ,A 累加器送外部RAM单元(8位地址) 1 2 MOVX A ,@DPTR 外部RAM单元送累加器(16位地址) 1 2 MOVX @DPTR ,A 累加器送外部RAM单元(16位地址) 1 2 MOVC A ,@A+DPTR 查表数据送累加器(DPTR为基址) 1 2 MOVC A ,@A+PC 查表数据送累加器(PC为基址) 1 2 XCH A ,Rn 累加器与寄存器交换 1 1 XCH A ,@Ri 累加器与内部RAM单元交换 1 1 XCHD A ,direct 累加器与直接寻址单元交换 2 1 XCHD A ,@Ri 累加器与内部RAM单元低4位交换 1 1 SWAP A 累加器高4位与低4位交换 1 1 POP direct 栈顶弹出指令直接寻址单元 2 2 PUSH direct 直接寻址单元压入栈顶 2 2 二、算术运算类指令 ADD A, Rn 累加器加寄存器 1 1

51单片机汇编指令集(附记忆方法)

51单片机汇编指令集 一、数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送; MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; 二、算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1; DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; 三、逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap) 低4位与高4位交换; 四、控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移; AJMP(Absolute Jump)绝对转移; LJMP(Long Jump)长转移; CJNE (Compare Jump if Not Equal)比较不相等则转移;

51单片机实用子程序(汇编)

《MCS-51单片机实用子程序库(96年版)》 周航慈 目前已有若干版本的子程序库公开发表,它们各有特色。笔者在1988年也编制了两个子程序库(定点子程序库和浮点子程序库),并在相容性、透明性、容错性和算法优化方 面作了一些工作。本程序库中的开平方算法为笔者研究的快速逼近算法,它能达到牛顿迭代法同样的精度,而速度加快二十倍左右,超过双字节定点除法的速度。经过八年来全国广大用户的实际使用,反馈了不少信息,陆续扩充了一些新的子程序,纠正了一些隐含错误,成为现在这个最新版本。 本子程序库对《单片机应用程序设计技术》一书附录中的子程序库作了重大修订:(1)按当前流行的以 IBM PC 为主机的开发系统对汇编语言的规定,将原子程序库的标号和位地址进行了调整,读者不必再进行修改,便可直接使用。 (2)对浮点运算子程序库进行了进一步的测试和优化,对十进制浮点数和二进制浮点数的相互转换子程序进行了彻底改写,提高了运算精度和可靠性。 (3)新增添了若干个浮点子程序(传送、比较、清零、判零等),使编写数据处理 程序的工作变得更简单直观。 在使用说明中开列了最主要的几项:标号、入口条件、出口信息、影响资源、堆栈 需求,各项目的意义请参阅《单片机应用程序设计技术》第六章 6.3.7 节的内容。程序 清单中开列了四个栏目:标号、指令、操作数、注释。为方便读者理解,注释尽力详细。 子程序库的使用方法如下: 1.将子程序库全部内容链接在应用程序之后,统一编译即可。优点是简单方便,缺点是程序太长,大量无关子程序也包含在其中。 2.仅将子程序库中的有关部分内容链接在应用程序之后,统一编译即可。有些子程序需要调用一些低级子程序,这些低级子程序也应该包含在内。优点是程序紧凑,缺点是需要对子程序库进行仔细删节。 (一)MCS-51定点运算子程序库及其使用说明 定点运算子程序库文件名为DQ51.ASM,为便于使用,先将有关约定说明如下: 1.多字节定点操作数:用[R0]或[R1]来表示存放在由R0或R1指示的连续单元中的数据。地址小的单元存放数据的高字节。例如:[R0]=123456H,若(R0)=30H,则(30H)=12H,(31H)=34H,(32H)=56H。 2.运算精度:单次定点运算精度为结果最低位的当量值。 3.工作区:数据工作区固定在PSW、A、B、R2~R7,用户只要不在工作区中存放无 关的或非消耗性的信息,程序就具有较好的透明性。

51单片机常用汇编语言助记符英文全称

51单片机常用汇编语言助记符英文全称 (1)数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; (2)算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1;DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; (3)逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零;CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap) 低4位与高4位交换; (4)控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用;

51单片机浮点运算子程序库

51单片机浮点运算子程序库 时间:2007-11-14 来源: 作者: 点击:4020 字体大小:【大中小】 1: FSDT 功能:浮点数格式化 2: FADD 功能:浮点数加法 3: FSUB 功能:浮点数减法 4: FMUL 功能:浮点数乘法 5: FDIV 功能:浮点数除法 6: FCLR 功能:浮点数清零 7: FZER 功能:浮点数判零 8: FMOV 功能:浮点数传送 9: FPUS 功能:浮点数压栈 10: FPOP 功能:浮点数出栈 11: FCMP 功能:浮点数代数值比较不影响待比较操作数 12: FABS 功能:浮点绝对值函数 13: FSGN 功能:浮点符号函数 14: FINT 功能:浮点取整函数 15: FRCP 功能:浮点倒数函数 16: FSQU 功能:浮点数平方 17: FSQR 功能:浮点数开平方快速逼近算法 18: FPLN 功能:浮点数多项式计算 19: FLOG 功能:以10为底的浮点对数函数 20: FLN 功能:以e为底的浮点对数函数 21: FE10 功能:以10为底的浮点指数函数 22: FEXP 功能:以e为底的浮点指数函数 23: FE2 功能:以2为底的浮点指数函数 24: DTOF 功能:双字节十六进制定点数转换成格式化浮点数 25: FTOD 功能:格式化浮点数转换成双字节定点数 26: BTOF 功能:浮点BCD码转换成格式化浮点数 27: FTOB 功能:格式化浮点数转换成浮点BCD码 28: FCOS 功能:浮点余弦函数 29: FSIN 功能:浮点正弦函数 30: FATN 功能:浮点反正切函数 31: RTOD 功能:浮点弧度数转换成浮点度数 32: DTOR 功能:浮点度数转换成浮点弧度数 为便于读者使用本程序库,先将有关约定说明如下: 1.双字节定点操作数:用[R0]或[R1]来表示存放在由R0或R1指示的连续单元中的数据,地址小的单元存放高字节?如果[R0]=1234H,若(R0)=30H,则(30H)=12H,(31H)=34H? 2.二进制浮点操作数:用三个字节表示,第一个字节的最高位为数符,其余七位为阶码(补码形式),第二字节为尾数的高字节,第三字节为尾数的低字节,尾数用双字节纯小数(原码)来表示?当尾数的最高位为1时,便称为规格化浮点数,简称操作数?在程序说明中,也用[R0]或[R1]来表示R0或R1指示的浮点操作数,例如:当[R0]=-6.000时,则二进制浮点数表示为83C000H?若(R0)=30H,则 (30H)=83H,(31H)=0C0H,(32H)=00H? 3.十进制浮点操作数:用三个字节表示,第一个字节的最高位为数符,其余七位为阶码(二进制补码形式),第二字节为尾数的高字节,第三字节

51单片机实用汇编程序库

51 单片机实用程序库 4、1 流水灯 程序介绍:利用P1 口通过一定延时轮流产生低电平 输出,以达到发光二极管轮流亮得效果。实际应用中例如: 广告灯箱彩灯、霓虹灯闪烁。 程序实例(LAMP、ASM) ORG 0000H AJMP MAIN ORG 0030H MAIN: 9 MOV A,#00H MOV P1,A;灭所有得灯 MOV A,#11111110B MAIN1: MOV P1,A;开最左边得灯 ACALL DELAY ;延时 RL A ;将开得灯向右边移 AJMP MAIN ;循环 DELAY: MOV 30H,#0FFH D1: MOV 31H,#0FFH D2: DJNZ 31H,D2 DJNZ30H,D1 RET END 4、2 方波输出 程序介绍:P1、0 口输出高电平,延时后再输出低电 平,循环输出产生方波。实际应用中例如:波形发生器。 程序实例(FAN、ASM): ORG 0000H MAIN: ;直接利用P1、0 口产生高低电平地形成方波////////////// ACALL DELAY SETB P1、0 ACALL DELAY 10 CLR P1、0 AJMP MAIN ;////////////////////////////////////////////////// DELAY: MOV R1,#0FFH DJNZ R1,$ RET

五、定时器功能实例 5、1 定时1 秒报警 程序介绍:定时器1 每隔1 秒钟将p1、o得输出状态改变1 次,以达到定时报警得目得。实际应用例如:定时报警器。 程序实例(DIN1、ASM): ORG 0000H AJMP MAIN ORG 000BH AJMP DIN0 ;定时器0入口 MAIN: TFLA G EQU34H ;时间秒标志,判就是否到50个 0、2 秒,即50*0、2=1 秒 MOVTMOD,#00000001B;定时器0 工作于方式 1 MOVTL0,#0AFH MOV TH0,#3CH ;设定时时间为0、05 秒,定时 20 次则一秒 11 SETB EA;开总中断 SETB ET0;开定时器0 中断允许 SETBTR0 ;开定时0 运行 SETB P1、0 LOOP: AJMP LOOP DIN0: ;就是否到一秒//////////////////////////////////////// INCC:INC TFLAG MOV A,TFLAG CJNE A,#20,RE MOV TFLAG,#00H CPLP1、0 ;////////////////////////////////////////////////// RE: MOV TL0,#0AFH MOV TH0,#3CH ;设定时时间为0、05秒,定时 20 次则一秒 RETI END 5、2 频率输出公式 介绍:f=1/t s51 使用12M 晶振,一个周期就是1微秒使用定时器1 工作于方式0,最大值为65535,以产生200HZ 得频率为 例: 200=1/t:推出t=0、005秒,即5000微秒,即一个高电

51单片机汇编指令集(附记忆方法)

51 单片机汇编指令集 一、数据传送类指令( 7 种助记符) MOV(英文为Move :对内部数据寄存器RAM 和特殊功能寄存器SFR 的数据进行 传送; MOV Q Move Code )读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部 RAM 勺数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; 二、算术运算类指令( 8 种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加 1; DEC(Decrement) 减 1; MUL(Multiplication 、Multiply) 乘法; DIV(Division 、Divide) 除法; 三、逻辑运算类指令( 10 种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) SWAP (Swap) 低 4 位与高 4 位交换; 四、控制转移类指令( 17 种助记符) ACALL ( Absolute subroutine Call )子程序绝对调用; LCALL ( Long subroutine Call )子程序长调用; RET ( Return from subroutine )子程序返回; RETI ( Return from Interruption )中断返回; SJMP ( Short Jump )短转移; AJMP ( Absolute Jump )绝对转移; LJMP( Long Jump )长转移; CJNE (Compare Jump if Not Equal) 比较不相等则转移; DJNZ (Decreme nt Jump if Not Zero) 减1后不为0则转移; JZ (Jump if Zero) 结果为0则转移; JNZ (Jump if Not Zero) 结果不为0则转移; JC (Jump if the Carry flag is set) 有进位则转移; JNC (Jump if Not Carry) 无进位则转移; JB (Jump if the Bit is set) 位为1则转移; JNB (Jump if the Bit is Not set) 位为0则转移; 带进位循环左移; 带进位循环右移;

汇编51单片机考试常见试题

汇编51单片机考试常见试题

一、填空题 1.单片机是把中央处理器、存储器、定时器/计数器以及I/O接口电路等主要计算机部件集成在一块集成电路芯片上的微型计算机。 2.除了单片机这一名称之外,单片机还可称为微控制器、嵌入式控制器。 3.计算机的系统总线有地址总线、控制总线和数据总线。 4.80C51单片机基本型内部RAM有 128 个字节单元,这些单元可以分为三个用途不同的区域,一是工作寄存器区、二是位寻址区、三是数据缓冲区。5.8051单片机有2 个16位定时/计数器。 6.单片机存储器的主要功能是存储程序和数据。80C51含4 KB掩膜ROM。7.80C51在物理上有4个独立的存储器空间。 8.通常、单片机上电复位时PC= 0000H,SP=07H;而工作寄存器则缺省采用第00 组,这组寄存器的地址范围是从00H~ 07H。 9.8051的堆栈是向地址的高端生成的。入栈时SP先加1,再压入数据。10.使用8031芯片时,需将/EA引脚接低电平,因为其片内无程序存储器。11.MCS-51特殊功能寄存器只能采用直接寻址方式。 12.汇编语言中可以使用伪指令,它们不是真正的指令,只是用来对汇编过程进行某种控制。 13.半导体存储器的最重要的两个指标是存储容量和存储速度。 14.当PSW4=1,PSW3=0时,工作寄存器Rn,工作在第2组。 15.在8051单片机中,由 2 个振荡(晶振)周期组成1个状态(时钟)周期,由 6个状态周期组成1个机器周期。 16.假定累加器A的内容30H,执行指令:1000H:MOVC A,@A+PC后,把程序存储器1031H单元的内容送累加器A中。 17.MCS-51单片机访问外部存储器时,利用ALE信号锁存来自P0口的低8位地址信号。 18.内部RAM中,位地址为30H的位,该位所在字节的字节地址为26H。19.若A中的内容为63H,那么,P标志位的值为0。 20.在基址加变址寻址方式中,以累加器A作变址寄存器,以DPTR或PC作基址寄存器。 21.指令格式是由操作码和操作数所组成,也可能仅由操作码组成。 22.通过堆栈操作实现子程序调用,首先就要把PC的内容入栈,以进行断点保护。调用返回时,再进行出栈保护,把保护的断点送回到PC。 23.MCS-51单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为MCS-51的PC是16位的,因此其寻址的范围为64KB。 24.在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的地址。 25.假定累加器A中的内容为30H,执行指令1000H:MOVC A,@A+PC 后,把程序存储器1031H单元的内容送入累加器A中。 26.12根地址线可寻址4 KB存储单元。 27.:假定A=55H,R3=0AAH,在执行指令ANL A,R3后,A=00H,R3=0AAH。28.MCS-51的P0口作为输出端口时,每位能驱动8个LSTTL负载。 29.MCS-51有4个并行I/O口,其中P1~P3是准双向口,所以由输出转输入时必须先写入“1”。 30.MCS-51的堆栈是软件填写堆栈指针临时在片内数据存储器内开辟的区域。

针对常用51单片机下载程序问题做下详解

针对常用51单片机下载程序问题做下详解 目前为止,接触单片机已有不少,从选择元器件、原理图、PCB、电路硬件调试、软件开发也算小有心得。 单片机软件开发里面第一步当属下载程序了,如果这一步都有问题,那么后面的一切便无从谈起,记得当初刚接触单片机时,对于下载电路方法及原理也是一头雾水。好在随着经验的积累以及自己的努力探求,现在对此问题算是有了点点自己的经验理解。故今天在此针对常用51单片机下载程序问题做下详解,以求新手们少走弯路。 原理 单片机的TXD、RXD是TTL电平,所以你得万变不离其宗的将其它信号转成TTL电平,只有这样给单片机下载程序才有可能成功!其中CH340、PL2303等芯片是直接将USB信号转换为TTL电平,而MAX232等芯片是将TTL转换为RS232信号或者将RS232信号转换为TTL.下面请看利用这种原理的两种常用方法: 方法一: 请看图一,这是我们最常见的单片机下载电路了,其中从②到⑥属于大家常用的USB转串口线,用这种方案的好处是,如果自己的PC带有串口(可能很老的机器没有USB接口),那么就可以直接给单片机开发板下载程序,因为采用这种方法的开发板必定带有串口接口嘛。当然,如果PC仅有USB接口而不带串口,那么只能找根USB转串口线了(其电路原理就是图中②到⑥),这里我推荐大家使用采用CH340芯片的USB转串口线,而不要采用PL2303的USB转串口线,因为PL2303价钱便宜所以山寨的水货较多,这会导致下载电路不稳定,甚至无法正常下载。同时此方案的坏处是电路板上必定要做一个9针串口接口(太巨大了),这必将增加了电路PCB的面积,当然也就增加了成本啦!(顺便发表下个人见解:那个9针接口实在太丑,又大又重,无形中便降低了自己的设计档次,哈哈。所以不推荐这种方法!) 请看图二,这是我经常采用的单片机下载电路。实践证明效果非常好,几乎没出过任何问

(完整版)51单片机汇编指令(全)

指令中常用符号说明 Rn当前寄存器区的8个工作寄存器R0~R7(n=0~7) Ri当前寄存器区可作为地址寄存器的2个工作寄存器R0和R1(i=0,1) Direct8位内部数据寄存器单元的地址及特殊功能寄存器的地址 #data表示8位常数(立即数) #data16表示16位常数 Add16表示16位地址 Addr11表示11位地址 Rel8位代符号的地址偏移量 Bit表示位地址 @间接寻址寄存器或基址寄存器的前缀 ( )表示括号中单元的内容 (( ))表示间接寻址的内容 指令系统 数据传送指令(8个助记符) 助记符中英文注释 MOV Move 移动 MOV A , Rn;Rn→A,寄存器Rn的内容送到累加器A MOV A , Direct;(direct)→A,直接地址的内容送A MOV A ,@ Ri;(Ri)→A,RI间址的内容送A MOV A , #data;data→A,立即数送A MOV Rn , A;A→Rn,累加器A的内容送寄存器Rn MOV Rn ,direct;(direct)→Rn,直接地址中的内容送Rn MOV Rn , #data;data→Rn,立即数送Rn MOV direct , A;A→(direct),累加器A中的内容送直接地址中 MOV direct , Rn;(Rn)→direct,寄存器的内容送到直接地址 MOV direct , direct;(direct)→direct,直接地址的内容送到直接地址 MOV direct , @Ri;((Ri))→direct,间址的内容送到直接地址 MOV direct , #data;8位立即数送到直接地址中 MOV @Ri , A;(A)→@Ri,累加器的内容送到间址中 MOV @Ri , direct;direct→@Ri,直接地址中的内容送到间址中 MOV @Ri , #data; data→@Ri ,8位立即数送到间址中 MOV DPTR , #data16;data16→DPTR,16位常数送入数据指针寄存器,高8位送入DPH,低8位送入DPL中(单片机中唯一一条16位数据传送指令) (MOV类指令共16条)

MCS-51单片机实用子程序库

《MCS-51单片机实用子程序库(96年版)》 周航慈 目前已有若干版本的子程序库公开发表,它们各有特色。笔者在1988年也编制了两个 子程序库(定点子程序库和浮点子程序库),并在相容性、透明性、容错性和算法优化方 面作了一些工作。本程序库中的开平方算法为笔者研究的快速逼近算法,它能达到牛顿迭代法同样的精度,而速度加快二十倍左右,超过双字节定点除法的速度。经过八年来全国广大用户的实际使用,反馈了不少信息,陆续扩充了一些新的子程序,纠正了一些隐含错误,成为现在这个最新版本。 本子程序库对《单片机应用程序设计技术》一书附录中的子程序库作了重大修订:(1)按当前流行的以IBM PC 为主机的开发系统对汇编语言的规定,将原子程序库 的标号和位地址进行了调整,读者不必再进行修改,便可直接使用。 (2)对浮点运算子程序库进行了进一步的测试和优化,对十进制浮点数和二进制浮点数的相互转换子程序进行了彻底改写,提高了运算精度和可靠性。 (3)新增添了若干个浮点子程序(传送、比较、清零、判零等),使编写数据处理 程序的工作变得更简单直观。 在使用说明中开列了最主要的几项:标号、入口条件、出口信息、影响资源、堆栈 需求,各项目的意义请参阅《单片机应用程序设计技术》第六章6.3.7节的内容。程序 清单中开列了四个栏目:标号、指令、操作数、注释。为方便读者理解,注释尽力详细。 子程序库的使用方法如下: 1.将子程序库全部内容链接在应用程序之后,统一编译即可。优点是简单方便,缺 点是程序太长,大量无关子程序也包含在其中。 2.仅将子程序库中的有关部分内容链接在应用程序之后,统一编译即可。有些子程序需要调用一些低级子程序,这些低级子程序也应该包含在内。优点是程序紧凑,缺点是需要对子程序库进行仔细删节。 (一) MCS-51定点运算子程序库及其使用说明 定点运算子程序库文件名为DQ51.ASM,为便于使用,先将有关约定说明如下: 1.多字节定点操作数:用[R0]或[R1]来表示存放在由R0或R1指示的连续单元中的数据。地址小的单元存放数据的高字节。例如:[R0]=123456H,若(R0)=30H,则(30H)=12H, (31H)=34H,(32H)=56H。 2.运算精度:单次定点运算精度为结果最低位的当量值。 3.工作区:数据工作区固定在PSW、A、B、R2~R7,用户只要不在工作区中存放无 关的或非消耗性的信息,程序就具有较好的透明性。

51单片机常用数码管显示程序

51单片机常用数码管显示程序---之汇编篇 2010-07-21 03:35:46| 分类:单片机| 标签:51单片机数码管汇编程序|字号大中小订阅一)显示数据缓存寄存器70H,71H,72H,73H,74H,75H,76H,77H。 START: MOV 70H,#1 MOV 71H,#2 MOV 72H,#3 MOV 73H,#4 MOV 74H,#5 MOV 75H,#6 MOV 76H,#7 MOV 77H,#8 ACALL DISP AJMP START DISP: MOV R1,#70H MOV R5,#0FEH PLAY: MOV P0,#0FFH MOV A,R5 ANL P2,A

MOV A,@R1 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P0,A LCALL DL1MS INC R1 MOV A,P2 JNB ACC.7,ENDOUT RL A MOV R5,A MOV P2,#0FFH AJMP PLAY ENDOUT: MOV P2,#0FFH MOV P0,#0FFH RET TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;共阳数码管 ; 1MS延时子程序,LED显示用 DL1MS: MOV R6,#14H ; DL1: MOV R7,#19H DL2: DJNZ R7,DL2 DJNZ R6,DL1 RET END 二)

START:;ORG 00H MOV 70H,#0C0H;0 MOV 71H,#0F9H;1 MOV 72H,#0A4H;2 MOV 73H,#0B0H;3 MOV 74H,#99H ;4 MOV 75H,#92H ;5 MOV 76H,#82H ;6 MOV 77H,#0F8H;7 ACALL DISP AJMP START DISP: MOV P0,70H CLR P2.7 ACALL DL1MS SETB P2.7 MOV P0,71H CLR P2.6 ACALL DL1MS SETB P2.6 MOV P0,72H CLR P2.5 ACALL DL1MS SETB P2.5 MOV P0,73H CLR P2.4 ACALL DL1MS SETB P2.4 MOV P0,74H CLR P2.3 ACALL DL1MS SETB P2.3 MOV P0,75H CLR P2.2 ACALL DL1MS SETB P2.2 MOV P0,76H CLR P2.1 ACALL DL1MS SETB P2.1 MOV P0,77H CLR P2.0 ACALL DL1MS SETB P2.0 RET

51单片机汇编指令

按功能分为五大类: (1)数据传送类指令(7种助记符) MOV(Move)对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送;MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; (2)算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1; DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; (3)逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap) 低4位与高4位交换; (4)控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移; AJMP(Absolute Jump)绝对转移; LJMP(Long Jump)长转移; CJNE (Compare Jump if Not Equal)比较不相等则转移; DJNZ (Decrement Jump if Not Zero)减1后不为0则转移; JZ (Jump if Zero)结果为0则转移; JNZ (Jump if Not Zero) 结果不为0则转移;

51单片机指令

3.2 分类指令 在介绍各条分类指令之前,将指令中的操作数及注释中的符号说明如下。 Rn:当前指定的工作寄存器组中的Ro-R7(其中n=0,1,2,…,7)。 Ri:当前指定的工作寄存器组中的RO,R1(其中i=0,1)。 (Ri):Ri间址寻址指定的地址单元。 ((Ri)):Ri间址寻址指定地址单元中的内容。 dir:8位直接字节地址(在片内RAM和SFR存储空间中)。 #data8:8位立即数。 #datal6:16位立即数。 addrl6:16位地址值。 addrll:11位地址值。 bit:位地址(在位地址空间中)。 rel:相对偏移量(一字节补码数)。 下面介绍各条分类指令的主要功能和操作,详细的指令操作说明及机器码形式可见附录。 3.2.1数据传送与交换类指令 共有28条指令,包括以A,Rn,DPTR,直接地址单元,间接地址单元为目的的操作数的指令;访问外部RAM的指令;读程序存储器的指

令;数据交换指令以及准栈操作指令。 9.堆栈操作 PUSH dir ;SP十1-6P,(dir)一(SP)

POP dir ;((SP))一dir,SP-1--P , 例1 SP=07H,(35H)=55H,指令PUSH 35H执行后,55H送入08H地址单元,SP= 08H。 例2 SP=13H,(13H)= 1FH,指令POP 25H执行后,1FH压入25H地址单元,SP此时为12H。 综合例 把片内RAM中50H地址单元中的内容与40H地址单元中的内容互换。方法一(直接地址传送法): MOV A ,50H 数据传送与交换类指令是各类指令中数量最多、使用最频繁的一类指令,编程时应能十分熟练地灵活运用

相关文档
相关文档 最新文档