搜档网
当前位置:搜档网 › 单片机快速入门—51 单片机综合学习系统

单片机快速入门—51 单片机综合学习系统

单片机快速入门—51 单片机综合学习系统
单片机快速入门—51 单片机综合学习系统

单片机快速入门——使用51 单片机综合

学习系统

笔者曾在2005—2006 年间写了用增强型51 实验板学习51 单片机知识的连载教程,受到了广大用户的赞同与好评,也让很多单片机初学者能够快速跨入单片机的大门。为此,我们吸取了以往的经验,特地为初学者朋友设计了一款51 单片机综合学习系统,集编程,仿真,实验三大功能于一体,功能更强大,性能更稳定,使用更方便,接口齐全,扩展性灵活,可做实验多达几十项,试验单元功能转换实现了无跳线的电子切换,功能模块的切换只需轻触按键即可。如图1 所示。下面,我们来结合51 单片机综合学习系统这个学习平台,以理论与实践相结合的方式,使广大单片机初学者朋友能够以最快的速度入门,使我们知道单片机开发的整体流程是怎么样的。

粗略地讲,单片机开发分为三个阶段,分别是:仿真、烧写、实验验证。仿真用来提高我们的软件开发效率,实现芯片的在线仿真,一听到仿真器大家都会想到一个贵字,但我们提供的仿真模块相信大部分朋友都可以承受,以下文中我们用来仿真AT89S51 型号的单片机,事实上51 内核的单片机芯片,我们都可以用该仿真器来仿真,在Keil软件中选择好CPU 即可。编程就是将我们在PC 机上仿真调试成功后的程序烧写至单片机芯片中去,以完成程序的固化工作,现在,Atmel 公司推出了全新的S 系列51 单片机,其功能与稳定性都超于往日的C 系列单片机,重要的是,S 系列的单片机支持了ISP 下载功能,因此,51 单片机综合学习系统通过ISP 的方式进行在线下载程序,烧写芯片非常方便。对于实验,板载资源非常丰富,可做实验有:8 位LED 数码管、32 路LED、4x4 矩阵键盘、4 个直控键盘、蜂鸣器喇叭、继电器试验、I2C 总线接口、SPI 总线接口、160X 液晶屏、128X64、红外接收头接口、支持PS/2 接口的104 键标准键盘、步进电机驱动接口、ADC0832 模/数转换接口、PC817 光电耦合器、串行时钟芯片DS1302、温度传感器DS18B20 接口、RS232 串口通讯、外扩展接口以便外接更多的实验资源。以下我们将与51 单片机综合学习系统相结合来讲述具体的实践学习过程。我们的第一个实验是要用单片机点亮实验板上的第一只LED 发光管。想用单片机来完成一些智能化的控制,这个是最简单的一个程序例子,以给大家一个感性的认识。

我们的实验板上共有32 个LED 发光二极管,分别与单片机的P0、

P1、P2、P3 口相连,每个P 口8 个LED。现在我们就来点亮第一个发光管,即与P1.0 脚相连的那个发光管。首先,我们将SST89E64RD 仿真模块插到学习板上,把串口线的一头与学习板相连,另一头插至计算机的COM 口上,然后,将9V 外接电源接头或USB 电源线插到学习板电源口上,因为学习板使用双电源供电设计,至此硬件设备连接已OK。如图2 所示:

接下来,我们得安装仿真器软件——Keil,用户可以在配带的软件光盘>>工具软件>>keil7.09DEMO>>SETUP 安装目录下找到Setup.exe 安装文件,双击该文件进行安装,无需特别的参数设置,按其默认值确认即可,具体安装方法可看目录下的说明文件。安装完成之后,点击开始菜单“程序”中的“Keil uVision2”。进入软件界面,如图3 所示:

我们在“工程”菜单中执行“新建”命令,新建工程文件名取为“my.uv2”。接下来是选择我们要做实验使用的CPU类型,我们在此使用市面上最为常见的Ateml 公司的AT89S51 型号,选好,点击确定即可,这时我们的工程向导已经做完,下一步我们将编写源程序代码,即点亮第一个LED 发光管所需要的程序代码。我们执行“新建”操作,在弹出的文本编缉框内键入以下代码:

loop:

CLR P1.0

Ajmp loop

END

这里我们仅使用了四条语句,CLR P1.0 的作用是用来使单片机的P1.0 管脚置成低电平,因为我们要使第一个发光管点亮,从电路图中,我们可以看到,只要使P1.0 脚上为低电平信号即可。第一行的

