单片机汇编讲义_第1页
单片机汇编讲义_第2页
单片机汇编讲义_第3页
单片机汇编讲义_第4页
单片机汇编讲义_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机课件汇编讲义第1页,共63页,2022年,5月20日,2点53分,星期二通知:考试时间:教学16周星期三(12月16号) 下午5-6节(13:30开始)考试地点:一教304、305、306教室第2页,共63页,2022年,5月20日,2点53分,星期二第七章 汇编语言程序设计基础单片机系统中编程语言:以汇编语言为主高级语言C-51汇编语言:源程序结构紧凑、灵活、汇编成目标程序效力高,占用內存资源少,运行速度快和实时性,适合实时测控等应用领域。应用程序主要应用范围:如下图所示第3页,共63页,2022年,5月20日,2点53分,星期二应用程序主要由以下三类程序组成 过程检测 巡回检测程序

2、数字滤波程序 处理和监视 线性化处理 测量值与工程值转换程序 应用 越限报警程序 控制操作台服务程序 判断程序 过程分析程序 过程控制 开环控制程序 PID算法 采样控制器 程序 计算程序 闭环控制程序 系统输入/出控制算法 其他算法 输出控制程序 事故处理程序 公共应用程序 制表打印程序 服务子程序 第4页,共63页,2022年,5月20日,2点53分,星期二程序设计概述汇编程序设计的基本步骤设计任务的分析,确定算法和思路程序总体设计及其流程图编写源程序源程序的汇编与调试编写源程序说明文件第5页,共63页,2022年,5月20日,2点53分,星期二程序设计概述汇编语言程序设计方法汇编语言源程

3、序的基本结构划分功能模块自上而下逐步求精第6页,共63页,2022年,5月20日,2点53分,星期二应用程序设计技术功能性设计 1运行结构设计:满足功能条件下,有简捷、可靠运行路径软件模块化,任务划分相对独立的硬件环境划定边界条件:交换条件、数据类型、资源分配 第7页,共63页,2022年,5月20日,2点53分,星期二应用程序设计技术2任务单元设计:划分子程序:相对独立性、完整性、通用性。占用公共资源最少出入口规范清楚交接面简单、清晰、规范、操作类型尽量集中第8页,共63页,2022年,5月20日,2点53分,星期二应用程序设计技术3可靠性设计:足够的时序余度,足够的容错设计。可靠性控制设计

4、:系统安全、保护、自检、修复。第9页,共63页,2022年,5月20日,2点53分,星期二应用程序设计技术4运行管理设计:1低功耗运行管理休闲、掉电设置(8051具备)双时钟:主时钟高速运行、子时钟低速运行可设置调整主时钟下分频管理:控制CPU最佳运行方式第10页,共63页,2022年,5月20日,2点53分,星期二应用程序设计技术2 MCU对外围电路管理可关断的外围端口控制可编程外围器件的编程控制外围辅助电路的时钟、供电与电源管理第11页,共63页,2022年,5月20日,2点53分,星期二程序设计概述全面了解硬件结构、指令系统、功能要求以及有关算法。节省内存单元、缩短程序长度、加快运行速度

5、。第12页,共63页,2022年,5月20日,2点53分,星期二系统应用程序结构键操作结构:人机交互式自主运行程序结构:流水作业式RTOS任务管理嵌入结构:(多任务软件平台) 1时间管理 2任务调度 3输入/出操作 4任务间通信 5任务的同步 6信息的调用管理第13页,共63页,2022年,5月20日,2点53分,星期二单片机系统应用程序一个重要的条件: 实时性: 要求控制系统能在短时间作出相应处理地控制信息, 第14页,共63页,2022年,5月20日,2点53分,星期二常用伪指令标号赋值伪指令标号等值伪指令-EQU定义标号值伪指令-DL数据存储说明伪指令定义字节数据伪指令-DB定义字数据伪

6、指令-DW存储器说明伪指令 -DS程序起始地址伪指令-ORG汇编结束伪指令-END第15页,共63页,2022年,5月20日,2点53分,星期二7.3 应用程序设计与技巧7.3.1 MCS-51源程序的基本格式中断矢量地址在程序存储器的0003H-0032H区间而起始地址比须从0000H开始 复位后系统从0000H开始执行程序0000H-0002H单元放跳转指令 转入主程序段0000H 跳转指令0002H 转主程序 0003H 中断矢量0032H 地址表0050H 主程序 第16页,共63页,2022年,5月20日,2点53分,星期二中断矢量地址表 每个中断服务程序地址空间只有8个单元, 每个

