单片机ppt课件:8汇编讲义.ppt

上传人:小飞机 文档编号:2155497 上传时间:2023-01-20 格式:PPT 页数:63 大小:262.50KB
返回 下载 相关 举报
单片机ppt课件:8汇编讲义.ppt_第1页
第1页 / 共63页
单片机ppt课件:8汇编讲义.ppt_第2页
第2页 / 共63页
单片机ppt课件:8汇编讲义.ppt_第3页
第3页 / 共63页
单片机ppt课件:8汇编讲义.ppt_第4页
第4页 / 共63页
单片机ppt课件:8汇编讲义.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《单片机ppt课件:8汇编讲义.ppt》由会员分享,可在线阅读,更多相关《单片机ppt课件:8汇编讲义.ppt(63页珍藏版)》请在三一办公上搜索。

1、第七章:汇编程序设计,通知:,考试时间:教学16周星期三(12月16号)下午5-6节(13:30开始)考试地点:一教304、305、306教室,第七章 汇编语言程序设计基础,单片机系统中编程语言:以汇编语言为主高级语言C-51汇编语言:源程序结构紧凑、灵活、汇编成目标程序效力高,占用內存资源少,运行速度快和实时性,适合实时测控等应用领域。应用程序主要应用范围:如下图所示,应用程序主要由以下三类程序组成 过程检测 巡回检测程序 数字滤波程序 处理和监视 线性化处理 测量值与工程值转换程序 应用 越限报警程序 控制操作台服务程序 判断程序 过程分析程序 过程控制 开环控制程序 PID算法 采样控制

2、器 程序 计算程序 闭环控制程序 系统输入/出控制算法 其他算法 输出控制程序 事故处理程序 公共应用程序 制表打印程序 服务子程序,程序设计概述,汇编程序设计的基本步骤设计任务的分析,确定算法和思路程序总体设计及其流程图编写源程序源程序的汇编与调试编写源程序说明文件,程序设计概述,汇编语言程序设计方法汇编语言源程序的基本结构划分功能模块自上而下逐步求精,应用程序设计技术,功能性设计 1运行结构设计:满足功能条件下,有简捷、可靠运行路径软件模块化,任务划分相对独立的硬件环境划定边界条件:交换条件、数据类型、资源分配,应用程序设计技术,2任务单元设计:划分子程序:相对独立性、完整性、通用性。占用

3、公共资源最少出入口规范清楚交接面简单、清晰、规范、操作类型尽量集中,应用程序设计技术,3可靠性设计:足够的时序余度,足够的容错设计。可靠性控制设计:系统安全、保护、自检、修复。,应用程序设计技术,4运行管理设计:1低功耗运行管理休闲、掉电设置(8051具备)双时钟:主时钟高速运行、子时钟低速运行可设置调整主时钟下分频管理:控制CPU最佳运行方式,应用程序设计技术,2 MCU对外围电路管理可关断的外围端口控制可编程外围器件的编程控制外围辅助电路的时钟、供电与电源管理,程序设计概述,全面了解硬件结构、指令系统、功能要求以及有关算法。节省内存单元、缩短程序长度、加快运行速度。,系统应用程序结构,键操

4、作结构:人机交互式自主运行程序结构:流水作业式RTOS任务管理嵌入结构:(多任务软件平台)1时间管理 2任务调度 3输入/出操作 4任务间通信 5任务的同步 6信息的调用管理,单片机系统应用程序一个重要的条件:实时性:要求控制系统能在短时间作出相应处理地控制信息,常用伪指令,标号赋值伪指令标号等值伪指令-EQU定义标号值伪指令-DL数据存储说明伪指令定义字节数据伪指令-DB定义字数据伪指令-DW存储器说明伪指令-DS程序起始地址伪指令-ORG汇编结束伪指令-END,7.3 应用程序设计与技巧7.3.1 MCS-51源程序的基本格式中断矢量地址在程序存储器的0003H-0032H区间而起始地址比

5、须从0000H开始 复位后系统从0000H开始执行程序0000H-0002H单元放跳转指令 转入主程序段,中断矢量地址表 每个中断服务程序地址空间只有8个单元,每个中断矢量地址空间中安排跳转到中断服务程序指令,单片机汇编源程序的基本格式,ORG0000HAJMPSTARTORG0003HAJMP INDATADIS1 EQU 30HDIS2 EQU 31HDIS3 EQU 32HDIS4 EQU 33HAD_DATA EQU 34HADDR_AD EQU OO40HADDR_273_1 EQU 0001HADDR_273_2EQU 0002HADDR_273_3 EQU 0003HADDR_2