“Loop”是语句标号;“AJMP LOOP”这条语句的意思是程序运行到此跳转到开始标号loop,重复执行程序。END 则是程序结束的标记,如我们看完电影后,在演员表出现完之后,也会出现一个“END”的字样。一个最简单的程序就这样编写完成了,下面我们得保存我们已经编好的程序,即执行“文件”菜单中的“另存为”命令,文件名我们在此取为led.asm,注意.asm 是汇编语言的扩展名,如果使用C 语言编写的话,则扩展名应是.c。在此,我们先使用汇编语言来介绍。如图 4 所示:

OK,现在我们已经保存好了这个文件,还记得吗,我们刚才新建了一个叫“my”的工程,而led.asm 文件应该是我们my 这个工程的其中一份子,换句话说,我们还应该把这个led.asm 文件添加到my 这个工程当中去。具体操作如下,点击屏幕左侧的Target1 字样旁边的“+”图标,则会弹出一个子项,名为“Source Group 1”,在其上

面单击鼠标右键,选择“增加文件到组Source Group 1”这项,把我们刚才保好的led.asm 加进去。如图 5 所示:

接下来,我们要为源程序做一项编译工作,即产生目标文件,等会我们要把该文件烧入到我们的AT89C51 单片机芯片中去。在执行编译之前,我们需要进行一些设置,右击“Target 1”,在弹出菜单中选择“目标Target 1 属性”选项,进入弹出菜单中的“输出”页,页面中有一项为“生成HEX 文件”,我们在其选择框内打上勾,然后,点击确定完成设置。现在,我们只要按一下快捷键F7,就可以完成编译工作了,这时,你会在led.asm 文件所在目录下发现一个名为“my.hex”的文件,这就是我们所用来完成烧写芯片工作时使用到的目标程序文件,该文件为16 进制文件。

编程编完了,我们自然要使用仿真器来验证一下程序有否正确,但在使用仿真器之前,我们还需要手动设置一些相关参数,同样是在“目

标Target 1 属性”选项,进入“目标”页面,将晶振频率设置为11.0592M,因为我们的仿真器使用的频率值为11.0592M,如图6 所示:

进入“调试”页,选择使用“Keil Monitor-51 Driver”硬件仿真器,点击其后边的“设置”按钮,进行仿真器的串口通讯设置,如果你的仿真器串口线插在计算机的COM1 口上,则我们在此选择为“COM1”,因为笔者使用时是插在COM2 口上,所以在此我们选择“COM2”,将波特率设置为“38400”,点击确定后,我们在“启动时加载程序”的复选框打个勾,页面内的“恢复调试设置”安需选择即可,我们在此将“断点”、“工具栏”、“存储器显示”这几项打上勾。详细的设置,请如图7,图8 所示:

现在我们已经将所有的设置都完成了,下面就让我们来看看我们的成果吧。首先,点击Keil 软件“调试”菜单中的“开始/停止调试”项,或者也可以按键盘快捷键Ctrl+F5。如屏幕左下角出现如图9 所示的样子,则表示仿真器连接成功,“Monitor-51 V3.4”是软件版本号。

然后,再选择“调试”菜单中的“运行到”按钮,或使用键盘快捷键

F5,这地仿真器才真正地起到仿真的作用了,你会发现我们的试验板上的第一个LED 发光管亮了,这正是我们所想要得到的结果。如图10 所示:

至此,我们已经完成了程序调试工作及硬件的仿真。完了之后,我们还需要做一件事,就是断开连接,如我们在生活中打完电话一定要挂机一样,断开连接的操作非常简单,首先,按一下学习板上的一个复位按钮,板上有中文标注。然后在“开始/停止调试”按钮,即我们刚才用来连接时按的那个按钮。至此,仿真工作全部结束,现在对仿真器的使用应该有了大致地了解了吧。

咱们继续讲,我们现在已经完成了软件程序的编制及仿真工作,下面我们就来讲一讲,咱们的最后一道工序,即程序定形后,我们如何将其烧到我们的单片机芯片中去,即如何使用ISP 在线下载功能。

首先,我们将并口线、USB 线或9V 外接电源线与学习板相连,硬件连接如图11 所示。

然后打开配套光盘中“ISP 编程软件”目录下的“ISP 编程.exe”文件,软件界面如图12 所示。

下面我们就需要将要烧写的程序文件调进来,执行“打开文件操作”,找到刚才我们刚才已经准备好的my.hex文件,选中打开即可。然后,我们执行一下“擦除”操作,差不多 1 秒钟即可完成芯片的擦除工作,速度很快。好了,现在已经到最后一步了,用鼠标点一下“写”按钮吧,OK,大功告成。至此,我们已经完成了从软件编写,仿真,直到烧写芯片的全部步骤。一定很辛苦了吧:)现在就可以看到如图10 所示的实验验证结果照片了。

