版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1第3章
指令系统与编程技术23.5程序设计技术
本节通过介绍汇编语言一些典型的程序设计实例,使各位进一步理解和掌握51系列单片机的指令系统,并熟练掌握程序设计的方法和技巧。3程序结构 ORG 0000H LJMP MAIN ORG 0003H LJMP INT0ZD ORG 000BH LJMP T0ZD ORG 0013H LJMP INT1ZD ORG 001BH LJMP T1ZD ORG 0023H LJMP CXKZD
ORG 0100HMAIN: MOVSP,#60H
… ORG 0800HINT0ZD: …… RETI ORG XXXXHT0ZD: …… RETI ORG XXXXHINT1ZD: …… RETI ORG XXXXHT1ZD: …… RETI ORG XXXXHCXKZD: …… RETI END4程序结构举例 ORG 0000H LJMP MAIN ORG 0003H LJMP INT0ZD ORG 0100HMAIN: MOVSP,#60H MOV DPTR,#0200H MOV R0,#30H MOV R7,#10HLOOP: MOVX A,@DPTR MOV @R0,A INC R0 INC DPTR DJNZ R7,LOOP SJMP$ ORG 0800HINT0ZD: CPLP1.1 RETI END
5例:编写中断服务程序,进入中断服务程序时,需要把程序状态寄存器PSW、累加器A、数据指针DPTR进栈保护,中断返回之前恢复。中断服务程序结构6
解:中断服务程序如下:
PUSHPSW PUSHACC PUSHDPL PUSHDPH
…
;中断处理程序
POPDPH POPDPL POPACC POPPSW RETI ;中断返回7例:在片外RAM中,从首地址为2000H的存储区中一个数据块,该数据块中不包含0元素。试将该数据块传送到片内RAM首地址为30H的存储区中,若遇到0结束传送。编程提示外部RAM向内部RAM的数据转送一定要经过累加器A,利用判零条件转移可以判断是否要继续传送数据。8设置数据指针A=0?开始结束读片外数据到AA送片内修改指针YN9解:参考程序:
MOVDPTR,#2000H
MOVR1,#30H LOOP:MOVXA,@DPTR JZEXIT
MOV@R1,A
INCDPTR
INCR1 SJMPLOOP
EXIT:…设置数据指针A=0?开始结束读片外数据到AA送片内修改指针YN10例:在图3.14中,P1口控制了8个发光二极管L7~L0。试编程序,使L7~L0按二进制计数规律从1~128增1计数,某位为1,对应的发光二极管发亮,否则熄灭,计到128时结束。请您编程110→AA=128?开始结束A+1→AA→P1YN调延时子程序流程图12解:参考程序如下:
ORG0100H CLRANEXT:INCA MOVP1,A LCALLDELAY2S CJNEA,#128,NEXT
… END0→AA=128?开始结束A+1→AA→P1YN调延时子程序13例3.5.4双分支程序设计。片内RAM的20H单元和30H单元各存放了一个8位无符号数,请比较这两个数的大小,利用图3.19(a)中的发光二极管显示比较结果:若(20H)≥(30H),则P1.0管脚连接的L0发光;若(20H)<(30H),则P1.1管脚连接的L1发光。14解:比较两个无符号数常用的方法是将两个数相减,然后判断有否借位Cy。若Cy=0,无借位,(20H)≥(30H);若Cy=1,有借位,(20H)<(30H)。程序的流程图如图3.18(b)所示。源程序如下:
MOV A,20H CLR C ;Cy=0 SUBBA,30H ;带借位减法
JCL1 ;若Cy=1,转移到
L1 SETBP1.0 ;若Cy=0,(20H)≥(30H),点亮L0 SJMPDOWN ;直接跳转到结束等待L1: SETBP1.1 ;(20H)<(30H),点亮L1DOWN: SJMP $ END15例3.5.8用图3.20中的K1、K0控制8个发光二极管的亮灭模式。假设8个发光二极管的显示方式如下:
P3.5 P3.4 显示方式
0 0 全亮
0 1 间隔发亮
1 0 L7~L4灭,L3~L0亮
1 1 L7~L4亮,L3~L0灭16课堂练习17解:参考程序如下:
MOV P3,#00110000B ;使P3口锁存器相应位置位
MOV A,P3 ;读K1、K0信号
ANL A,#00110000B ;屏蔽无关位
SWAP A ;将相应位移位到低位
RL A ;左环移一位,(A)←(A)×2 MOV DPTR,#TABLE ;转移指令表的基地址送数据指针DPTR JMP @A+DPTR ;散转指令TABLE: AJMP ONE ;转移指令表
AJMP TWO AJMP THREE AJMP FOURONE: MOVP1,#0FFH ;全亮
SJMPDOWNTWO:MOVP1,#55H ;间隔发亮
SJMPDOWNTHREE:MOVP1,#0FH ;L7~L4灭,L3~L0亮
SJMP DOWNFOUR: MOV P1,#0F0H ;L7~L4亮,L3~L0灭
SJMPDOWNDOWN:…
18例:三重循环程序设计。设单片机时钟晶振频率为fosc=6MHz,计算下列延时子程序的延时时间。DELAY: MOVR7,#100 ;1周期指令DEL0: MOV R6,#10 ;1周期指令DEL1: MOV R5,#125 ;1周期指令DEL2: NOP ;1周期指令
NOP ;1周期指令
DJNZR5,DEL2 ;2周期指令
DJNZR6,DEL1 ;2周期指令
DJNZR7,DEL0 ;2周期指令
RET ;2周期指令19解:内循环次数为125次,延时时间约为1ms,第二层循环延时达到10ms(循环次数为10),第三层循环延时到1S(循环次数为100),所以该子程序的延时时间约为1S。20;TEST2.1实验二.11.将BCD码整数0~255存入片内RAM的20H、21H、22H中,然后转换为二进制整数00H~FFH,保存到寄存器R4中。
ORG0000H LJMPMAIN ORG0100HMAIN: MOVR0,#20H ;BCD存放高位地址
MOVR7,#03H ;BCD码0--255,最多3位
CLRA MOVR4,ALP1: MOVB,#10 MULAB ;乘10 ADDA,@R0 ;加下一位的值
INCR0 ;指向下一单元
MOVR4,A ;结果存入R4 DJNZR7,LP1 ;转换未结束则继续
SJMP$ ;设置断点,观察实验结果R4中的内容
END21
在内存单元20H、21H存放二个非压缩的BCD码,将其转换为压缩的BCD码并存于内存单元22H。;test2.2实验二.2 ORG0000H LJMPMAIN
ORG0100HMAIN: MOVSP,#60H MOVA,21H ANLA,#0FH MOVR2,A MOVA,20H ANLA,#0FH SWAPA ORLA,R2 MOV22H,A
SJMP$ END参考程序22在内存单元20H、21H、22H存放数字0-9的ASCII码,将其转换成对应的非压缩的BCD码并存于原内存单元。;tes
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 竞聘岗位发言稿
- 2024版机电设备买卖合同书
- 2024年车辆收车协议:以租代购方式2篇
- 2024琴行教师聘请及教学成果考核合同范本3篇
- 2024年高速公路路灯采购与安装合同
- 2024年高压输电线路设计咨询专项合同范本
- 三人协作商务协议样本一
- 2024承包土方填土合同模板
- 祛斑知识培训课件下载
- 2024年食品行业ERP系统购销协议3篇
- 北京市海淀区2024-2025学年高一上学期期末考试历史试题(含答案)
- 常用口服药品的正确使用方法
- 《心肺复苏机救治院内心搏骤停患者护理专家共识》解读
- 2024年危险化学品生产经营单位其他从业人员考试题库附答案
- 信号分析与处理课程设计课程教学大纲基本要求及规范(集中实践环节)
- 2024年中考物理真题及分类汇编-考点25:磁现象-电生磁
- 2024年更新版:精准农业无人机植保服务合同
- 机械年终考核述职报告
- 中华传统文化之文学瑰宝学习通超星期末考试答案章节答案2024年
- 2023年外交学院招聘笔试备考试题及答案解析
- 二、菲涅耳公式表示反射波、折射波与入射波的振幅和位相关
评论
0/150
提交评论