6、73_4 EQU 0004HADDR_KEY_WR EQU 0005HADDR_KEY_RD EQU 0006H,LABBIT7FHSTART:SETBEA;开中断SETBEX0;中断允许SETBIT0;触发方式CLRLAB;请标志位MOVA,#0FFHMOVDPTR,#ADDR_ADMOVXDPTR,A;启动ADJNBLAB,$;查询标志位SJMP$;等待INDATA:MOV DPTR,#ADDR_ADMOVA,#0FFHMOVXA,DPTR;读ADMOVAD_DATA,A;保存ADSETBLAB;置标志位RETI,AD中断服务程序,主程序,设置RAM有关字节单元,定义译码地址,设置RAM有

7、关 位 单元,AD转换启动,电子工程设计-控温系统,电子工程设计-控温系统:显示系统,电子工程设计-控温系统:键盘管理,ORG0000HAJMPSTARTORG0003HAJMP INDATADIS1 EQU 30HDIS2 EQU 31HDIS3 EQU 32HDIS4 EQU 33HAD_DATA EQU 34HADDR_AD EQU OO40HADDR_273_1 EQU 0001HADDR_273_2EQU 0002HADDR_273_3 EQU 0003HADDR_273_4 EQU 0004HADDR_KEY_WR EQU 0005HADDR_KEY_RD EQU 0006H,LA

8、BBIT7FHSTART:SETBEA;开中断SETBEX0;中断允许SETBIT0;触发方式CLRLAB;请标志位MOVA,#0FFHMOVDPTR,#ADDR_ADMOVXDPTR,A;启动ADJNBLAB,$;查询标志位SJMP$;等待INDATA:MOV DPTR,#ADDR_ADMOVA,#0FFHMOVXA,DPTR;读ADMOVAD_DATA,A;保存ADSETBLAB;置标志位RETI,AD中断服务程序,主程序,设置RAM有关字节单元,定义译码地址,设置RAM有关 位 单元,AD转换启动,电子工程设计-控温系统(AD数据采集),电子工程设计:数据采集,INT0,程序设计基础和举

9、例 1)拆字程序:将一个字节的两个BCD码十进制数拆开,并变成相应的ASCII码,存入两个RAM单元中.功能:一个字节BCD码转成两字节ASCII码 RAM:30H存放BCD码 31H存放高位转换值 32H存放低位转换值 ASCII码对应数字0-9是30-39,所以只要加上#30H(0011,0000)既可,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;将#30

10、H加入A形成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,键盘处理程序,键盘处理 键号-A,入口地址 A+DPTR,键散转 JMPA+DPTR,键位1,键位2,键位3,键位N,N-JMP:MOV A,R3;入口条件MOV DPTR,#JMPTBL;转移表首址 MOVC A,A+DPTR;取变量JMP A+DPTR;变量加转移表首址

11、 JMPTBL:DB MEM0 JMPTBL;求转移长度 DB MEM1 JMPTBL;求转移长度 DB MEM2 JMPTBL;求转移长度 DB MEM3 JMPTBL;求转移长度,MEM0:MOV A,R0;从内存RAM读数256 RETMEM1:MOVX A,R0;从外部RAM读数256 RET MEM2:MOV DPL,R0 MOV DPH,R1 MOVX A,DPTR;从外部64KRAM读数 RET,MEM3:;读取外部4kMOV A,R1;RAM高8位地址送AANL A,#0FH;屏蔽高4位,剩下A11-A8低4位ANL P2,#F0H;清除P2口低4位ORL P2,A;(P2口)

