版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六讲51单片机言程序设计1微机原理及应用
PrincipleandApplicationsofMicro-Computers教学目的:
掌握MCS-51单片机汇编程序设计方法要求: 掌握MCS-51单片机汇编程序设计结构和设计方法掌握程序设计的模块化思路和分层设计思路;掌握如何使用高级语言访问MCU的片上资源难点: 掌握程序设计的模块化思路和分层设计思路MCS-51单片机汇编程序的结构MCS-51单片机汇编程序设计方法例1,循环程序设计包含的主要指令:DJNZ包含的主要C语言:for;while…do内容汇编语言程序定义定义汇编语言程序是多条指令陈述语句的有序组合,并且是为了实现某个特定的控制目标和算法目的特点指令的有序组合为了特定的控制目标或算法目的从功能上看,由下面几部分组成启动和初始化程序(仅执行一次)主程序(一个“死循环”)子程序(某些特定子功能的陈述单元)和中断程序一个简单的汇编语言程序源码(见p.60)功能
定时(周期性地)将一个变量从05H增加到FFH,之后再重复该过程代码见教材p.60的3.3.1节0100H75815FMOVSP,#5FH;堆栈底部位于60H存放指令码的首地址指令码指令(指令助记符和操作码)指令注释2023/10/115定时(周期性地)将一个变量从05H增加到FFH,之后再重复该过程ORG0000HLJMPmain_entry;启动程序入口ORG0003HLJMPINT0_svr;外部中断0程序入口…;其它中断程序入口ORG0100Hmain_entry:;启动程序和主程序 MOVSP,#57H MOVPSW,#00H LCALLinit_8051;初始化程序main_loop: … LCALLTask1;子程序或子任务
… LJMPmain_loopTask1:…END以一个跳转语句开始中断程序的入口地址是固定的(简单解释中断的响应)讨论几个问题:(1)为什么首句是一个跳转语句?(2)几个ORG伪指令的作用是什么?(3)如果没有任何中断程序,必须采用这样的程序结构?2023/10/116定时(周期性地)将一个变量从05H增加到FFH,之后再重复该过程counter DATA30HInitValueEQU5 ORG000HLJMPmain
ORG100Hmain:MOVsp,#5FHMOVPSW,#00HMOVA,#0AHLCALLdelayMOVcouner,#InitValueForeverRun:……
ORG0200Hdelay:……#defineInitValue5unsignedcharCounter;voiddelay(unsignedchartimes){unsignedchari,j;for(i=time;i>0;i--)for(j=100;j>0;j++);}main(void){delay(10);Counter=InitValue;while(1){delay(100);Counter++;if(Counter==0xFF)Counet=InitValue;}}程序存储器中的代码形态见教材p.62图3-1内容MCS-51单片机汇编程序的结构MCS-51单片机汇编程序设计方法例1,循环程序设计包含的主要指令:DJNZ包含的主要C语言:for;while…do汇编语言程序设计方法软件功能分析,根据功能合理划分成若干模块分别编写下面程序模块根据资源,确定堆栈,寄存器组等初始位置,编写启动程序根据需要配置相关功能单元以及变量的初始状态,编写初始化程序编写硬件相关的驱动程序编写中断程序编写功能模块对应的子程序根据各子功能模块(和任务)之间关系,编写主程序重点和难点:编写功能模块对应的子程序2023/10/1110模块化程序设计基本思想:将一个大的程序按功能分割成一些小模块特点:各模块相对独立、功能单一、结构清晰、接口简单控制了程序设计的复杂性提高元件的可靠性缩短开发周期避免程序开发的重复劳动易于维护和功能扩充开发方法:自上向下,逐步分解,分而治之2023/10/1111模块设计原则模块独立每个模块完成一个相对独立的特定功能。模块之间的关系力求简单。例如:模块之间最好只通过数据传递发生联系,而不发生控制关系。使用与模块独立的变量。模块内的数据,对于不需要这些数据的其他模块来说,应该不允许使用;对一个模块内的变量的修改不会影响其他模块的数据,即模块的私有数据只属于这个模块。模块规模适当分解模块要注意层次要多层次的分解任务,注意对问题的抽象化,开始不要过于注意细节,以后再细化求精。2023/10/1112C程序结构模块化程序设计内容MCS-51单片机汇编程序的结构MCS-51单片机汇编程序设计方法例1,循环程序设计包含的主要指令:DJNZ包含的主要C语言:for;while…do2023/10/1114程序设计示例1功能
计算n个无符号整型数之和要求写成子程序形式子程序的输入和输出参数输入:数据个数存放在R4中,数据的起始地址在R0中输出:和存放在R4(高8位)和R5(低8位)中2023/10/1115程序设计示例1的源码Sum:
PUSHAcc
;保存A的内容在堆栈区
PUSHB
;保存B的内容在堆栈区
PUSHPSW
;保存PSW的内容在堆栈区 MOVA,#00H;首先将和的低8位清零 MOVB,#00H;首先将和的高8位清零 CLRC;将进位位清零 MOVR5,#00H;R5寄存器清零Sum1: ADDCA,@R0
;将一个字节的数据加到和的低字节中 MOVR5,A;保存和的低字节到R5中 CLRA;累加器A清零 ADDCA,B;将进位位加到和的高8位中MOVB,A;将和的高8位仍保存在B中 MOVA,R5;将临时保存在R5中的和的低8位传送到A中 INCR0;数据缓冲区指针加1,指向下一个字节
DJNZR4,Sum1
;累加是否继续?
;累加完成,和存放在B(高8位)和A(低8位)中 MOVR4,B;将和的高8位传送到R4中
POPPSW
;从堆栈区恢复PSW的内容
POPB
;从堆栈区恢复B的内容
POPAcc
;从堆栈区恢复A的内容
RET#definexDataPt((unsighnedchar*)0x00 )#definepR4=(char*)0x03;unsignedintDataSum(void){unsignedinti,result;CY=0;for(i=0;i<*pR4;i++)result+=*(xDataPt+i);*pR4=result;}2023/10/1116程序设计课内练习1功能
将片外扩展的数据存储器中的10个无符号整型数转移到片内数据存储器中要求写成子程序形式子程序的输入和输出参数输入:保存原数据的起始地址为8000H输出:片内数据存储器的起始地址为80H2023/10/1117程序设计课内练习1续MOVR6,#20;LOOP:MOVDPTR,#8000H;MOVR0,#80H;MOVXA,@DPTR;MOV@R0,A;INCDPTRINCR0DJNZR6,LOOPRET
voidDataMove(void){unsignedinti,result;charidata*DTo=(char*)0x80;charxdata*DFrom;*DFrom=(char*)0x8000;for(i=0;i<20;i++)*(DTo+i)=*(DFrom+i);}MCS-51单片机汇编程序仿真和编译器一个简单易用的MCS-51单片机汇编程序编辑,仿真和编译器Proview32(fromFrinklinSoftwareInc.)Version3.3.4Buildnumber8.63获取方法网络上搜索总结MCS-51单片机汇编程序的结构MCS-51单片机汇编程序设计方法例1,循环程序设计包含的主要指令:DJNZ包含的主要C语言:for;while…do问题和讨论子程序的调用和返回过程都涉及堆栈的操作
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 收购工厂玩具合同模板
- 货车司机合同模板
- 物业消防维修合同模板
- 隔断玻璃安装合同模板
- 退休返聘劳务合同模板
- 采购石粉合同模板
- 餐馆加盟转让合同模板
- 采购玉米合同模板
- 顾客订货合同模板
- 音响出借合同模板
- 国网新安规培训考试题及答案
- 5.1+走近老师(课件)2024-2025学年七年级道德与法治上册统编版
- 湖南省长沙市2023-2024学年八年级上学期期中考试数学试卷(含答案)
- 【班主任工作】2024-2025学年秋季安全主题班会教育周记录
- 2024年云南合和(集团)股份限公司招聘3人高频500题难、易错点模拟试题附带答案详解
- 2024-2030年中国蛋及蛋制品行业市场发展趋势与前景展望战略分析报告
- +陕西省渭南市富平县2023-2024学年九年级上学期摸底数学试卷
- 《探究与实践 交通运输在全球经济发展中的作用》课件-2024-2025学年七年级地理上册湘教版
- ISO∕IEC 42001-2023人工智能管理体系(中文版)
- 江苏省徐州市2022-2023学年高二上学期期中数学试题(学生版+解析)
- 高三生物命题说题比赛一等奖课件
评论
0/150
提交评论