最后,笔者写下此文,希望能够帮助广大单片机初学者可以尽快入门,给大家一个感性的认识,最重要的是能够提供给大家一个实验的硬件环境以及软硬件相结合的实践性描述,以使增加单片机初学者的实践

动手能力。配套光盘中已带数十个例子程序、一些实验视频操作录像

及学习板全部驱动程序,因此,你只要有一台电脑就可以进行学习、开发了,相信只要你发挥你的想象,一定可以将单片机发挥出它更大的潜力。

更多精彩经典资料:https://www.sodocs.net/doc/8c11709281.html,/soft/

51单片机中断系统详解

的定时器中断后便认为是1s,这样便可精确控制定时时间啦。要计50000个数时,TH0和TL0中应该装入的总数是65536-50000=15536.,把15536对256求模:15536/256=60装入TH0中,把15536对256求余:15536/256=176装入TL0中。 以上就是定时器初值的计算法,总结后得出如下结论:当用定时器的方式1时,设机器周期为T CY,定时器产生一次中断的时间为t,那么需要计数的个数为N=t/T CY ,装入THX和TLX中的数分别为: THX=(65536-N)/256 , TLX=(65536-N)%256 中断服务程序的写法 void 函数名()interrupt 中断号using 工作组 { 中断服务程序内容 } 在写单片机的定时器程序时,在程序开始处需要对定时器及中断寄存器做初始化设置,通常定时器初始化过程如下: (1)对TMOD赋值,以确定T0和 T1的工作方式。 (2)计算初值,并将初值写入TH0、TL0或TH1、TL1。 (3)中断方式时,则对IE赋值,开放中断。 (4)使TR0和TR1置位,启动定时器/计数器定时或计数。 例:利用定时器0工作方式1,实现一个发光管以1s亮灭闪烁。 程序代码如下: #include #define uchar unsigned char #define uint unsigned int sbit led1=P1^0; uchar num; void main() { TMOD=0x01; //设置定时器0位工作模式1(M1,M0位0,1) TH0=(65536-45872)/256; //装初值11.0592M晶振定时50ms数为45872 TL0=(65536-45872)%256; EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; //启动定时器0 while(1) { if(num==20) //如果到了20次,说明1秒时间 { led1=~led1; //让发光管状态取反 num=0; } } } void T0_time()interrupt 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单片机中断系统编程

51单片机中断系统编程 51单片机中断系统编程 上传的图片 抱歉,您所在的组无权下载附件,请注册或登陆中断是指如下过程(如下图所示):CPU 与外设同时工作,CPU执行主程序,外设做准备工作。当外设准备好时向CPU发中断请求信 号,若条件满足,则CPU终止主程序的执行,转去执行中断服务程序。在中断服务程序中 CPU与外设交换信息,待中断服务程序执行完后,CPU再返回刚才终止的主程序继续执行。 5.3.1 中断系统 MCS-51单片机提供了5个固定的可屏蔽中断源,3个在片内,2个在片外,它们在程序存储 器中各有固定的中断入口地址,由此进入中断服务程序。5个中断源的符号、名称及产生 的条件如下。 ? INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。 ? INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 ? T0:定时器/计数器0中断,由T0计数溢出引起。 ? T1:定时器/计数器l中断,由T1计数溢出引起。 ? TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。 中断源有两级中断优先级,可形成中断嵌套。两个特殊功能寄存器用于中断控制和条件设 置。整个中断系统的结构框图如图所示。 上传的图片 抱歉,您所在的组无权下载附件,请注册或登陆 中断系统结构框图 2 中断系统的控制寄存器 中断系统有两个控制寄存器(IE和IP),它们分别用来设定各个中断源的打开/关闭和中

断优先级。此外,在TCON中另有4位用于选择引起外部中断的条件并作为标志位。 (1)中断允许寄存器IE IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H-AFH。IE 用 来打开或关断各中断源的中断请求,基本格式如下: 上传的图片 抱歉,您所在的组无权下载附件,请注册或登陆 ? EA:全局中断允许位。EA=0,禁止一切中断;EA=1,打开全局中断控制,此时,由各 个中断控制位确定相应中断的打开或关闭。 ? ×:无效位。 ? ES:串行I/O中断允许位。ES=1,允许串行I/O中断;ES=0,禁止串行I/O中断。 ? ETl;定时器/计数器T1中断允许位。ETl=1,允许T1中断;ETl=0,禁止T1中断。 ? EXl:外部中断l中断允许位。EXl=1,允许外部中断1中断;EXl=0,禁止外部中断1中 断。 ? ET0:定时器/计数器T0中断允许位。ET0=1,允许T0中断;ET0=0,禁止TO中断。 ? EX0:外部中断0中断允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中 断。 (2)中断优先级寄存器IP IP在特殊功能寄存器中,字节地址为B8H,位地址(由低位到高位)分别是B8H一BFH。 MCS-51单片机的中断分为两个优先级,IP用来设定各个中断源属于两级中断中的哪一级, 其基本格式如下: 上传的图片

