资源描述:
《电子教案单片机原理及应用技术》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、电子教案——单片机原理与应用技术第1章汇编语言程序设计80C51汇编,语言语句结构的基本格式伪指令的功能和应用汇编的概念程序设计的步骤和基本方法顺序程序分支程序循环程序查表程序散转程序§1-1汇编语言一.汇编语言及其语句结标号:操作码[目的操作数,源操作数];注释二.伪指令在汇编时起控制作用,自身并不产生机器码,而仅是为汇编服务的一些指令,称为伪指令。伪指令不属于80C51指令系统。常用的伪指令有以下几种:⒈起始伪指令ORG(Origin)格式:ORG16位地址⒉结束伪指令END格式:功能:汇编语言源程序的结束标志。在END后面的指令,汇编程序不再
2、处理。⒊等值伪指令EQU(Equate)格式:字符名称EQU数据或汇编符号⒋数据地址赋值伪指令格式:字符名称DATA表达式功能:将一个数据或特定的汇编符号赋予规定的字符名称。⒌定义字节伪指令DB(DefineByte)格式:DB8位二进制数表功能:从指定的地址单元开始,定义若干个8位内存单元的数据。数据与数据之间用“,”分割。⒍定义字伪指令DW(DefineWord)格式:DW16位二进制数表功能:从指定的地址单元开始,定义若干个16位数据。⒎定义位地址伪指令格式:字符名称BIT位地址功能:将位地址赋予所规定的字符名称。三.汇编将汇编语言源程序转换
3、为计算机所能识别的机器语言代码程序的过程称为汇编。汇编可分为:⒈手工汇编第10页共12页⒉计算机汇编四.程序设计的基本方法编写程序要求:不仅要完成规定的功能任务,而且还要求:执行速度快、占用内存少、条理清晰、阅读方便、便于移植、巧妙而实用。一般应按以下几个步骤进行:⑴分析问题,确定算法或解题思路⑵画流程图⑶编写源程序⑷汇编和调试第10页共12页§1-2汇编语言程序设计举例一.顺序程序顺序程序是指按顺序依次执行的程序,也称为简单程序或直线程序。顺序程序结构虽然比较简单,但也能完成一定的功能任务,是构成复杂程序的基础。根据不同条件转向不同的处理程序,这
4、种结构的程序称为分支程序。80C51指令系统中的条件转移指令、比较转移指令和位转移指令,可以实现分支程序。【例】已知16位二进制负数存放在R1R0中,试求其补码,并将结果存在R3R2中解:二进制负数的求补方法可归结为“求反加1”,符号位不变。利用CPL指令实现求反;加1时,则应低8位先加1,高8位再加上低位的进位。注意这里不能用INC指令,因为INC指令不影响标志位。程序如下:CONT:MOVA,R0;读低8位CPLA;取反ADDA,#1;加1MOVR2,A;存低8位MOVA,R1;读高8位CPLA;取反ADDCA,#80H;加进位及符号位MOVR
5、3,A;存高8位RET;二.分支程序根据不同条件转向不同的处理程序,这种结构的程序称为分支程序。80C51指令系统中的条件转移指令、比较转移指令和位转移指令,可以实现分支程序。①S0单独按下,红灯亮,其余灯灭;②S1单独按下,绿灯亮,其余灯灭;③其余情况,黄灯亮。第10页共12页解:程序如下SGNL:ANLP1,#11100011B;红绿黄灯灭ORLP1,#00000011B;置P1.0、P1.1输入态,P1.5~P1.7状态不变SL0:JNBP1.0,SL1;P1.0=0,S0未按下,转判S1JNBP1.1,RED;P1.0=1,S0按下;且P1
6、.1=0,S1未按下,转红灯亮YELW:SETBP1.4;黄灯亮CLRP1.2;红灯灭CLRP1.3;绿灯灭SJMPSL0;转循环SL1:JNBP1.1,YELW;P1.0=0,S0未按下;P1.1=0,S1未按下,转黄灯亮GREN:SETBP1.3;绿灯亮CLRP1.2;红灯灭CLRP1.4;黄灯灭SJMPSL0;转循环RED:SETBP1.2;红灯亮CLRP1.3;绿灯灭CLRP1.4;黄灯灭SJMPSL0;转循环课堂练习题:电路及灯亮灭要求同上述【例】题,其中第3、4两条指令JNBP1.0和JNBP1.1按下列要求修改,试重新编程。⑴JBP1
7、.0,¡JBP1.1,¡⑵JBP1.0,¡JNBP1.1,¡⑶JNBP1.0,¡JBP1.1,¡第10页共12页三.循环程序循环程序一般包括以下几个部分:⑴循环初值;⑵循环体;⑶循环修改;⑷循环控制;以上四部分可以有两种组织形式,其结构如图4-6所示.【例】编制一个循环闪烁灯的程序。设80C51单片机的P1口作为输出口,经驱动电路74LS240(8反相三态缓冲/驱动器)接8只发光二极管,如图4-8所示。当输出位为“1”时,发光二极管点亮,输出位为“0”时为暗。试编程实现:每个灯闪烁点亮10次,再转移到下一个灯闪烁点亮10次,循环不止。解:程序如下:
8、FLASH:MOVA,#01H;置灯亮初值FSH0:MOVR2,#0AH;置闪烁次数FLOP:MOVP1,A;点亮LCAL