7、中断矢量地址空间中安排跳转到中断服务程序指令0000H-0002H 0003H0032H中断矢量表跳转中断服务程序指令0050HxxxxH主程序区中断服务程序区转主程序第17页,共63页,2022年,5月20日,2点53分,星期二单片机汇编源程序的基本格式ORG 0000HAJMP STARTORG 0003HLJMP INTIE0ORG 000BHLJMP INTTF0ORG 0050HSTART:MOV A, #00HMOV R1 , #7FHMOV R0, #00HL0:MOV R0,AINC R0DJNZ R1,LOORG 3000HA0:-ORG 3100HA1:-ORG 4500H

8、INTIE0:-ORG 4800HINTTF0:-ORG 5500HLED:DB 01H,02H,03HDB 04H,05H,06HDB 07H,08H,09HEND主程序中断矢量地址表子程序中断服务程序中断服务程序常数表区起始第18页,共63页,2022年,5月20日,2点53分,星期二ORG0000HAJMPSTARTORG0003HAJMP INDATADIS1 EQU 30HDIS2 EQU 31HDIS3 EQU 32HDIS4 EQU 33HAD_DATA EQU 34HADDR_AD EQU OO40HADDR_273_1 EQU 0001HADDR_273_2EQU 0002H

9、ADDR_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;置标志位RETIAD中断服务程序主程序设

10、置RAM有关字节单元定义译码地址设置RAM有关 位 单元AD转换启动电子工程设计-控温系统第19页,共63页,2022年,5月20日,2点53分,星期二电子工程设计-控温系统:显示系统 第20页,共63页,2022年,5月20日,2点53分,星期二电子工程设计-控温系统:键盘管理 第21页,共63页,2022年,5月20日,2点53分,星期二ORG0000HAJMPSTARTORG0003HAJMP INDATADIS1 EQU 30HDIS2 EQU 31HDIS3 EQU 32HDIS4 EQU 33HAD_DATA EQU 34HADDR_AD EQU OO40HADDR_273_1 E

11、QU 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;保存ADS

12、ETBLAB;置标志位RETIAD中断服务程序主程序设置RAM有关字节单元定义译码地址设置RAM有关 位 单元AD转换启动电子工程设计-控温系统(AD数据采集)第22页,共63页,2022年,5月20日,2点53分,星期二电子工程设计:数据采集INT0第23页,共63页,2022年,5月20日,2点53分,星期二程序设计基础和举例 1) 拆字程序: 将一个字节的两个BCD码十进制数拆开,并变成相应的ASCII码,存入两个RAM单元中.功能: 一个字节BCD码转成两字节ASCII码 RAM: 30H存放BCD码 31H存放高位转换值 32H存放低位转换值 ASCII码对应数字0-9是30-39,

13、 所以只要加上#30H(0011,0000)既可00110011第24页,共63页,2022年,5月20日,2点53分,星期二 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形成ASCII码 MOV 31H, A ;将高位BCD送31H单元第25页,共63页,2022年,5月20日,2点53分,星期二 例2:多分支转换

14、读取存储器的内容 功能:根据入口条件转向几个分支 (R3)=(0,1,2,3) 入口条件 : 0 内部RAM, 1 外部256个单元, 2 外部64K, 3 外部4K (R0) 出口 RAM低8位地址 (R1) 出口 RAM高8位地址 第26页,共63页,2022年,5月20日,2点53分,星期二 (A)=0 1. 2 3内RAM 外RAM 外RAM 外RAM256 256 64K 4K第27页,共63页,2022年,5月20日,2点53分,星期二键盘处理程序键盘处理 键号-A入口地址 A+DPTR键散转 JMPA+DPTR键位1键位2键位3键位N第28页,共63页,2022年,5月20日,2

15、点53分,星期二N-JMP: MOV A , R3 ;入口条件MOV DPTR , #JMPTBL ;转移表首址 MOVC A , A+DPTR ;取变量JMP A+DPTR ;变量加转移表首址 JMPTBL: DB MEM0 JMPTBL ;求转移长度 DB MEM1 JMPTBL ;求转移长度 DB MEM2 JMPTBL ;求转移长度 DB MEM3 JMPTBL ;求转移长度第29页,共63页,2022年,5月20日,2点53分,星期二MEM0: MOV A ,R0 ;从内存RAM读数256 RETMEM1: MOVX A , R0 ;从外部RAM读数256 RET MEM2: MOV

