- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机编程技巧补充
单片机汇编编程及程序下载 学习汇编编程的要点 学习编程的要点: 1. 要了解目标器件的体系结构(与语言无关) : 包括:总线结构、存储结构、地址映射、控制寄存器及功能操作。 掌握指令体系及指令操作机理。 通过仿真调试,观察程序的执行流程和执行结果是深入掌握汇编指令的根本途径 3. 高级语言与低级语言的关系(与语言有关) 高级语言和低级语言各有优缺点,不要以为只要掌握其中某一种就行了。 单片机的汇编 1. 单片机的体系结构简单:冯诺依曼结构: 数据总线和程序总线分别独立编址。 数据存储编制:片内RAM和片外RAM分开编址,寻址方式不同,片外使用DPTR间接寻址,片内RAM可直接寻址和简介寻址(采用工作组寄存器间址寻址),52的80H-0FFH高128BRAM与SFR区地址重合,采用间接寻址 ROM寻址,只有一个寻址寄存器PC,故片内ROM和片外ROM统一编址。 指令体系:指令条数少,寻址方式种类较多。 掌握单片机汇编,要综合掌握指令与寻址方式。初步理解掌握汇编指令体系大概4-6小时即可,比较深入地掌握汇编编程需要20-40小时的例程调试。 学习方法 Practice make Progress. IT课程是实践性很强的课程,实践是成功的必由途径。 阅读和理解例程,掌握例程,学习例程的编程风格和算法。 调试,观察程序的执行流程和通过分析执行结果理解程序。 使用Keil C51将C编译成汇编程序,综合掌握汇编编程与单片机C语言编程。 通过设计模拟项目,综合例程,编制自己的程序,调试分析和改进程序,这如同学习别人的招式,形成自己的套路。 编程风格 有无良好的编程风格是区分菜鸟和老手的标志之一。 良好的编程风格有如下益处: 1. 可以减少语法错误,减少BUG的产生 2. 便于自己理解程序,为日后程序的复用提供方便。 3. 便于别人理解自己程序,为团队合作减少障碍 编程风格是业界约定成俗的传统格式,已有一些标准规范, 规范源程序的版式,形成以流程图指导编程的习惯 可参阅:林锐博士 《高质量C++/C编程指南》 近期课程相关例程的分析 引导程序段 设置定时器工作模式 设置T0初值 开启T0中断 启动T0中断 T0溢出? 循环等待中断 中断服务程序 P3.5原值取反 P3.7原值取反 T0初值重装 中断返回 Y N 方波程序的流程图 近期课程相关例程的分析 使用T0中断产生方波的例程: ORG 0 SJMP STAR ORG 0BH ;T0溢出中断入口 SJMP T0F STAR: MOV TMOD, #0 ;设置计数器工作模式 MOV P3, #03FH ;P3.7初始化为0输出 MOV TH0, #0F9H MOV TL0, #18H ;设置T0的计数初值 MOV IE, #0FFH ;开启全部中断 SETB TR0 ;启动T0计数器 SJMP $ ;跳转至当前PC值,等待T0中断 ;这里相当于C中while (1); 近期课程相关例程的分析 T0F: CPL P3.5 ;周期性的取反 CPL P3.7 ;周期性的取反 MOV TH0, #0F9H MOV TL0, #18H ;T0溢出后重新设定初值 CPL P3.0 RETI ;中断返回 END 跳转、循环和分支程序解释 构成程序分支有三种机制:控制转移指令构成分支,子程序调用构成程序分支,中断构成程序分支 跳转指令:无条件转移指令和条件转移指令 无条件转移指令:AJMP, SJMP和LJMP, JMP @ AJMP 转移范围11位地址数,绝对转移, (PC)+2 ← adr11(填入) SJMP 8位地址数(补码), 相对转移, (PC)+2+rel,(可向后) LJMP adr16, 长跳转,直接转移地址, (PC) ← adr16, JMP @A+DPTR, 间接转移, (不影响PSW) 条件转移:(地址变化:补码加) ① JZ rel , JNZ rel 判断A的内容 ② JC
文档评论(0)