12、+(A)=(P2+(R1低4位)P2MOVX A,R0;原P2口高4位 R1低4位 R0低8位RET,访问四个不同位置RAM空间:MOV A,R3;输入变量 MOV DPTR,#JMPTBL;形成转移表首址MOVC A,A+DPTR;变量+首址送AJMP A+DPTR;完成目标地址的转移,查表程序 8051汇编语言中设计俩条查表指令 MOVC A,A+DPTR MOVC A,A+PC 例如:将十六进制数转换成ASCII码的子程序。十六进制数放在R0低四位,转换成结果放回R0中。出口和入口都在R0中。ORG 2160H MOV A,R0 DB 30H,31H,32H ANL A,#0FH;保留低

13、四位 DB 33H,34H,35H ADD A,#02;变址调整 DB 36H,37H,38H MOVC A,A+PC;查表 DB 39H,41H,42H MOV R0,A;保存结果 DB 43H,44H,45H,46H RET,查表程序(LED显示器)LED:MOV DPTR,#LEDA;表首地址送数据指针 MOVC A,A+DPTR;查表;显示LEDLEDA:DB 40H,79H,24H,30H,19H 0 1 2 3 4 DB 12H,02H,78H,00H,18H 5 6 7 8 9,例3 循环结构:1 DJNZ Rn,rel 2 DJNZ direct,ret MOV 30H,#0F

14、FH;LOOP:NOP;一个机器周期 NOP;一个机器周期 DJNZ 30H,LOOP;两个机器周期 例4:多重循环:MOV R3,#0FFH;LOOP1:MOV R2,#0FFH;LOOP2:NOP;一个机器周期 NOP;一个机器周期 DJNZ R2,LOOP2;两个机器周期 DJNZ R3,LOOP1;两个机器周期,多字节Y值的查表键盘键值查表:键值(0 1 2 3 4-9)转换16位操作入口地址键值 0 1 2 3 4 5 6 7 8 90123 0186 0234 0316 0415 0520 0626 0710 0818 0929入口地址 键值放20H,结果放22H,23H单元,MO

15、V DPTR,#TAB;指向表首高8位地址 MOV A,20H;取键值(09)RL A;键值乘2作查表偏移量MOV 20,A;存偏移量MOVC A,A+DPTR;取高8位地址MOV 22H,A;存高8位地址INC DPTR;指向表首低8位地址 MOV A,20H;取偏移量,MOVC A,A+DPTR;取低8位地址 MOV 23H,A;存低8位地址 RET程序中因Y值为双字节,所以键值乘以2做为查表偏移量。当键值为“3”时偏移量为“6”。因A的值最大为255,所以查表的表格长度不能超过256。如果超过时因改变数据指针DPTR。,TAB:DB 01,23H;“0”键入口地址 DB 01,86H;“

16、1”键入口地址 DB 02,34H;“2”键入口地址 DB 03,16H;“3”键入口地址 DB 04,15H;“4”键入口地址 DB 05,20H;“5”键入口地址 DB 06,26H;“6”键入口地址 DB 07,10H;“7”键入口地址 DB 08,18H;“8”键入口地址 DB 09,29H;“9”键入口地址,试题,已知单片机系统时钟频率fosc=12MHZ,试编写用定时器1方式2 对T1口的信号脉冲计数,要求每计满100次将使P1.7口输出一个4us脉冲信号。并写出计算初值的过程。一个机器周期tp=12/12*106=1us x=100次(x补)=28-100=156=9CH,程序设

17、计 模拟量 数字量转换 模拟量 转换 数字滤波 加工 标度变换 显示 计算 数值计算 驱动 报警 逻辑判断 机械运动 非线性补偿,数字滤波,干扰信号有两大类:1周期性 2非周期性数字滤波能有效抑制周期性干扰信号数字滤波是用程序实现,降低成本 稳定性好数字滤波可以对很低频率进行滤波数字滤波方法灵活,参数调整方便,数字滤波:RC阻容滤波对高频信号的抗干扰明显,对低频信号的干扰去除效果较差,但数字滤波可以对很低的频率干扰信号进行滤波数字滤波优点:*数字滤波稳定性好*参数便于修改*一种数字滤波程序可以被多个控制回路采用*不存在阻抗匹配问题*可以对0.01HZ信号滤波,1程序判断滤波2平滑滤波 A 数字

18、算术平滑法 B数据平滑法 1)递推平均滤波法 2)加权移动平均滤波法 C防止脉冲干扰平均值3中值滤波法4一阶滞后滤波法5复合滤波法6高通或带通滤波法,程序判断滤波,根据物理变化规律适当选取两次采样之间的变化量(增量Y)增量Y与采样值进行比较,1程序判断滤波法:滤除大的干扰信号 根据经验,确定出两次采样输入信号可能出现的最大偏差 Y.当出现Y信号时应舍弃,当出现Y信号时应视为有用信号.Y(K)Y(K-1)Y 则 Y(K)=Y(K)取本次Y(K)Y(K-1)Y 则 Y(K)=Y(K-1)取上一次适用于变化缓慢的参数:温度 位置 大电流 大电感,Y的取值:Y太大 则易使干扰信号串入。系统误差大 Y太

19、小 则有可能将真信号滤掉。跟踪不完全使用程序判断滤波器关键是选取Y值,程序判断滤波:流程图,将目有效值视为上次采样值,暂存新值,新值减上一次值,求绝对值,差0,差超限,以上次值为准,返回,Y,N,N,Y,Y(K),Y(K)-Y(K-1),Y(K)-Y(K-1)Y,Y(K)-Y(K-1)Y,Y(K)-Y(K-1),Y(K)-Y(K-1)0,程序:MOV30H,31HACALL LOADMOV31H,ACLRCSUBBA,30H 0=JNCT11CPLAINCA T11:ADDA,#XXHJNCT12MOV31H,30H T12:RET,;当前值送30H;调新值采样子程序,新值送A;送新值31H单