16、 DPL , R0 MOV DPH , R1 MOVX A , DPTR ;从外部64KRAM读数 RET 第30页,共63页,2022年,5月20日,2点53分,星期二 MEM3: ;读取外部4kMOV A , R1 ;RAM高8位地址送AANL A , #0FH ;屏蔽高4位,剩下A11-A8低4位ANL P2 , #F0H ;清除P2口低4位ORL P2 , A ;(P2口)+(A)=(P2+(R1低4位) P2MOVX A , R0 ;原P2口高4位 R1低4位 R0低8位RET 原P2口高4位 R1低4位 R0第31页,共63页,2022年,5月20日,2点53分,星期二访问四个不同

17、位置RAM空间:MOV A, R3 ; 输入变量 MOV DPTR , #JMPTBL ;形成转移表首址MOVC A , A+DPTR ;变量+首址送AJMP A+DPTR ;完成目标地址的转移第32页,共63页,2022年,5月20日,2点53分,星期二查表程序 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 ;保留低四位 DB 33

18、H, 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 第33页,共63页,2022年,5月20日,2点53分,星期二查表程序 (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第34页,

19、共63页,2022年,5月20日,2点53分,星期二例3 循环结构:1 DJNZ Rn , rel 2 DJNZ direct , ret MOV 30H , #0FFH ; LOOP: NOP ; 一个机器周期 NOP ; 一个机器周期 DJNZ 30H , LOOP ; 两个机器周期 例4:多重循环: MOV R3 , #0FFH ; LOOP1: MOV R2 , #0FFH ; LOOP2 : NOP ;一个机器周期 NOP ;一个机器周期 DJNZ R2 , LOOP2 ;两个机器周期 DJNZ R3 , LOOP1 ;两个机器周期第35页,共63页,2022年,5月20日,2点53

20、分,星期二多字节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单元第36页,共63页,2022年,5月20日,2点53分,星期二MOV DPTR, #TAB ;指向表首高8位地址 MOV A , 20H ;取键值(09)RL A ;键值乘2作查表偏移量MOV 20 , A ; 存偏移量MOVC A , A+DPTR ;取高8位地址MOV 22H , A ;存高8位地址INC

21、DPTR ;指向表首低8位地址 MOV A , 20H ;取偏移量第37页,共63页,2022年,5月20日,2点53分,星期二 MOVC A , A+DPTR ;取低8位地址 MOV 23H, A ;存低8位地址 RET程序中因Y值为双字节,所以键值乘以2做为查表偏移量。当键值为“3”时偏移量为“6”。因A的值最大为255,所以查表的表格长度不能超过256。如果超过时因改变数据指针DPTR。第38页,共63页,2022年,5月20日,2点53分,星期二TAB: DB 01,23H ; “0”键入口地址 DB 01,86H ; “1”键入口地址 DB 02,34H ; “2”键入口地址 DB

22、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”键入口地址第39页,共63页,2022年,5月20日,2点53分,星期二试题 已知单片机系统时钟频率fosc=12MHZ, 试编写用定时器1方式2 对T1口的信号脉冲计数,要求每计满100次将使P1.7口输出一个4us脉冲信号。并写出计算初值的过程。一个机器周期tp=12/12*106=1us x=100次 (x补)=28

23、-100=156=9CH第40页,共63页,2022年,5月20日,2点53分,星期二第41页,共63页,2022年,5月20日,2点53分,星期二程序设计 模拟量 数字量转换 模拟量 转换 数字滤波 加工 标度变换 显示 计算 数值计算 驱动 报警 逻辑判断 机械运动 非线性补偿第42页,共63页,2022年,5月20日,2点53分,星期二数字滤波干扰信号有两大类:1周期性 2非周期性数字滤波能有效抑制周期性干扰信号数字滤波是用程序实现,降低成本 稳定性好数字滤波可以对很低频率进行滤波数字滤波方法灵活,参数调整方便第43页,共63页,2022年,5月20日,2点53分,星期二数字滤波: RC

24、阻容滤波对高频信号的抗干扰明显,对低频信号的干扰去除效果较差,但数字滤波可以对很低的频率干扰信号进行滤波数字滤波优点: *数字滤波稳定性好 *参数便于修改 *一种数字滤波程序可以被多个控制回路采用 *不存在阻抗匹配问题 *可以对0.01HZ信号滤波第44页,共63页,2022年,5月20日,2点53分,星期二1程序判断滤波2平滑滤波 A 数字算术平滑法 B数据平滑法 1)递推平均滤波法 2)加权移动平均滤波法 C防止脉冲干扰平均值3中值滤波法4一阶滞后滤波法5复合滤波法6高通或带通滤波法第45页,共63页,2022年,5月20日,2点53分,星期二程序判断滤波根据物理变化规律适当选取两次采样之

