关于语单片机程序的小问题

来源:百度知道 编辑:UC知道 时间:2024/05/24 14:19:40
汇编 指令执行

MOV A,#1
MOV 30H,A

此时A中没有数值了 ?

从1加到100 怎么写程序

用下列 指令
MOV ;传送
ADD ;相加
JMP ;无条件跳转
DEMC ;减1 若为零 则PC+2 否则PC+1

请注释

可以的话 能简练说一下定时 中断 分频 吗 ?

楼主人品好!基本不关闭问题。我来回答一下

MOV 是传送指令,只有目的操作数会改变,即跟着MOV的单元会变
所以A中有数值

用下列 指令 写程序
MOV ;传送
ADD ;相加
JMP ;无条件跳转
DEMC ;减1 若为零 则PC+2 否则PC+1
DEMC 应为DJNZ
DJNZ 的功能就是 减1 若为零 则PC+2 否则PC+1

因为用ADD指令,不会加进位,进位另外处理,此外1+2+~~100=5050,二进制超过8位,所以要分高低8位,低位放入30H,高位放入31H

程序如下

ORG 0100H
MAIN:
MOV R7,#100;赋值100给R7
MOV 30H,#0
MOV 31H,#0;高低8位清零
CLR A;A清零
LOOP:
ADD A,R7;A加R7后把数放入A
JC NEXT;判断进位C,为1跳转
DJNZ R7,LOOP;C不为1,R7减1,跳转到LOOP
MOV 30H,A;完成循环后把低八位放入30H
SJMP $;动态循环
NEXT:
INC 31H;当C=1,有进位,高8位加1
CLR C;C清零,等待进位
DEC R7;R7减1
JMP LOOP;无条件跳转到LOOP
最后这里要注意一下,不能用DJNZ 代替 DEC 和JMP

中断 定时 分频 都是运用定时/计数器来实现的功能,这也是单片机最主要功能
比较复杂
建议楼主看书

1.A中的数据还是1,mov只是把源寄存器的内容复制到目标寄存器,而不是移动过去,从这点来说似乎叫做复制才对。
2.mov就是传送,把源寄存器或源地址内的数据传送的目的寄存器或地址中,同时源寄存器或源地址内的数据不会消失。
add加法,把源地址或寄存器的内容加到目的寄存器中,同时源寄存器或地址内的数据也不会消失
jmp就是