下载此文档

第7章 程序设计复习课.ppt


文档分类: | 页数:约14页 举报非法文档有奖
1/14
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/14 下载此文档
文档列表 文档介绍
双击添加主标题
单片机原理与应用
——邵铁锋
(600)**********
题目1:编写一循环程序,将内部RAM的20H~2FH共16个连续单元清零。
MOV R0, #20H
MOV R7, #10H ;循环次数
LOOP: MOV ***@R0, #00H
INC R0
DJNZ R7, LOOP ;
END
题目2:编写一循环程序,求出内部RAM 20H单元二进制数中含"1"的个数,并将结果存入21H单元。
MOV 21H,#00H
MOV A, 20H
MOV R7, #08H
LOOP: RLC A ;左循环一位,最高位到C
JNC NEXT ;C为0
INC 21H ;C为1,21H内容+1
NEXT: DJNZ R7,LOOP
END
题目3:编写一循环程序,查找内部RAM 30H~50H单元中出现FFH个数,并将查找搭结果存入51H单元。
MOV R0, #30H ;数据区首地址
MOV R7, #20H ;数据个数
MOV 51H,#00H ;先设只有0个0ffh
LOOP: MOV A, ***@R0
INC R0
CJNE A,#0FFH,NEXT ;比较,不等于0ffh转NEXT
;等于0ffh,继续执行
INC 51H
NEXT: DJNZ R7,LOOP
END
查表程序设计
1. 用DPTR查表,查0~9平方表(平方对应表自己列出)
CHA: PUSH DPH
PUSH DPL
MOV DPTR, #TAB
MOVC A, ***@A+DPTR
POP DPL
POP DPH
2000H
TAB: DB 00H, 01H,04H, 09H
分支程序设计
基本分支程序:
(1)若(A)< 14H, 转NEXT,否则继续执行
(2)若(A)≤ 14H, 转NEXT, 否则继续执行
(3)若(A)≥ 14H, 转NEXT, 否则继续执行
(4)若(A)> 14H, 转NEXT, 否则继续执行
(A)≤ 14H
相当于(A) < 15H
CJNE A, #15H, LOOP
LOOP: JC NEXT
……
(A)> 14H
相当于(A) ≥ 15H
CJNE A, #15H, LOOP
LOOP: JNC NEXT
……
CJNE A, #14H, LOOP
LOOP: JNC NEXT
……
CJNE A, #14H, LOOP
LOOP: JC NEXT
……
CJNE A,#data,rel;(A)=#data,继续 Cy←0
(A)>#data, 转 Cy←0
(A)<#data, 转 Cy←1
特点:只有<时,Cy←1
例1:按下面公式编写程序,x为无符号数,存在20h单元,y存放在21h单元。
分支程序例1
ORG 0030H
MOV A, 20H
CJNE A, #15H, LOOP1
LOOP1: JC NEXT1
CJNE A, #28H, LOOP2
LOOP2: JNC NEXT2
MOV B, #2
MUL AB
AJMP NEXT2
NEXT1: CPL A
NEXT2: MOV 21H, A
END
最终结果存在 21h中
实验三 ,P1口输出
延时程序
*
50ms延时程序。
延时程序与MCS-51指令执行时间有很大的关系。在使用12MHz晶振时,一个机器周期为1µs,执行一条DJNZ指令的时间为2µs。这时,可用双重循环方法写出下面如下的延时50ms的程序:
DEL: MOV R7,#200
DEL1: MOV R6,#125
DEL2: DJNZ R6,DEL2;125*2=250µs
DJNZ R7,DEL1 ;*200=50ms
RET
*
以上延时程序不太精确,它没有考虑到除“DJNZ R6,DEL2 ”指令外的其它指令的执行时间,如把其它指令的执行时间计算在内,它的延时时间为:
(250+1+2)*200+1=
如果要求比较精确的延时,可按如下修改:
DEL: MOV R7,#200
DEL1: MOV R6,#123
NOP
DEL2: DJNZ R6,DEL2 ;2*123+2=248µs
DJNZ R7,DEL1 ;(248+2)*200+1=
RET
,注意。软件延时程序,不允许有中断,否则将严重影响定时的准确性。

第7章 程序设计复习课 来自淘豆网www.taodocs.com转载请标明出处.