第3章-MCS-51系列单片机的指令系统和汇编语言程序范文

第3章MCS一51系列单片机的指令系统 和汇编语言程序 3·1汇编指令 3·1·1请阐明机器语言、汇编语言、高级语言三者的主要区别,进一步说明为什么这三种语言缺一不可。 3·1·2请总结: (1)汇编语言程序的优缺点和适用场合。 (2)学习微机原理课程时,为什么一定要学汇编语言程序? 3·1·3MCS一51系列单片机的寻址方式有哪儿种?请列表分析各种寻址方式的访问对象与寻址范围。 3·1·4要访问片内RAM,可有哪几种寻址方式? 3·1·5要访问片外RAM,有哪几种寻址方式? 3·1·6要访问ROM,又有哪几种寻址方式? 3·1·7试按寻址方式对MCS一51系列单片机的各指令重新进行归类(一般根据源操作数寻址方式归类,程序转移类指令例外)。 3·1·8试分别针对51子系列与52子系列,说明MOV A,direct指令与MOV A,@Rj 指令的访问范围。 3·1·9传送类指令中哪几个小类是访问RAM的?哪几个小类是访问ROM的?为什么访问ROM的指令那么少?CPU访问ROM多不多?什么时候需要访问ROM? 3·1·10试绘图示明MCS一51系列单片机数据传送类指令可满足的各种传送关系。3·1·11请选用指令,分别达到下列操作: (1)将累加器内容送工作寄存器R6. (2)将累加器内容送片内RAM的7BH单元。 (3)将累加器内容送片外RAM的7BH单元。 (4)将累加器内容送片外RAM的007BH单元。 (5)将ROM007BH单元内容送累加器。 3·1·12 区分下列指令的不同功能: (l)MOV A,#24H 与MOV A.24H (2)MOV A,R0与MOV A,@R0 (3)MOV A,@R0与MOVX A,@R0 3·1·13设片内RAM 30H单元的内容为40H; 片内RAM 40H单元的内容为l0H; 片内RAM l0H单元的内容为00H; (Pl)=0CAH。 请写出下列各指令的机器码与执行下列指令后的结果(指各有关寄存器、RAM单元与端口的内容)。 MOV R0,#30H MOV A,@R0 MOV RI,A MOV B,@Rl MOV @R0,Pl MOV P3,Pl MOV l0H,#20H MOV 30H,l0H

51单片机中断系统程序实例

51单片机中断系统程序实例(STC89C52RC) 51单片机有了中断,在程序设计中就可以做到,在做某件事的过程中,停下来先去响应中断,做别的事情,做好别的事情再继续原来的事情。中断优先级是可以给要做的事情排序。 单片机的学习不难,只要掌握学习方法,学起来并不难。什么是好的学习方法呢,一定要掌握二个要点: 1. 要知道寄存器的英文全拼,比如IE = interrupt中断 不知道全拼,要去猜,去查。这样就可以理解为什么是这个名称,理解了以后就不用记忆了。 2. 每个知识点要有形像的出处 比如看到TF0,脑子里马上要形像地定位到TCON寄存器的某位 看到ET0, 马上要形像地定位到IE寄存器的第2位 https://www.sodocs.net/doc/8c11709281.html,/tuenhai/独家揭秘:形像是记忆的最大技巧。当人眼看到某个图时,是把视觉信号转化成电信号,再转化成人能理解的形像。当我们回忆形像时,就是在重新检索原先那个视觉信号,并放大。在学习过程中,不断练习检索、放大信号,我们的学习能力就会越来越强。 写程序代码时,也要把尽量把每行代码形像化。 51单片机内中断源 8051有五个中断源,有两个优先级。与中断系统有关的特殊功能寄存器有IE(中断允许寄存器)、IP(中断优先级控制寄存器)、中断源控制寄存器(如TCON、SCON的有关位)。51单片机的中断系统结构如下图(注意,IF0应为TF0):

