1、第七章:汇编程序设计第七章:汇编程序设计通知:n考试时间:教学16周星期三(12月16号)下午5-6节(13:30开始)n考试地点:一教304、305、306教室第七章第七章 汇编语言程序设计基础汇编语言程序设计基础单片机系统中编程语言:单片机系统中编程语言:n以汇编语言为主以汇编语言为主n高级语言高级语言C-51n汇编语言:源程序结构紧凑、灵活、汇编成目汇编语言:源程序结构紧凑、灵活、汇编成目标程序效力高,占用內存资源少,运行速度快标程序效力高,占用內存资源少,运行速度快和实时性,适合实时测控等应用领域。和实时性,适合实时测控等应用领域。n应用程序主要应用范围:如下图所示应用程序主要应用范围
2、:如下图所示应用程序主要由以下三类程序组成应用程序主要由以下三类程序组成 过程检测过程检测 巡回检测程序巡回检测程序 数字滤波程序数字滤波程序 处理和监视处理和监视 线性化处理线性化处理 测量值与工程值转换程序测量值与工程值转换程序 应用应用 越限报警程序越限报警程序 控制操作台服务程序控制操作台服务程序 判断程序判断程序 过程分析程序过程分析程序 过程控制过程控制 开环控制程序开环控制程序 PID算法算法 采样控制器采样控制器 程序程序 计算程序计算程序 闭环控制程序闭环控制程序 系统输入系统输入/出控制算法出控制算法 其他算法其他算法 输出控制程序输出控制程序 事故处理程序事故处理程序 公
3、共应用程序公共应用程序 制表打印程序制表打印程序 服务子程序服务子程序 程序设计概述n汇编程序设计的基本步骤汇编程序设计的基本步骤n设计任务的分析,确定算法和思路设计任务的分析,确定算法和思路n程序总体设计及其流程图程序总体设计及其流程图n编写源程序编写源程序n源程序的汇编与调试源程序的汇编与调试n编写源程序说明文件编写源程序说明文件程序设计概述n汇编语言程序设计方法汇编语言程序设计方法n汇编语言源程序的基本结构汇编语言源程序的基本结构n划分功能模块划分功能模块n自上而下逐步求精自上而下逐步求精应用程序设计技术功能性设计功能性设计 1 1运行结构设计:运行结构设计:n满足功能条件下,有简捷、可
4、靠运行路径满足功能条件下,有简捷、可靠运行路径n软件模块软件模块化化,任务划分相对独立的硬件环境,任务划分相对独立的硬件环境n划定边界条件:交换条件、数据类型、资源分划定边界条件:交换条件、数据类型、资源分配配 应用程序设计技术2 2任务单元设计:任务单元设计:n划分子程序:相对独立性、完整性、通用性。划分子程序:相对独立性、完整性、通用性。n占用公共资源最少占用公共资源最少n出入口规范清楚交接面简单、清晰、规范、操出入口规范清楚交接面简单、清晰、规范、操作类型尽量集中作类型尽量集中应用程序设计技术3 3可靠性设计:可靠性设计:n足够的时序余度,足够的容错设计。足够的时序余度,足够的容错设计。
5、n可靠性控制设计:系统安全、保护、可靠性控制设计:系统安全、保护、自检、修复。自检、修复。应用程序设计技术4 4运行管理设计:运行管理设计:1 1低功耗运行管理低功耗运行管理n休闲、掉电设置(休闲、掉电设置(80518051具备)具备)n双时钟:主时钟高速运行、子时钟双时钟:主时钟高速运行、子时钟低速运行可设置调整低速运行可设置调整n主时钟下分频管理:控制主时钟下分频管理:控制CPUCPU最佳最佳运行方式运行方式应用程序设计技术2 MCU2 MCU对外围电路管理对外围电路管理n可关断的外围端口控制可关断的外围端口控制n可编程外围器件的编程控制可编程外围器件的编程控制n外围辅助电路的时钟、供电与
6、电源管理外围辅助电路的时钟、供电与电源管理程序设计概述程序设计概述n全面了解硬件结构、指令系统、全面了解硬件结构、指令系统、功能要求以及有关算法。功能要求以及有关算法。n节省内存单元、缩短程序长度、节省内存单元、缩短程序长度、加快运行速度。加快运行速度。系统应用程序结构n键操作结构:键操作结构:人机交互式人机交互式n自主运行程序结构:自主运行程序结构:流水作业式流水作业式nRTOSRTOS任务管理嵌入结构:任务管理嵌入结构:(多任务软件平台多任务软件平台)1 1时间管理时间管理 2 2任务调度任务调度 3 3输入输入/出操作出操作 4 4任务间通信任务间通信 5 5任务的同步任务的同步 6 6
7、信息的调用管理信息的调用管理单片机系统应用程序一个重要的条件单片机系统应用程序一个重要的条件:实时性实时性:要求控制系统能在短时间作出相应处理地控要求控制系统能在短时间作出相应处理地控制信息制信息,常用伪指令n标号赋值伪指令标号赋值伪指令n标号等值伪指令标号等值伪指令-EQUn定义标号值伪指令定义标号值伪指令-DLn数据存储说明伪指令数据存储说明伪指令n定义字节数据伪指令定义字节数据伪指令-DBn定义字数据伪指令定义字数据伪指令-DWn存储器说明伪指令存储器说明伪指令-DSn程序起始地址伪指令程序起始地址伪指令-ORGn汇编结束伪指令汇编结束伪指令-END7.3 应用程序设计与技巧应用程序设计
8、与技巧7.3.1 MCS-51源程序的基本格式源程序的基本格式中断矢量地址在程序存储器的中断矢量地址在程序存储器的0003H-0032H区间区间而起始地址比须从而起始地址比须从0000H开始开始 复位后系统从复位后系统从0000H开始执行程序开始执行程序0000H-0002H单元放跳转指令单元放跳转指令 转入主程序段转入主程序段0000H 跳转指令跳转指令0002H 转主程序转主程序 0003H 中断矢量中断矢量0032H 地址表地址表0050H 主程序主程序 中断矢量地址表中断矢量地址表 每个中断服务程序地址空间只有每个中断服务程序地址空间只有8个单元个单元,每个中断矢量地址空间中安排跳转到
9、中断服务程序指令每个中断矢量地址空间中安排跳转到中断服务程序指令0000H-0002H 0003H0032H中断矢量表中断矢量表跳转中断服跳转中断服务程序指令务程序指令0050HxxxxH主程序区主程序区中断服务中断服务程序区程序区转主程序转主程序单片机汇编源程序的基本格式单片机汇编源程序的基本格式ORG 0000HAJMP STARTORG 0003HLJMP INTIE0ORG 000BHLJMP INTTF0ORG 0050HSTART:MOV A,#00HMOV R1,#7FHMOV R0,#00H L0:MOV R0,AINC R0DJNZ R1,LOORG 3000HA0:-ORG
10、 3100HA1:-ORG 4500HINTIE0:-ORG 4800HINTTF0:-ORG 5500HLED:DB 01H,02H,03HDB 04H,05H,06HDB 07H,08H,09HEND主程序主程序中断矢量地址表中断矢量地址表子程序子程序中断服务程序中断服务程序中断服务程序中断服务程序常数表区常数表区起始起始ORG0000HAJMPSTARTORG0003HAJMP INDATADIS1 EQU 30HDIS2 EQU 31HDIS3 EQU 32HDIS4 EQU 33HAD_DATA EQU 34HADDR_AD EQU OO40HADDR_273_1 EQU 0001H
11、ADDR_273_2EQU 0002HADDR_273_3 EQU 0003HADDR_273_4 EQU 0004HADDR_KEY_WR EQU 0005HADDR_KEY_RD EQU 0006HLABBIT7FHSTART:SETBEA;开中断SETBEX0;中断允许SETBIT0;触发方式CLRLAB;请标志位MOVA,#0FFHMOVDPTR,#ADDR_ADMOVXDPTR,A;启动ADJNBLAB,$;查询标志位SJMP$;等待INDATA:MOV DPTR,#ADDR_ADMOVA,#0FFHMOVXA,DPTR;读ADMOVAD_DATA,A;保存ADSETBLAB;置标志
12、位RETIAD中中断断服服务务程程序序主主程程序序设置设置RAM有关有关字节字节单元单元定义定义译码译码地址地址设置设置RAM有关有关 位位 单元单元AD转转换换启启动动电子工程设计电子工程设计-控温系统控温系统电子工程设计电子工程设计-控温系统控温系统:显示系统显示系统 电子工程设计电子工程设计-控温系统:控温系统:键盘管理键盘管理 ORG0000HAJMPSTARTORG0003HAJMP INDATADIS1 EQU 30HDIS2 EQU 31HDIS3 EQU 32HDIS4 EQU 33HAD_DATA EQU 34HADDR_AD EQU OO40HADDR_273_1 EQU
13、0001HADDR_273_2EQU 0002HADDR_273_3 EQU 0003HADDR_273_4 EQU 0004HADDR_KEY_WR EQU 0005HADDR_KEY_RD EQU 0006HLABBIT7FHSTART:SETBEA;开中断SETBEX0;中断允许SETBIT0;触发方式CLRLAB;请标志位MOVA,#0FFHMOVDPTR,#ADDR_ADMOVXDPTR,A;启动ADJNBLAB,$;查询标志位SJMP$;等待INDATA:MOV DPTR,#ADDR_ADMOVA,#0FFHMOVXA,DPTR;读ADMOVAD_DATA,A;保存ADSETBLA
14、B;置标志位RETIAD中中断断服服务务程程序序主主程程序序设置设置RAM有关有关字节字节单元单元定义定义译码译码地址地址设置设置RAM有关有关 位位 单元单元AD转转换换启启动动电子工程设计电子工程设计-控温系统控温系统(AD数据采集)数据采集)电电子子工工程程设设计:计:数数据据采采集集INT0程序设计基础和举例程序设计基础和举例 1)拆字程序拆字程序:将一个字节的两个将一个字节的两个BCD码十进制数拆开码十进制数拆开,并变成并变成相应的相应的ASCII码码,存入两个存入两个RAM单元中单元中.功能功能:一个字节一个字节BCD码转成两字节码转成两字节ASCII码码 RAM:30H存放存放B
15、CD码码 31H存放高位转换值存放高位转换值 32H存放低位转换值存放低位转换值 ASCII码对应数字码对应数字0-9是是30-39,所以只要加上所以只要加上#30H(0011,0000)既可既可00110011 MOV R0,#32H ;将将32H送送R0 MOV R0,#00H ;32H单元清零单元清零 MOV A,30H ;BCD码送码送A XCHD A,R0 ;将将低低4位位BCD送送32H(低四位互换)(低四位互换)ORL 32H,#30H ;将将#30H加入加入32H单元单元 SWAP A ;将高位将高位BCD调整到低位调整到低位 ORL A,#30H ;将将#30H加入加入A形成
16、形成ASCII码码 MOV 31H,A ;将高位将高位BCD送送31H单元单元 例例2:多分支转换读取存储器的内容多分支转换读取存储器的内容 功能功能:根据入口条件转向几个分支根据入口条件转向几个分支 (R3)=(0,1,2,3)入口条件入口条件:0 内部内部RAM,1 外部外部256个单元个单元,2 外部外部64K,3 外部外部4K (R0)出口出口 RAM低低8位地址位地址 (R1)出口出口 RAM高高8位地址位地址 (A)=0 1.2 3内RAM 外RAM 外RAM 外RAM256 256 64K 4K键盘处理程序键盘处理程序键盘处理键盘处理 键号键号-A入口地址入口地址 A+DPTR键散键散转转 JMPA+DPTR键键位位1键键位位2键键位位3键键位位NN-JMP:MOV A,R3 ;入口条件入口条件MOV DPTR,#JMPTBL ;转移表首址转移表首址 MOVC A,A+DPTR ;取变量取变量JMP A+DPTR ;变量加转移表首址变量加转移表首址 JMPTBL:DB MEM0 JMPTBL ;求转移长度求转移长度 DB MEM1 JMPTBL ;求转移长度求转移长度 D
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1