80C51单片机程序设计
CONST EQU 3344H CONST1 EQU 30H PP EQU R0 ORG 0000H JMP MAIN ORG 0050H MAIN: MOV DPTR,# CONST ;(DPTR)=3344H MOV A,#CONST1 (A)=30H MOV PP,#10 ;(R0)=10 MOV A,PP ;(A)=10 NOP END 编写程序要求: 不仅要完成规定的功能任务,而且还要求:执行速度快、占用内存少、条理清晰、阅读方便、便于移植、巧妙而实用。 一般应按以下几个步骤进行: 散转程序是一种并行多分支程序。 循环控制的一般方法: 循环次数已知---- 利用循环次数控制 循环次数未知---- 利用关键字控制 利用“逻辑尺” ---- 根据“逻辑尺”的内容,进行控制 计数控制循环结构Count control loop structure DJNZ Rn,rel ;以工作寄存器作控制计数器 DJNZ direct,rel ;以直接寻址单元作控制计数器 条件控制循环结构 Condition control loop structure 一般常用比较转移指令或条件判跳指令进行控制和实现。 循环嵌套结构Nested loop structure 伪指令:仅在汇编时起控制作用,是为汇编服务的一些指令。 伪操作:由伪指令确定的操作 “伪”体现在汇编时不产生机器指令代码,不影响程序的执行,仅指明在汇编时执行一些特殊的操作。 (DB、DW定义的表一般数的个数不得超过80个) 通知汇编程序,在目标代码中,以标号为首地址保留表达式值的若干存储单元以备源程序使用。汇编时,对这些单元不赋值。 ----循环次数事先不知道先判断,后执行。 延时子程序可根据延时长短,自行编写 例:将内部RAM中起始地址为data的数据串送到外部RAM中起始地址为buffer的存储区域中,直到发现‘$’(24H)字符,传送停止 deta EQU 33h buffer EQU 1000H ORG 1000H MOV R0,#data MOV DPTR,#buffer LOOP1:MOV A,@R0 CJNE A,#24H,LOOP2 ;判断是否为$字符 SJMP LOOP3 ;是,转结束 LOOP2:MOVX @DPTR,A ;不是,传送数据 INC R0 INC DPTR SJMP LOOP1 ;传送下一数据 LOOP3:END NOP END 【例4.10】设Xi均为单字节数,并按顺序存放在以50H为首地址的内RAM存储单元中,数据长度(个数)N存在R2中,试编程求和S=X1+X2+‥‥+XN,并将S(双字节)存放在R3R4中,(设S<65536) 解:程序如下: SXN: MOV R2,#N ;置数据长度(循环次数) MOV R3,#00H ;和单元(高8位)清0 MOV R4,#00H ;和单元(低8位)清0 MOV R0,#50H ;求和数据区首址 LOOP:MOV A,R4 ;读前次低8位和 ADD A,@R0 ;低8位累加 MOV R4,A ;存低8位和 CLR A ; ADDC A,R3 ;高8位加进位 MOV R3,A ;存高8位和 INC R0 ;指向下一数据 DJNZ R2,LOOP ;判N个数据累加完否? SJMP $ ;退出循环 置循环初值 循环体 循环修改 循环控制 退出循环 RET 【例4.12】 内部RAM 20H单元开始存有8个数,试找出其中最大的数,送入MAX单元。 解:程序如下: ORG 1000H DELAY:MOV R6,#200 ; 1Tm LOOP1: MOV R7,#248 ; 1Tm NOP ; 1Tm LOOP2: DJNZ R7,LOOP2 ; 2Tm DJNZ R6,LOOP1 ; 2Tm RET
您可能关注的文档
最近下载
- 《GB_T 18802.331-2024低压电涌保护器元件 第331部分:金属氧化物压敏电阻(MOV)的性能要求和试验方法》专题研究报告.pptx
- 2015-2021年全国体育单招数学真题汇编.pdf VIP
- 2025军队文职公共知识法律部分讲义.pdf VIP
- 大学生职业生涯规划与就业指导教学教案(共10课).docx VIP
- 《民法典之债权法》课件.ppt VIP
- 无线局域网技术与实践课程标准教学教案.docx
- 2002年上海市第十六届初中物理竞赛(大同中学杯)初赛试题.doc VIP
- 2023年四川信息职业技术学院单招职业技能考试题库及答案解析word版.docx VIP
- 大学生职业生涯规划与就业指导课标教案.docx VIP
- 2025年统招专升本云南省医学综合考试试题及答案.docx VIP
原创力文档

文档评论(0)