单片机课件:8汇编讲义.ppt
《单片机课件:8汇编讲义.ppt》由会员分享,可在线阅读,更多相关《单片机课件:8汇编讲义.ppt(63页珍藏版)》请在冰豆网上搜索。
第七章:
汇编程序设计第七章:
汇编程序设计通知:
n考试时间:
教学16周星期三(12月16号)下午5-6节(13:
30开始)n考试地点:
一教304、305、306教室第七章第七章汇编语言程序设计基础汇编语言程序设计基础单片机系统中编程语言:
单片机系统中编程语言:
n以汇编语言为主以汇编语言为主n高级语言高级语言C-51n汇编语言:
源程序结构紧凑、灵活、汇编成目汇编语言:
源程序结构紧凑、灵活、汇编成目标程序效力高,占用內存资源少,运行速度快标程序效力高,占用內存资源少,运行速度快和实时性,适合实时测控等应用领域。
和实时性,适合实时测控等应用领域。
n应用程序主要应用范围:
如下图所示应用程序主要应用范围:
如下图所示应用程序主要由以下三类程序组成应用程序主要由以下三类程序组成过程检测过程检测巡回检测程序巡回检测程序数字滤波程序数字滤波程序处理和监视处理和监视线性化处理线性化处理测量值与工程值转换程序测量值与工程值转换程序应用应用越限报警程序越限报警程序控制操作台服务程序控制操作台服务程序判断程序判断程序过程分析程序过程分析程序过程控制过程控制开环控制程序开环控制程序PID算法算法采样控制器采样控制器程序程序计算程序计算程序闭环控制程序闭环控制程序系统输入系统输入/出控制算法出控制算法其他算法其他算法输出控制程序输出控制程序事故处理程序事故处理程序公共应用程序公共应用程序制表打印程序制表打印程序服务子程序服务子程序程序设计概述n汇编程序设计的基本步骤汇编程序设计的基本步骤n设计任务的分析,确定算法和思路设计任务的分析,确定算法和思路n程序总体设计及其流程图程序总体设计及其流程图n编写源程序编写源程序n源程序的汇编与调试源程序的汇编与调试n编写源程序说明文件编写源程序说明文件程序设计概述n汇编语言程序设计方法汇编语言程序设计方法n汇编语言源程序的基本结构汇编语言源程序的基本结构n划分功能模块划分功能模块n自上而下逐步求精自上而下逐步求精应用程序设计技术功能性设计功能性设计11运行结构设计:
运行结构设计:
n满足功能条件下,有简捷、可靠运行路径满足功能条件下,有简捷、可靠运行路径n软件模块软件模块化化,任务划分相对独立的硬件环境,任务划分相对独立的硬件环境n划定边界条件:
交换条件、数据类型、资源分划定边界条件:
交换条件、数据类型、资源分配配应用程序设计技术22任务单元设计:
任务单元设计:
n划分子程序:
相对独立性、完整性、通用性。
划分子程序:
相对独立性、完整性、通用性。
n占用公共资源最少占用公共资源最少n出入口规范清楚交接面简单、清晰、规范、操出入口规范清楚交接面简单、清晰、规范、操作类型尽量集中作类型尽量集中应用程序设计技术33可靠性设计:
可靠性设计:
n足够的时序余度,足够的容错设计。
足够的时序余度,足够的容错设计。
n可靠性控制设计:
系统安全、保护、可靠性控制设计:
系统安全、保护、自检、修复。
自检、修复。
应用程序设计技术44运行管理设计:
运行管理设计:
11低功耗运行管理低功耗运行管理n休闲、掉电设置(休闲、掉电设置(80518051具备)具备)n双时钟:
主时钟高速运行、子时钟双时钟:
主时钟高速运行、子时钟低速运行可设置调整低速运行可设置调整n主时钟下分频管理:
控制主时钟下分频管理:
控制CPUCPU最佳最佳运行方式运行方式应用程序设计技术2MCU2MCU对外围电路管理对外围电路管理n可关断的外围端口控制可关断的外围端口控制n可编程外围器件的编程控制可编程外围器件的编程控制n外围辅助电路的时钟、供电与电源管理外围辅助电路的时钟、供电与电源管理程序设计概述程序设计概述n全面了解硬件结构、指令系统、全面了解硬件结构、指令系统、功能要求以及有关算法。
功能要求以及有关算法。
n节省内存单元、缩短程序长度、节省内存单元、缩短程序长度、加快运行速度。
加快运行速度。
系统应用程序结构n键操作结构:
键操作结构:
人机交互式人机交互式n自主运行程序结构:
自主运行程序结构:
流水作业式流水作业式nRTOSRTOS任务管理嵌入结构:
任务管理嵌入结构:
(多任务软件平台多任务软件平台)11时间管理时间管理22任务调度任务调度33输入输入/出操作出操作44任务间通信任务间通信55任务的同步任务的同步66信息的调用管理信息的调用管理单片机系统应用程序一个重要的条件单片机系统应用程序一个重要的条件:
实时性实时性:
要求控制系统能在短时间作出相应处理地控要求控制系统能在短时间作出相应处理地控制信息制信息,常用伪指令n标号赋值伪指令标号赋值伪指令n标号等值伪指令标号等值伪指令-EQUn定义标号值伪指令定义标号值伪指令-DLn数据存储说明伪指令数据存储说明伪指令n定义字节数据伪指令定义字节数据伪指令-DBn定义字数据伪指令定义字数据伪指令-DWn存储器说明伪指令存储器说明伪指令-DSn程序起始地址伪指令程序起始地址伪指令-ORGn汇编结束伪指令汇编结束伪指令-END7.3应用程序设计与技巧应用程序设计与技巧7.3.1MCS-51源程序的基本格式源程序的基本格式中断矢量地址在程序存储器的中断矢量地址在程序存储器的0003H-0032H区间区间而起始地址比须从而起始地址比须从0000H开始开始复位后系统从复位后系统从0000H开始执行程序开始执行程序0000H-0002H单元放跳转指令单元放跳转指令转入主程序段转入主程序段0000H跳转指令跳转指令0002H转主程序转主程序0003H中断矢量中断矢量0032H地址表地址表0050H主程序主程序中断矢量地址表中断矢量地址表每个中断服务程序地址空间只有每个中断服务程序地址空间只有8个单元个单元,每个中断矢量地址空间中安排跳转到中断服务程序指令每个中断矢量地址空间中安排跳转到中断服务程序指令0000H-0002H0003H0032H中断矢量表中断矢量表跳转中断服跳转中断服务程序指令务程序指令0050HxxxxH主程序区主程序区中断服务中断服务程序区程序区转主程序转主程序单片机汇编源程序的基本格式单片机汇编源程序的基本格式ORG0000HAJMPSTARTORG0003HLJMPINTIE0ORG000BHLJMPINTTF0ORG0050HSTART:
MOVA,#00HMOVR1,#7FHMOVR0,#00HL0:
MOVR0,AINCR0DJNZR1,LOORG3000HA0:
-ORG3100HA1:
-ORG4500HINTIE0:
-ORG4800HINTTF0:
-ORG5500HLED:
DB01H,02H,03HDB04H,05H,06HDB07H,08H,09HEND主程序主程序中断矢量地址表中断矢量地址表子程序子程序中断服务程序中断服务程序中断服务程序中断服务程序常数表区常数表区起始起始ORG0000HAJMPSTARTORG0003HAJMPINDATADIS1EQU30HDIS2EQU31HDIS3EQU32HDIS4EQU33HAD_DATAEQU34HADDR_ADEQUOO40HADDR_273_1EQU0001HADDR_273_2EQU0002HADDR_273_3EQU0003HADDR_273_4EQU0004HADDR_KEY_WREQU0005HADDR_KEY_RDEQU0006HLABBIT7FHSTART:
SETBEA;开中断SETBEX0;中断允许SETBIT0;触发方式CLRLAB;请标志位MOVA,#0FFHMOVDPTR,#ADDR_ADMOVXDPTR,A;启动ADJNBLAB,$;查询标志位SJMP$;等待INDATA:
MOVDPTR,#ADDR_ADMOVA,#0FFHMOVXA,DPTR;读ADMOVAD_DATA,A;保存ADSETBLAB;置标志位RETIAD中中断断服服务务程程序序主主程程序序设置设置RAM有关有关字节字节单元单元定义定义译码译码地址地址设置设置RAM有关有关位位单元单元AD转转换换启启动动电子工程设计电子工程设计-控温系统控温系统电子工程设计电子工程设计-控温系统控温系统:
显示系统显示系统电子工程设计电子工程设计-控温系统:
控温系统:
键盘管理键盘管理ORG0000HAJMPSTARTORG0003HAJMPINDATADIS1EQU30HDIS2EQU31HDIS3EQU32HDIS4EQU33HAD_DATAEQU34HADDR_ADEQUOO40HADDR_273_1EQU0001HADDR_273_2EQU0002HADDR_273_3EQU0003HADDR_273_4EQU0004HADDR_KEY_WREQU0005HADDR_KEY_RDEQU0006HLABBIT7FHSTART:
SETBEA;开中断SETBEX0;中断允许SETBIT0;触发方式CLRLAB;请标志位MOVA,#0FFHMOVDPTR,#ADDR_ADMOVXDPTR,A;启动ADJNBLAB,$;查询标志位SJMP$;等待INDATA:
MOVDPTR,#ADDR_ADMOVA,#0FFHMOVXA,DPTR;读ADMOVAD_DATA,A;保存ADSETBLAB;置标志位RETIAD中中断断服服务务程程序序主主程程序序设置设置RAM有关有关字节字节单元单元定义定义译码译码地址地址设置设置RAM有关有关位位单元单元AD转转换换启启动动电子工程设计电子工程设计-控温系统控温系统(AD数据采集)数据采集)电电子子工工程程设设计:
计:
数数据据采采集集INT0程序设计基础和举例程序设计基础和举例1)拆字程序拆字程序:
将一个字节的两个将一个字节的两个BCD码十进制数拆开码十进制数拆开,并变成并变成相应的相应的ASCII码码,存入两个存入两个RAM单元中单元中.功能功能:
一个字节一个字节BCD码转成两字节码转成两字节ASCII码码RAM:
30H存放存放BCD码码31H存放高位转换值存放高位转换值32H存放低位转换值存放低位转换值ASCII码对应数字码对应数字0-9是是30-39,所以只要加上所以只要加上#30H(0011,0000)既可既可00110011MOVR0,#32H;将将32H送送R0MOVR0,#00H;32H单元清零单元清零MOVA,30H;BCD码送码送AXCHDA,R0;将将低低4位位BCD送送32H(低四位互换)(低四位互换)ORL32H,#30H;将将#30H加入加入32H单元单元SWAPA;将高位将高位BCD调整到低位调整到低位ORLA,#30H;将将#30H加入加入A形成形成ASCII码码MOV31H,A;将高位将高位BCD送送31H单元单元例例2:
多分支转换读取存储器的内容多分支转换读取存储器的内容功能功能:
根据入口条件转向几个分支根据入口条件转向几个分支(R3)=(0,1,2,3)入口条件入口条件:
0内部内部RAM,1外部外部256个单元个单元,2外部外部64K,3外部外部4K(R0)出口出口RAM低低8位地址位地址(R1)出口出口RAM高高8位地址位地址(A)=01.23内RAM外RAM外RAM外RAM25625664K4K键盘处理程序键盘处理程序键盘处理键盘处理键号键号-A入口地址入口地址A+DPTR键散键散转转JMPA+DPTR键键位位1键键位位2键键位位3键键位位NN-JMP:
MOVA,R3;入口条件入口条件MOVDPTR,#JMPTBL;转移表首址转移表首址MOVCA,A+DPTR;取变量取变量JMPA+DPTR;变量加转移表首址变量加转移表首址JMPTBL:
DBMEM0JMPTBL;求转移长度求转移长度DBMEM1JMPTBL;求转移长度求转移长度D