8052有6个中断源,它比8051多一个定时器/计数器T2中断源。 8051五个中断源分别是: (1)51单片机外部中断源 8051有两个外部中断源,分别是INT0和INT1,分别从P3.2和P3.3两个引脚引入中断请求信号,两个中断源的中断触发允许由TCON的低4位控制,TCON的高4位控制运行和溢出标志。 INT0也就是Interrupt 0。在这里应该看一下你的51单片机开发板的电路原理图。离开形像的记忆是没有意义的。读到上面这句,你应该回忆起原理图上的连接。任何记忆都转化为形像,这是学习的根本原理,我们通过学习单片机要学会这种学习方法,会让你一辈子受益无穷。 TCON的结构如下图: (a)定时器T0的运行控制位TR0

51单片机的指令系统及试验

51单片机的指令系统及试验 在讲指令系统前我们先来复习一下数制的概念。1. 十进制(Decimal)基数是10,它有10个数字符号,即0,l,2,3,4,5,6,7,8,9。其中最大数码是基数减1,即9,最小数码是0。2.二进制(Binary)基数是2,它 只有两个数字符号,即0和1。这就是说,如果在给定的数中,除0和1外还有其它数,例如 1012,它就决不会是一个二进制数。3、十六进制(Hexadecilnal)基数是16,它有16个数字符号,除了十进制中的10个数可用外,还使用了6个英文字母。它的16个数字依次是0,l,2,3,4,5,6,7,8,9,A,B,C,D,E,F。其中A至F 分别代表十进制数的10至15,最大的数字也是基数减1。 4、二进制数与十六进制数的相互转换。(1)、二进制转换为十六进制:整数部分,从低位开始,小数部分,从高位开始,每四位一组(不够四位的补0),转换为对应的 十六进制数。例:(1 0001 0011.1100 0111)2=(113.C7)H (2)、十六进制转换为二进制:将十六进制数的每一位分别转换为对应的四位二进制数。例:(3E9D)H=(11 1110 1001 1101)B例:( 2ABE)H= 0010 1010 1011 1110B 以后我们在单片机编程方面采用十六进制,这个请大家 注意了!MCS-51系列单片机的指令系统共有111条指令,

其中49条是单字节指令,45条是双字节指令,17条是三字节指令。MCS-51的指令系统共有33个功能,用汇编编程时只需要42个助记符就能指明这33个功能操作。1、指令格式:MCS-51汇编语言指令格式与其他微机的指令格 式一样,均由以下几部分组成:[标号:]操作码 [操作数][,操作数][;注释]标号:又称为指令地址符号,地址的符号化,一般由1到6个字符组成,以字母开头的字母数字串,与操作码之间用冒号分开。操作码:是由助 记符表示的字符串,它规定了指令的操作功能。操作数:是指参加操作的数据和数据的地址。注释:是为该条指 令作说明,以便于阅读。注意:[ ]中表示为可选项。操作数可以为1、2、3个,也可以没有。不同功能的指令,操作数作用不同,如:传送指令多数有两个操作数,写 在左面的是目的操作数(表示操作结果存放的单元地址),写在右面的称为源操作数(指出操作数的来源)。操作码和操作数之间必须用空格分隔,操作数与操作数之间必 须用逗号“,”分隔。带方括号项可有可无,称为可选项。操作码是指令的核心不可缺少。2、指令分类 MCS-51的111条指令分为下面5类:(1)数据传送类 指令29条,分为片内RAM,片外RAM、程序存储器的传送指令,交换及堆栈操作指令。(2)算术运算类24条,分为加,带进位加,减,乘,除,加1,减1指令。(3)

MCS-51系列--单片机指令系统

机器语言指令格式: 单字节指令:操作码 双字节指令:操作码操作数 三字节指令:操作码第一操作数,第二操作数........................................................... 汇编语言指令格式: 标号:操作码目的操作数,源操作数;注释........................................................... 寻址方式: ①立即寻址方式---#data ②直接寻址方式---direc ③寄存器寻址方式---Rn ④寄存器间接寻址方式---@ ⑤变址寻址方式---@A+DPTR ⑥相对寻址方式---SJMP ⑦位寻址方式(MOV ACC.3,Cy) ........................................................... MCS-51系列单片机指令系统: 1数据传送指令: (1)内部RAM中一般数据传送指令 (2)16位数据传送指令 (3)累加器与外部数据存储器的数据传送指令

(4)访问程序存储器指令(5)堆栈操作指令 (6)数据交换指令 2算术运算指令: (1)加法指令 (2)减法指令 (3)乘法指令 (4)除法指令 (5)加1/减1指令 (6)BCD码调整指令 3逻辑运算指令: (1)逻辑“与”运算指令(2)逻辑“或”运算指令(3)逻辑“异或”运算指令(4)清零和取反指令 (5)循环移位指令 4转移和调用返回指令:(1)子程序调用和返回指令 ①绝对调用指令 ②长调用指令 ③子程序返回指令 ④中断返回指令