20、元;清标志;求两值偏差,结果存A;判差值0否?C=0转移;新值求反;+1 求补码 求绝对值;判超限否?XXH为限值反码Y;不超限,本次采样值有效;超限,以上次采样值为准;返回,有时需要增加新鲜采样值的比重,即在不同的位置设置不同的新值。提高系统抗干扰能力。加权递推方法.,二.平滑滤波,滤波白噪音:白噪音一个重要特性,即它的统计平均值为零。采用求平均值方法消除随机误差 算数平均值 Y(K)=1/N X(i)算数递推平均滤波:以第 i次采样时刻为基准。向前递推N个周期。计算机存储N个周期的采样值,并累计采样次数。求 累加和、求平均值,作为第i次的真实采样值 N值取太大:平滑度高,灵敏度低 N值取太

21、小:平滑度低,灵敏度高 流量N值取12次 压力N值取4次,针对脉冲干扰,用算数平均值方法,去除干扰效果不好。算数平均值方法适用于周期性干扰场合,软件抗干扰:针对单片机汇编程序的抗干扰措施1)指令冗余:在对程序流向关键指令位置加上几条NOP指令RET、RETI、ACALL、LCALL、SJMP、AJMP JC、JNZ、JZ、JNB。2)软件陷阱:用一段引导程序强行将跑飞程序引导到一个指定地址,执行出错处理程序。返回正常运行程序:,软件陷阱:一般安置在四个区域1未使用的中断向量区:0003H-002BH2未使用的ROM空间:添满NOP命令3表格区:表格区最后安排陷阱4程序区转移点后面:LJMP S

22、JMP AJMP RET RETI,ORG0000H0000 START:LJMPMAIN;转主程序0003LJMPPGINT0;转INT00006NOP0007NOP0008LJMPERR;转软件陷阱000BLJMPPGT0;转T0000ENOP000FNOP0010LJMPERR;转软件陷阱0013LJMPERR;转软件陷阱0016NOP0017NOP0018LJMPERR;转软件陷阱,001BLJMPPGT1;转T1001ENOP001FNOP0020LJMPERR;转软件陷阱0023LJMPERR;转软件陷阱0026NOP0027NOP0028LJMPERR;转软件陷阱002BLJMP

23、ERR;转软件陷阱002ENOP002FNOP0030LJMPERR;转软件陷阱0050MAIN:-;主程序使用了三个中断:INT0,T0,T1,在未使用的中断矢量地址单元中安排陷阱软件,中断服务程序首地址 中断源 首地址1.外部中断0(INT0)0003H2.定时器0益出中断 000BH3.外部中断1(INT1)0013H4.定时器1益出中断 001BH5.串行口中断 0023H6.定时器2益出中断 002BH,0000H0003H0032H0050H,中断服务,主程序,程序起始,0000H-0002H单元为程序起始0003H-0032H单元为中断服务程序,CJNEA,#DATA,LOOP1

24、;数据比较AJMP LOOP;转向处理程序,断裂点NOP;陷阱1NOPLJMPERR;引向陷阱处理LOOP1:JCLOOP2;数据比较AJMPLOOP3;数据比较,断裂点NOP;陷阱2NOPLJMPERR;引向陷阱处理LOOP2:-;数据处理LOOP3:MOVA,R3;保存数据MOVdirect,aRET;返回,断裂点NOP;陷阱3NOPLJMPERR;引向陷阱处理,陷阱,在断裂点处加陷阱处理,抗干扰措施:,软件陷阱安排在正常程序执行不到的区域看门狗-程序运行监视系统复位 1硬件复位:返回起始地址 2软件复位:不能简单返回起始地址0000H,还要考虑系统中的中断标志等的状态恢复。具体划分为:冷

25、/热启动处理,标度变换,线性变化公式:Y=(Ymax-Ymin)(X-Nmin)/(Nmax-Nmin)+YminY-测量值(工程值)Ymax-参数最大量程Ymin-参数最小量程 这一部分是已知Nmax-A/D最大转换值Nmin-A/D最小转换值X-测量值(数字值),例题,电阻表:量程1-1000欧姆 Ymin=1欧姆 Nmin=0(数字值)Ymax=1000欧姆 Nmax=1876(数字值)Y=(1000-1)/(1876-0)(X-0)+1=(999/1876)X+1=0.5325X+1,标度变换(非线性变换),1公式算法:Y=(Ymax-Ymin)(X-Nmin)/(Nmax-Nmin)+Ymin2多项式变换:使用插值法,分段求出各自参数线性变换和非线性变换结合,表度变换程序框图,开始,数据进栈,Nmin和Nmax地址压栈,计算(x-Nmin)/(Nmax-Nmin),结果开方吗,Ymax Ymin 地址压栈调子程序 结果存A,结束,结果开方,N,Y,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号