两个简单的单片机编程问题。

1、取出50H-5FH中的最大数存入60H单元。
2、设计延时2ms程序,已知单片机晶振为6Mhz。

第一个程序 采用循环结构完成 循环次数=15 数据指针初始值指向50H单元
将一个数取出 放入60H单元 取第二个数与60H单元数进行比较
大的数存入60H保存 修改指针 循环次数减1 不等于0
则再取下一个数继续比较 直到循环结束。
第二个程序: 可以编一个延时子程序 延时2ms 已知单片机晶振为6Mhz
则一个机器周期=2微妙
YS2ms: mov r7,#250
ys11: nop
nop
djnz r7,ys11
ret
延时时间= (4*2微妙)*r7=8*250=2000微妙=2毫秒

呵呵 满意就给加分哦
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-10-31
1.
ORG 0000H
JMP MAIN
MAIN:
MOV 60H,50H;先将第一个数当成最大者,然后逐个比较
MOV R0,#51H
LOOP:
CLR C
MOV A,@R0
SUBB A,60H ;A-(60H),如果A大,则Cy=0 ,否则(60H)大
JC NEXT ;A和最大值(60H)比较,如果A大于(60H),那就把A赋值给60H
MOV A,@R0
MOV 60H,A
NEXT:
INC R0
MOV A,R0
CJNE A,#60H,LOOP
SJMP $

2.
DELAY: ;误差 0us
MOV R7,#07H
DL1:
MOV R6,#08H
DL0:
MOV R5,#22H
DJNZ R5,$
DJNZ R6,DL0
DJNZ R7,DL1
RET
相似回答