(2)转移指令: ①无条件转移指令 ②条件转移指令 (3)空操作指令 5位操作指令: (1)位传送指令 (2)位置位指令 (3)位清零指令 (4)位取反指令 (5)位逻辑运算指令........................................................... 指令系统中的常用符号: (1)A, #data, direct, Rn, @Rn, DPTR, PC (2)#data16, addr11, addr16, rel, B, Cy, bit, /bit ...........................................................

快速学习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)比较不相等则转移; DJNZ (Decrement Jump if Not Zero)减1后不为0则转移;

51单片机汇编语言教程:18课单片机中断系统

51单片机汇编语言教程:第18课-单片机中断系统

MCS-51单片机中断系统的结构: 5个中断源的符号、名称及产生的条件如下。 INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。 INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 T0:定时器/计数器0中断,由T0计满回零引起。 T1:定时器/计数器l中断,由T1计满回零引起。 TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。整个中断系统的结构框图见下图一所示。

<51单片机中断系统结构> 如图所示,由与中断有关的特殊功能寄存器、中断入口、次序查询逻辑电路等组成,包括5个中断请求源,4个用于中断控制的寄存器IE、IP、ECON和SCON来控制中断类弄、中断的开、关和各种中断源的优先级确定。 中断请求源: (1)外部中断请求源:即外中断0和1,经由外部管脚引入的,在单片机上有两个管脚,名称为INT0、INT1,也就是P3.2、P3.3这两个管脚。在内部的TCON中有四位是与外中断有关的。IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。这两种方式的差异将在以后再谈。IE0:INT0中断请求标志位。当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。IT1、IE1的用途和IT0、IE0相同。(2)内部中断请求源TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。TF1:与TF0类似。TI、RI:串行口发送、接收中断,在串行口中再讲解。2、中断允许寄存器IE在MCS-51中断系统中,中断的允许或禁止是由片内可进行位寻址的8位中断允许寄存器IE来控制的。见下表EAX 其中EA是总开关,如果它等于0,则所有中断都不允许。ES-串行口中断允许ET1-定时器1中断允许EX1-外中断1中断允许。ET0-定时器0中断允许EX0-外中断0中断允许。如果我们要设置允许外中断1,定时器1中断允许,其它不允许,则IE能是EAX 即8CH,当然,我们也能用位操作指令SETB EA SETB ET1SETB EX1 来实现它。3、五个中断源的自然优先级与中断服务入口地址外中断0:0003H定时器0:000BH 外中断1:0013H定时器1:001BH串行口:0023H它们的自然优先级由高到低排列。写到这里,大家应当明白,为什么前面有一些程序一始我们这样写: ORG0000HLJMP START ORG0030H START:。 这样写的目的,就是为了让出中断源所占用的向量地址。当然,在程序中没用中断时,直接从0000H开始写程序,在原理上并没有错,但在实际工作中最好不这样做。优先级:单片机采用了自然优先级和人工设置高、低优先级的策略,即能由程序员设定那些中断是高优先级、

AT89C51单片机指令系统

第3章AT89C51单片机指令系统 难点 ?MCS-51单片机的寻址方式 ?数据传送指令和算术运算指令的使用 ?位操作和控制转移类指令的使用 要求 掌握: ?MCS-51单片机的寻址方式 ?指令系统的基本格式 ?指令系统的操作功能 了解: ?指令系统的基本格式 ?操作数的使用方法 ?指令系统的操作过程 3.1 MCS-51单片机指令格式 3.2 寻址方式 3.3 指令系统 3.1 MCS-51单片机指令格式 计算机的指令系统是表征计算机性能的重要指标,每种计算机都有自己的指令系统。MCS—51单片机的指令系统是一个具有255种代码的集合,绝大多数指令包含两个基本部分:操作码和操作数。操作码表明指令要执行的操作的性质;操作数说明参与操作的数据或数据所存放的地址。 MCS—51指令系统中所有程序指令是以机器语言形式表示,可分为单字节、双字节、三字节3种格式。 用二进制编码表示的机器语言由于阅读困难,且难以记忆。因此在微机控制系统中采用汇编语言指令来编写程序。本章介绍MCS—51指令系统就是以汇编语言来描述的。 表3-1汇编指令与指令代码 标号:操作码目的操作数,源源操作数;注释 标号与操作码之间“:”隔开; 操作码与操作数之间用“空格”隔开; 目的操作数和源源操作数之间有“,”分隔; 操作数与注释之间用“;”隔开。 标号是由用户定义的符号组成,必须用英文大写字母开始。标号可有可无,若一条指令中有标号,标号代表该指令所存放的第一个字节存储单元的地址,故标号又称为符号地址,在汇编时,把该地址赋值给标号。 操作码是指令的功能部分,不能缺省。MCS—51指令系统中共有42种助记符,代表了33种不同的功能。例如MOV是数据传送的助记符。