25、间的变化量(增量Y)增量Y与采样值进行比较第46页,共63页,2022年,5月20日,2点53分,星期二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)取上一次适用于变化缓慢的参数:温度 位置 大电流 大电感第47页,共63页,2022年,5月20日,2点53分,星期二Y的取值: Y太大 则易使干扰信号串入。 系统误差大 Y太小 则有可能将真信号滤掉。跟踪不完全使用程序判断滤波器关键是选

26、取Y值第48页,共63页,2022年,5月20日,2点53分,星期二程序判断滤波:流程图将目有效值视为上次采样值暂存新值新值减上一次值求绝对值差0差超限以上次值为准返回YNNYY(K)Y(K)-Y(K-1)Y(K)-Y(K-1) YY(K)-Y(K-1) YY(K)-Y(K-1) Y(K)-Y(K-1) 0第49页,共63页,2022年,5月20日,2点53分,星期二 程序:MOV30H,31HACALL LOADMOV31H,ACLRCSUBBA,30H 0=JNCT11CPLAINCA T11:ADDA,#XXHJNCT12MOV31H,30H T12:RET;当前值送30H; 调新值采样

27、子程序,新值送A; 送新值31H单元; 清标志; 求两值偏差 ,结果存A; 判差值0否? C=0转移; 新值求反; +1 求补码 求绝对值; 判超限否? XXH为限值反码Y; 不超限,本次采样值有效; 超限,以上次采样值为准; 返回第50页,共63页,2022年,5月20日,2点53分,星期二 有时需要增加新鲜采样值的比重,即在不同的位置设置不同的新值。提高系统抗干扰能力。加权递推方法. 第51页,共63页,2022年,5月20日,2点53分,星期二二.平滑滤波滤波白噪音:白噪音一个重要特性,即它的统计平均值为零。采用求平均值方法消除随机误差 算数平均值 Y(K)=1/N X(i) 算数递推平

28、均滤波:以第 i次采样时刻为基准。向前递推N个周期。计算机存储N个周期的采样值,并累计采样次数。求 累加和、求平均值,作为第i次的真实采样值 N值取太大: 平滑度高,灵敏度低 N值取太小: 平滑度低,灵敏度高 流量N值取12次 压力N值取4次第52页,共63页,2022年,5月20日,2点53分,星期二 针对脉冲干扰,用算数平均值方法,去除干扰效果不好。 算数平均值方法适用于周期性干扰场合第53页,共63页,2022年,5月20日,2点53分,星期二软件抗干扰: 针对单片机汇编程序的抗干扰措施1)指令冗余 :在对程序流向关键指令位置加上几条NOP指令RET、RETI 、ACALL 、LCALL

29、 、SJMP、AJMP JC、JNZ 、JZ、JNB。2)软件陷阱:用一段引导程序强行将跑飞程序引导到一个指定地址,执行出错处理程序。返回正常运行程序:ERR:NOPNOPNOPLJMP ERRERR:软件陷阱出错返回程序为了保证跑飞程序扑获效果加几条NOP指令第54页,共63页,2022年,5月20日,2点53分,星期二软件陷阱:一般安置在四个区域1未使用的中断向量区 : 0003H-002BH2未使用的ROM空间 : 添满NOP命令3表格区 : 表格区最后安排陷阱4程序区转移点后面: LJMP SJMP AJMP RET RETI第55页,共63页,2022年,5月20日,2点53分,星期

30、二ORG0000H0000 START:LJMPMAIN;转主程序0003LJMPPGINT0;转INT00006NOP0007NOP0008LJMPERR;转软件陷阱000BLJMPPGT0;转T0000ENOP000FNOP0010LJMPERR;转软件陷阱0013LJMPERR;转软件陷阱0016NOP0017NOP0018LJMPERR;转软件陷阱001BLJMPPGT1;转T1001ENOP001FNOP0020LJMPERR;转软件陷阱0023LJMPERR;转软件陷阱0026NOP0027NOP0028LJMPERR;转软件陷阱002BLJMPERR;转软件陷阱002ENOP002FNOP0030LJMPERR;转软件陷阱0050MAIN:-;主程序使用了三个中断:INT0,T0,T1在未使用的中断矢量地址单元中安排陷阱软件第56页,共63页,2022年,5月20日,2点53分,星期二中断服务程序首地址 中断源 首地址1.外部中断0(INT0) 0003H2.定时器0益出中断 000BH3.外部中断1(INT1) 0013H4.定时器1益出中断 001BH5.串行口中断 0023H6.定时器2益出中断 002BH0000H0003

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论