3 AT89C51指令系统与汇编语言程序设计
- 格式:ppt
- 大小:1.14 MB
- 文档页数:140


第3章89C51单片机汇编语言简介教学目标本章主要介绍89C51单片机的寻址方式、指令系统、基本程序结构及汇编语言程序的编写,并给出了两个简单的应用实例。
通过本章节的学习,读者应初步掌握89C51单片机汇编语言的基本指令,并能够完成一些简单程序的编写和调试。
任务导入:基于汇编语言的静态LED显示系统的实现:利用89C51单片机的I/O端口驱动一个共阳极数码管,在数码管上循环显示0-9数字,时间间隔0.5秒。
任务分析要实现用一个数码管循环显示数字0~9的功能,我们可把数码管的段选线连接到单片的I/O口上,再通过程序让单片机的I/O口分时输出0~9对应的段码就可以了。
单片机的程序又如何编写呢?通过本章的学习,就可以用单片机的汇编语言让数码管按照要求进行显示。
任务必备知识3.1 89C51单片机指令系统3.1.1 89C51单片机指令分类89C51单片机指令系统共有111条指令。
这些指令可按不同方法进行分类:1.按字节数分单字节指令(49条)、双字节指令(45条)、三字节指令(17条)。
2.按指令的执行时间分单机器周期指令(64条)、双机器周期指令(45条)、四机器周期指令(2条)。
3.按指令的功能分数据传送指令(28条)、算术运算指令(24条)、逻辑运算指令(25条)、控制转移指令(17条)、位操作指令(17条)。
指令一般由两部分组成,即操作码和操作数。
在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写是相当有用的。
Rn——当前选中的寄存器区的8个工作寄存器R0—R7(n=0-7)。
Ri——当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)direct—内部数据存储单元的8位地址。
包含0—127(255)内部存储单元地址和特殊功能寄存地址。
#data—指令中的8位常数。
#data16—指令中的16位常数。
addr16—用于LCALL和LJMP指令中的16目的地地址,目的地址的空间为64kB程序存储器地址。
89c51计数器汇编语言89C51是一种常用的单片机,它采用汇编语言进行编程。
在89C51中,计数器是一种非常重要的功能,它可以用来实现各种计数任务。
本文将介绍89C51计数器的使用方法和一些常见的应用场景。
首先,我们需要了解89C51中计数器的基本原理。
89C51有两个8位计数器,分别是T0和T1。
这两个计数器可以通过特定的寄存器进行配置和控制。
在89C51中,计数器可以工作在两种模式下:定时器模式和计数器模式。
在定时器模式下,计数器可以根据设定的时间间隔自动进行计数。
我们可以通过设置相关的寄存器来控制计数器的工作频率和计数范围。
例如,我们可以将T0计数器设置为10ms,并且设置计数范围为0-255。
这样,每隔10ms,T0计数器就会自动加1,当计数器达到255时,会产生一个中断信号。
在计数器模式下,计数器可以根据外部输入信号进行计数。
我们可以将外部信号连接到T0或T1引脚上,当信号发生变化时,计数器就会自动加1或减1。
这种模式下,计数器可以用来实现各种计数任务,例如计算脉冲数量、测量时间间隔等。
接下来,我们将介绍一些常见的89C51计数器的应用场景。
首先是脉冲计数。
我们可以将外部脉冲信号连接到T0或T1引脚上,通过计数器来统计脉冲的数量。
例如,我们可以将T0设置为计数模式,当外部信号发生一个脉冲时,T0计数器就会加1。
通过读取计数器的值,我们就可以知道脉冲的数量。
其次是测量时间间隔。
我们可以使用定时器模式来测量两个事件之间的时间间隔。
例如,我们可以将T1设置为定时器模式,每隔一段时间产生一个中断信号。
当第一个事件发生时,我们可以启动T1计数器,当第二个事件发生时,我们可以停止T1计数器。
通过读取计数器的值,我们就可以得到两个事件之间的时间间隔。
最后是频率测量。
我们可以使用计数器模式来测量外部信号的频率。
例如,我们可以将外部信号连接到T0引脚上,当信号发生一个周期时,T0计数器就会加1。
通过读取计数器的值,我们就可以得到外部信号的频率。