8051单片机指令系统

8051 单片机指令系统
难点

MCS-51 单片机的寻址方式 数据传送指令和算术运算指令的使用 位操作和控制转移类指令的使用
要求
掌握:

MCS-51 单片机的寻址方式 指令系统的基本格式 指令系统的操作功能
了解:

指令系统的基本格式 操作数的使用方法 指令系统的操作过程
2.7.1
MCS-51 单片机指令格式
计算机的指令系统是表征计算机性能的重要指标,每种计算机都有自己的指令系统. MCS—51 单片机的指令系统是一个具有 255 种代码的集合,绝大多数指令包含两个基本部 分:操作码和操作数.操作码表明指令要执行的操作的性质;操作数说明参与操作的数据或 数据所存放的地址. MCS—51 指令系统中所有程序指令是以机器语言形式表示,可分为单字节,双字节, 三字节 3 种格式. 用二进制编码表示的机器语言由于阅读困难, 且难以记忆. 因此在微机控制系统中采用 汇编语言指令来编写程序.本章介绍 MCS—51 指令系统就是以汇编语言来描述的.
表 1 汇编指令与指令代码
代码字节 单字节 单字节 双字节 三字节
指令代码 84 A3 7410 B440 rel
汇编指令 DIV AB INC DPTR MOV A,#10H CJNE A,#40H,LOOP
指令周期 四周期 双周期 单周期 双周期

一条汇编语言指令中最多包含 4 个区段,如下所示: 标号: 操作码 目的操作数,源源操作数 ;注释
标号与操作码之间": "隔开; 操作码与操作数之间用"空格"隔开; 目的操作数和源源操作数之间有", "分隔; 操作数与注释之间用"; "隔开. 标号是由用户定义的符号组成,必须用英文大写字母开始.标号可有可无,若一条指令 中有标号,标号代表该指令所存放的第一个字节存储单元的地址,故标号又称为符号地址, 在汇编时,把该地址赋值给标号. 操作码是指令的功能部分,不能缺省.MCS—51 指令系统中共有 42 种助记符,代表了 33 种不同的功能.例如 MOV 是数据传送的助记符. 操作数是指令要操作的数据信息.根据指令的不同功能,操作数的个数有 3,2,1 或没 有操作数.例如 MOV A,#20H,包含了两个操作数 A 和#20H,它们之间用","隔开. 注释可有可无, 加入注释主要为了便于阅读, 程序设计者对指令或程序段作简要的功能说明, 在阅读程序或调试程序时将会带来很多方便.
2.7.2
寻址方式
所谓寻址方式,通常是指某一个 CPU 指令系统中规定的寻找操作数所在地址的方式, 或者说通过什么的方式找到操作数.寻址方式的方便与快捷是衡量 CPU 性能的一个重要方 面,MCS—51 单片机有七种寻找方式.
1
立即数寻址
立即寻址方式是操作数包括在指令字节中,指令操作码后面字节的内容就是操作数本 身,其数值由程序员在编制程序时指定,以指令字节的形式存放在程序存储器中.立即数只 能作为源操作数,不能当作目的操作数. 例如: MOV A,#52H ;A←52H MOV DPTR,#5678H ;DPTR←5678H 立即寻址示意图如 1 所示.
图 1 立即寻址示意图

51单片机定时、中断系统

51单片机定时、中断系统51单片机中断级别 中断源默认中断级别序号(C语言用) INT0---外部中断0 最高0 T0---定时器/计数器0中断第2 1 INT1---外部中断1 第3 2 T1----定时器/计数器1中断第4 3 TX/RX---串行口中断第5 4 T2---定时器/计数器2中断最低 5 中断允许寄存器IE 位序号DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 符号位EA ------- ET2 ES ET1 EX1 ET0 EX0 EA---全局中允许位。 EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开或关闭。EA=0,关闭全部中断。 -------,无效位。 ET2---定时器/计数器2中断允许位。EA总中断开关,置1为开; ET2=1,打开T2中断。EX0为外部中断0(INT0)开关,…… ET2=0,关闭T2中断。ET0为定时器/计数器0(T0)开关,…… ES---串行口中断允许位。EX1为外部中断1(INT1)开关,…… ES=1,打开串行口中断。ET1为定时器/计数器1(T1)开关,…… ES=0,关闭串行口中断。ES为串行口(TX/RX)中断开关,…… ET1---定时器/计数器1中断允许位。ET2为定时器/计数器2(T2)开关,…… ET1=1,打开T1中断。 ET1=0,关闭T1中断。 EX1---外部中断1中断允许位。 EX1=1,打开外部中断1中断。 EX1=0,关闭外部中断1中断。 ET0---定时器/计数器0中断允许位。 ET0=1,打开T0中断。 ET0=0,关闭T0中断。 EX0---外部中断0中断允许位。 EX0=1,打开外部中断0中断。 EX0=0,关闭外部中断0中断。 中断优先级寄存器IP 位序号DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 位地址--- --- --- PS PT1 PX1 PT0 PX0 -------,无效位。

