




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1/39 增强型8051单片机实用开发技术 4.2.1 伪指令 一般来说,在汇编语言源程序中用指令助记符编 写的程序,都可以一一对应的产生目标程序。但还 有一些指令,例如指定目标程序或数据存放的起始 地址,给一些指定的标号赋值,在内存中予留工作 单元,表示源程序结束等等。这些指令并不产生目 标程序,不影响程序的执行,仅仅产生供汇编用的 某些指令,以便在汇编时执行一些特殊操作,称之 为伪指令。 4.2 汇编语言程序设计 2/39 增强型8051单片机实用开发技术 1、设置起始地址ORG ORG nn ORG伪指令总是出现在每段源程序或数据块的开始。它可使程序 员把程序、子程序或数据块存放在存贮器的任何位置。 ORG 0000H LJMP MAIN 在实际应用中,一般仅设置中断服务子程序的入口地址和主程 序的起始存放地址,其他的程序或常数依次存放即可,汇编程序 会自动进行存储空间的分配。 2、定义字节DB或DEFB 标号: DB 项或项表 其中项或项表是指一个字节,数或字符串,或以引号括起来的ASC码字符 串(一个字符用ASC码表示,相当于一个字节)。该指令的功能是把项或项表 的数值(字符则用它的ASC码)存入从标号开始的连续单元中。 3/39 增强型8051单片机实用开发技术 常用DB命令在程序存储器中存放数据表格,例如存放数码管显示的十六进制数的 字形码(或称为字模)。例如,共阳极LED显示字模表如下: LEDCode: DB0C0H; 0 DB0F9H; 1 DB0A4H; 2 DB0B0H; 3 DB099H; 4 DB092H; 5 DB082H; 6 DB0F8H; 7 DB080H; 8 DB090H; 9 DB088H; A DB083H; B DB0C6H; C DB0A1H; D DB086H; E DB08EH; F 访问表格常数时,常用MOVC A, A+DPTR指令。 4/39 增强型8051单片机实用开发技术 3、为标号赋值EQU 标号: EQU 项或汇编符号 其功能是将一个数或特定的汇编符号赋给语句中的字符名称 。注意,字符名称为一自定的符号,而不是标号,字符名称后 无“:”。字符名称可用来作数据地址、立即数或者位地址,其 值可以是一个8位数,也可以是16位数。 使用EQU伪指令可以把抽象的数字或地址表示成有一定意义 的符号,增强程序的可读性。需要注意的是,在同一程序中, 用EQU伪指令对标号赋值后,该标号的值在整个程序中不能再 改变。 4、DATA指令 格式: 符号名 DATA 表达式 DATA 指令用于将一个内部 RAM 的地址赋给指定的符号名。 数值表达式的值在00H0FFH之间,表达式必须是一个简单表达 式。如: BUFFER DATA 40H 5/39 增强型8051单片机实用开发技术 5、XDATA指令(Extenal Data) 格式: 符号名 XDATA 表达式 XDATA 指令用于将一个外部 RAM 的地址赋给指定的符号名。 数值表达式的值在0000H0FFFFH之间,对于STC12C5A60S2单 片机,片内集成了1024字节的XRAM,地址范围是 0000H03FFH。表达式必须是一个简单表达式。如: MYDATA XDATA 0020H 6/39 增强型8051单片机实用开发技术 6、定义位命令BIT 格式: 字符名称 BIT 位地址 用于给字符名称定义位地址。如: DOGOUT BIT P3.4 经定义后,允许在指令中用DOGOUT代替P3.4。 DATA、BIT命令可以使用EQU代替,例如,下面的两条命 令是等价的: TCONDATA 88H;中断优先级高位寄存器 TCONEQU 88H;中断优先级高位寄存器 下面的两条命令也是等价的: TF1BIT8FH;TF1的位地址位8FH TF1EQUTCON.7 ;TF1为TCON的第7位 7/39 增强型8051单片机实用开发技术 7、文件包含命令INCLUDE 文件包含命令INCLUDE用于将寄存器定义文件(一般的后缀名 为.INC)包含于当前程序中,与C语言中的#include语句类似。 使用格式为: $INCLUDE (文件名) 例如,为了使用方便,作者把STC12C5A60S2D单片机的寄存 器定义保存在文件STC12C5A.INC中,使用时,可以在程序的开 始处使用下面的命令将其包含到用户程序中: $INCLUDE (STC12C5A.INC) ;包含寄存器定义文件 使用上述命令后,在用户程序中就可以直接使用 STC12C5A60S2单片机的寄存器名称了。例如, MOV BRT,#0FBH ;设置独立波特率发生器的时间常数 8/39 增强型8051单片机实用开发技术 8、条件汇编控制指令 条件汇编控制指令的作用是使源程序中的一部分程序行根据 需要决定是否进行汇编。条件汇编控制伪指令的一般格式: IF 表达式 程序块1 ELSE 程序块2 ENDIF 9、源程序结束 END 标号: END 表达式 END语句是一个结束标志,它告诉汇编程序,该程序段已结束。 因此,该语句必须放在整个程序(包括伪指令)之后。 9/39 增强型8051单片机实用开发技术 4.2.2 汇编语言程序设计的一般步骤和基本框架 1、汇编语言程序设计的一般步骤 (1)分析课题,确定算法或解题思路; (2)根据算法或思路画出流程图; (3)根据算法要求分配资源,包括内部RAM、定时器、中断等资源的分配。 (4)根据流程图编写程序; (5)不断调试并修改源程序,直到满足系统的要求。 10/39 增强型8051单片机实用开发技术 2、STC12C5A60S2单片机 汇编语言程序的设计框架: $INCLUDE (STC12C5A.INC) ;包含STC12C5A60S2单片机寄存器定义头文件 ;这里可以编写程序中用到的一些符号定义(使用EQU、DATA、BIT等伪指令) ORG0000H LJMPMAIN ;跳转到主程序 ORG0003H LJMPINT0_ISR ;外部中断0入口 ORG000BH LJMPT0_ISR ;定时器0中断入口 ORG0013H LJMPINT1_ISR ;外部中断1入口 ORG001BH LJMPT1_ISR ;定时器1中断入口 ORG0023H LJMPUART1_ISR ;串口1中断入口 ORG002BH LJMPADC_ISR ;ADC中断服务程序入口 ORG0033H LJMPLVD_ISR ;低电压检测中断服务程序入口 ORG003BH LJMPPCA_ISR ;PCA中断服务程序入口 ORG0043H LJMPUART2_ISR ;串口2中断服务程序入口 ORG004BH LJMPSPI_ISR ;SPI中断服务程序入口 ORG0100H MAIN:MOVSP,#70H ;设置堆栈指针(可根据实际情况进行修改) ;初始化内存区域内容 ;设置有关特殊功能寄存器(SFR)的控制字 ;根据需要开放相应的中断控制 MAINLOOP: ;主程序循环 LJMPMAINLOOP 11/39 增强型8051单片机实用开发技术 ;下面是各个中断服务子程序的入口 INT0_ISR: ;外部中断0服务子程序 ;根据需要填入适当的内容 RETI INT1_ISR: ;外部中断1服务子程序 ;根据需要填入适当的内容 RETI T0_ISR: ;定时器0中断服务子程序 ;根据需要填入适当的内容 RETI T1_ISR: ;定时器1中断服务子程序 ;根据需要填入适当的内容 RETI UART1_ISR:;串口1中断服务子程序 ;根据需要填入适当的内容(注意中断请求标志位的清零) RETI UART2_ISR:;串口2中断服务子程序 ;根据需要填入适当的内容(注意中断请求标志位的清零) RETI 12/39 增强型8051单片机实用开发技术 ADC_ISR: ;ADC中断服务子程序 ;根据需要填入适当的内容(注意中断请求标志位的清零) RETI SPI_ISR: ;SPI通信中断服务子程序 ;根据需要填入适当的内容(注意中断请求标志位的清零) RETI LVD_ISR: ;低电压检测服务子程序 ;根据需要填入适当的内容(注意中断请求标志位的清零) RETI PCA_ISR: ;PCA和PWM中断服务子程序 ;根据需要填入适当的内容(注意中断请求标志位的清零) RETI ;下面可以编写其他子程序或者定义程序中所用的常数 END 13/39 增强型8051单片机实用开发技术 4.3 典型汇编语言程序设计举例 【例4-1】编程实现下面的比较函数。设变量x存放在R0,求得的y值存入SIGN 单元。 +1 x37 y = -1 x37 0 x=37 解:可以利用CJNE指令和进位位C状态控制转移(JC指令)来实现三分支转移。源程序如下 : SIGN EQU 50H ORG0000H LJMPMAIN ORG 0100H MAIN: CJNE R0,#37,NOTEQ ;R0中数与37数比较,不相等则转NOTEQ MOV SIGN,#00H ;若比较相等,则SIGN0 LJMP ENDME NOTEQ:JC NEG ;两数不相等,若R037则转NEG MOV SIGN,#01H ;R037时,SIGN+1 LJMP ENDME NEG: MOV SIGN,#0FFH ;R037时,SIGN-1(以补码形式给出) ENDME:NOP END 1、分支程序设计 14/39 增强型8051单片机实用开发技术 所谓查表法,就是把事先计算或测得的数据按一定顺序编制成表格, 查表程序根据被测参数的值或者中间结果,查出最终所需要的结果。它 具有程序简单,执行速度快等优点。 查表程序在计算机控制系统中应用非常广泛。例如,在键盘处理程序 中,查找按键相应的命令处理子程序的入口地址;在LED显示程序中, 获得LED数码管的显示代码;在一些快速计算的场合,根据自变量的值 ,从函数表上查找出相应的函数值以及实现非线性修正、代码转换等等 。 常用MOVC A,ADPTR查找程序存储器空间的代码或常数,每次 传送一个字节。 2、查表程序设计 15/39 增强型8051单片机实用开发技术 当程序处理的对象具有重复性规律时,可以使用循环程序设计。一个 循环表示重复执行一组指令(程序段)。 3、循环程序设计 16/39 增强型8051单片机实用开发技术 例1 延时程序(时钟为6MHz ) 入口:设延时时间N(以0.1ms为单位)送入R0。 出口:延时到,退出程序,无参数传递。 DELAY: MOV R7,#150 ;当时钟为6MHz时,约延时0.1ms LOOP: DJNZ R7,LOOP DJNZ R0,DELAY RET 17/39 增强型8051单片机实用开发技术 (1)多字节十进制BCD码减法 入口:被减数低字节地址存放于R1,减数低字节地址存放于R0,字节数存放于R2。 出口:差(补码)的低字节地址存放于R0,字节数存放于R3。 07H为符号位。0表示结果为正,1表示结果为负。 SUBCD: MOV R3,#00H;差字节数置0 CLR 07H;符号位清0 CLR C;借位位C清0 SUBCD1:MOV A,#9AH SUBB A,R0;相差 ADD A,R1 DA A MOVR0,A INC R0;地址值增1 INC R1 INC R3;差字节增1 CPL C;进位求反,以形成正确借位 DJNZ R2,SUBCD1;未减完继续,减完向下执行 JNCSUBCD2;无借位去SUBCD2返主,否则继续 SETB 07H;差为负置“1”符号位 SUBCD2:RET;返回 其他编程实例,请参见教材 4、定点数运算子程序 18/39 增强型8051单片机实用开发技术 4.4 利用Keil uVision集成开发环境调试程序 4.4.1 Keil uVision集成开发环境简介 Keil uVision 集成开发环境(IDE,以下简称uVision)是一个基于Windows的 开发平台,包含高效的编辑器、项目管理器和MAKE工具。uVision支持所有的 KEIL 8051工具,包括C编译器、宏汇编器连接/定位器、目标代码、到HEX的转换 器。uVision通过以下特性加速嵌入式系统(单片机应用系统)的开发过程: 全功能的源代码编辑器 器件库用来配置开发工具设置 项目管理器用来创建和维护项目 集成的MAKE工具可以汇编编译和连接用户的嵌入式应用 所有开发工具的设置都是对话框形式的 真正的源代码级的对CPU和外围器件的调试器 高级GDIAGDI接口用来在目标硬件上进行软件调试以及和Monitor-51进行通信 与开发工具手册和器件数据手册和用户指南有直接的链接 19/39 增强型8051单片机实用开发技术 安装完成后的界 面 20/39 增强型8051单片机实用开发技术 安装授权的方法是,在“File”菜单中选择“License Management.”菜单项 ,弹出“License Management”对话框 在这里输入授权号 根据这个号码,向经销 商索取授权号 21/39 增强型8051单片机实用开发技术 4.4.2 Keil uVision集成开发环境中调试单片机汇编语言程 序的方法 uVision集成开发环境中包括一个项目管理器,它可 以使单片机应用系统设计变得简单。要创建一个应用, 需要按下列步骤进行操作: 1)启动uVision,新建一个项目文件并从器件库中选择 一个器件 2)新建一个源文件并把它加入到项目中 3)针对目标硬件设置工具选项 4)编译项目并生成可以编程到程序存储器的HEX文件 5)下载到单片机中进行仿真调试 22/39 增强型8051单片机实用开发技术 1.启动uVision2并创建一个项目 新建一个项目文件 23/39 增强型8051单片机实用开发技术 选择单片机型号 选择单 片机型号 拷贝启动代码提示 24/39 增强型8051单片机实用开发技术 2新建一个源文件并把它加入到项目中 新文件内容见下页 25/39 增强型8051单片机实用开发技术 【例4-4】 假设晶振频率为6MHz。将STC2C5A60S2单片机片内集成的 外部RAM 0000H000FH单元的内容清零,然后循环从P1.0输出10ms方波 。 $INCLUDE (STC12C5A.INC) ;包含STC12C5A60S2单片机寄存器定义文件 ORG0000H LJMPMAIN ORG0100H MAIN: MOVSP,#70H;设置堆栈指针 MOVDPTR,#0000H MOVR2,#10H CLRA LOOP1:MOVXDPTR,A INCDPTR DJNZR2,LOOP1;将XRAM 0000H000FH单元的内容清零 SETBP1.0 LOOP2:CPLP1.0 LCALLDELAY LJMPLOOP2;输出方波 DELAY: MOVR2,#100 ;10ms延时子程序 DLY_LOOP: MOVR7,#150 LOOP:DJNZR7,LOOP DJNZR2,DLY_LOOP RET END 26/39 增强型8051单片机实用开发技术 保存文件 输入文件名 27/39 增强型8051单片机实用开发技术 加入源程序文件到项目中 选择文件类型, 然后选择文件 加入文件到 源程序组 选择文件类型 28/39 增强型8051单片机实用开发技术 3针对目标硬件设置工具选项 在此设置使用 晶振的频率 29/39 增强型8051单片机实用开发技术 4. 编译项目并生成可以编程到程序存储器的HEX文 件 自动填入与工程名相 通的HEX文件名 选中“Create HEX File”复选框 1)设置编译选项,设置生成HEX文件 30/39 增强型8051单片机实用开发技术 2)编译失败时的提示 双击错误信息行 ,可进行错误定 位 出错的行 3)编译成功时的提示 31/39 增强型8051单片机实用开发技术 5对程序进行软件模拟调试或者下载到单片机中进行仿真调试 选择软件模 拟调试功能 从“Debug”菜单单中选择选择 “Start/Stop debug session”菜单项单项 (快捷键键是Ctrl+F5), 或者从工具条中单单句“Start/Stop debug session”按钮钮 ,开始模拟调试过拟调试过 程。 掌握常见的调式技术(连续运行、单步运行、单步跳过运行程序 、运行到光 标所在行 、设置断点 、存储器查看、查看变量、查看外围等) 32/39 增强型8051单片机实用开发技术 设置断点的菜单项 存储器查看窗口 插入/删除断 点菜单项 33/39 增强型8051单片机实用开发技术 外部RAM存储器查看窗口 P1口的观察窗口 “Watch”窗口 34/39 增强型8051单片机实用开发技术 4.5 利用ISP工具将程序下载到单片机中验证程 序 1. ISP下载程序的运行过程 35/39 增强型8051单片机实用开发技术 2. 使用ISP工具下载程序的步骤 启动ISP软件 用户根据实际使用效果选择 限制最高通信波特率,如 57600,38400,19200 开发调试时 ,可考虑选择 此项 图4-26 ISP工具启动后的界面 36/39 增强型8051单片机实用开发技术 下载程序时,可以按照下面的步骤进行: (1)从“MCU Type”下拉列表框中选择所使用的单片机的型号,如选择 STC12C5A60S2。 (2)单击“OpenFile/打开文件”按钮,打开要下载的用户程序文件。用户程序文 件的后缀名为.bin或者.hex。 第一次装入文件进缓冲区时,要选中“打开文件前清0缓冲区”复选框, 以清缓冲区。如果要装入几个文件进缓冲区,如EEPROM里的数据文件需要 和应用程序文件同时下载到单片机中时,除每次均要指定缓冲区起始地址外 ,第二次及以后不能清缓冲区。 (3)在COM下拉列表框中选择计算机所用的串行口,如COM1、COM2等。有些 新式笔记本电脑没有RS-232串行口,可买一条USB-RS232转接电缆(在作者 设计的学习套件中,已经将USB-RS232转换功能集成到学习板上,用户不必 再考虑转换问题)。 选择串行口后,根据实际使用效果,从“最高波特率”下拉框中选择限 制最高通信波特率,如57600、38400或者19200等。 37/39 增强型8051单片机实用开发技术 (4)进行时钟源的选择、启动下载的条件以及设置数据Flash区是否清零 。 时钟源选择:选择下次冷启动后,时钟源为“内部R/C振荡器”还 是“外部晶体或时钟”。 启动下载的条件:如果用户系统的P3.0和P3.1连接到了RS-485电 路,推荐选择“下次冷启动P1.0/P1.1 等于0,0才可以下载程序”,这样冷 启动后如P1.0和P1.1不同时为0,单片机直接运行用户程序,免得由于 RS-485总线上的乱码造成单片机反复判断乱码是否为合法,浪费几百ms 的时间。实际上,如果用户系统本身P3.0和P3.1就是做串行口使用,也 建议选择“下次冷启动P1.0/P1.1 等于0,0才可以下载程序”,以便下次冷 启动直接运行用户程序。 “下次下载用户用用程序时将数据Flash区一并擦除”选项用于选 择是否在下载用户程序时,将数据Flash区清零,默认设置是“NO”。 此外,这一步还包括:复位引脚的设置(主要是针对P4.7的设 置
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 创新思维体系构建与实战应用
- 化疗药物恶心呕吐护理
- 消防资格证培训大纲
- 淘宝售后规则培训
- 2025年智能可穿戴设备柔性传感技术在养老护理中的创新解决方案
- 墙体检测培训课件
- 二级医院卒中中心建设汇报
- 文化中心装修设计与后期物业运营管理协议
- 离婚协议书贷款购房房产分割与共同购房合同示范文本
- 离婚诉讼子女抚养权及财产分割合同范本编写指南
- 《ch棘皮动物》课件
- 电气试验标准化作业指导书
- 养老机构行政值班查房记录表格
- 中国服用过兴奋剂运动员名单 兴奋剂真的是毒品吗
- 小学英语语法时态讲解与归纳
- 《生存与修炼》熊厚音讲《道德经》教学文案
- 产教融合校企合作[可修改版ppt]课件
- 练习太极拳的三个阶段
- 华为供应商质量管理体系考察报告(全)
- 冶金工业清洁生产的主要途径(共82页).ppt
- 清洁生产实施的主要方法和途径
评论
0/150
提交评论