51单片机中断系统详解(定时器、计数器)

51单片机中断系统 51单片机中断级别 中断源默认中断级别序号(C语言用) INT0---外部中断0 最高0 T0---定时器/计数器0中断第2 1 INT1---外部中断1 第3 2 T1----定时器/计数器1中断第4 3 TX/RX---串行口中断第5 4 T2---定时器/计数器2中断最低 5 中断允许寄存器IE 位序号DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 符号位EA ------- ET2 ES ET1 EX1 ET0 EX0 EA---全局中允许位。 EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开或关闭。EA=0,关闭全部中断。 -------,无效位。 ET2---定时器/计数器2中断允许位。EA总中断开关,置1为开; ET2=1,打开T2中断。EX0为外部中断0(INT0)开关,…… ET2=0,关闭T2中断。ET0为定时器/计数器0(T0)开关,……ES---串行口中断允许位。EX1为外部中断1(INT1)开关,…… ES=1,打开串行口中断。ET1为定时器/计数器1(T1)开关,…… ES=0,关闭串行口中断。ES为串行口(TX/RX)中断开关,…… ET1---定时器/计数器1中断允许位。ET2为定时器/计数器2(T2)开关,…… ET1=1,打开T1中断。 ET1=0,关闭T1中断。 EX1---外部中断1中断允许位。 EX1=1,打开外部中断1中断。 EX1=0,关闭外部中断1中断。 ET0---定时器/计数器0中断允许位。 ET0=1,打开T0中断。 ET0=0,关闭T0中断。 EX0---外部中断0中断允许位。 EX0=1,打开外部中断0中断。 EX0=0,关闭外部中断0中断。 中断优先级寄存器IP 位序号DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 位地址--- --- --- PS PT1 PX1 PT0 PX0 -------,无效位。 PS---串行口中断优先级控制位。

MCS-51单片机指令系统

第三章MCS-51单片机指令系统 MCS-51单片机指令系统的特点: (1)指令执行时间快。 (2)指令短,约有一半的指令为单字节指令。 (3)用一条指令即可实现单字节数的相乘或相除。 (4)具有丰富的位操作指令。 (5)可直接用传送指令实现端口的输入输出操作。 3.1 MCS-51指令系统的分类、格式及一般说明 3.1.1 指令分类 ?按指令功能,MCS-51指令系统分为数据传送与交换、算术运算、逻辑运算、程序转移、布尔处理操作、CPU控制等6类。 ?布尔处理操作类指令又称位操作指令。 3.1.2 指令格式 ?在MCS-51指令中,一般指令主要由操作码、操作数组成。 ?指令应具有以下功能: (1)操作码指明执行什么性质和类型的操作。例如,数的传送、加法、减法等。 (2)操作数指明操作的数本身或者是操作数所在的地址。 (3)指定操作结果存放的地址。 Rn:当前选中的寄存器区中的8个工作寄存器R0~R7(n=0~7)。 Ri:当前选中的寄存器区中的2个工作寄存器R0、R1(i=0,1)。 Direct:8位的内部RAM单元中的直接地址。 #data:包含在指令中的8位立即数。 #data16:包含在指令中的16位立即数。 Addr16:16位目的地址。 Addr11:11位目的地址。 3.1.3 指令描述符号介绍 rel:8位带符号的偏移字节,简称偏移量。 DPTR:数据指针,可用作16位地址寄存器。 Bit:内部RAM或专用寄存器中的直接寻址位。 A:累加器。 B:专用寄存器,用于乘法和除法指令中。 C:进位标志/进位位或布尔处理机中的累加器。 @:间址寄存器或基址寄存器的前缀, 如@Ri,@DPTR。 / :位操作数的前缀,表示对该位操作数取反, 如/bit。 ×:片内RAM的直接地址或寄存器。 (×):由×寻址的单元中的内容。 ← :箭头左边的内容被右边的内容所代替。 3.2 寻址方式 3.2.1 立即寻址 操作数以指令形式出现,称作立即数,用加

相关主题