永发信息网

单片机程序员进来看个简单的

答案:1  悬赏:80  手机版
解决时间 2021-08-24 22:48
  • 提问者网友:爱了却不能说
  • 2021-08-24 05:16

我把MAIN最后一条LJMP MAIN删除了,以为让他们8个灯闪一下就关.但是我试了一下,他现在这个程序是闪了2下才关.

我想你们给我解析一下为什么会是闪2下??还有,R4,R5之类的缓存区,可以有多少个?

最佳答案
  • 五星知识达人网友:一袍清酒付
  • 2021-08-24 05:40

根据你的意思,貌似你是高电平驱动LED灯的吧?就是说MOV P1,#00H是熄灭8个LED灯的?


你把那个LJMP MAIN去掉是有问题的,程序会顺序执行下去到END结束,不会如你所想的到第二个LCALL DELAY结束。你想停止的话应该把LJMP MAIN换成SJMP $才可以。SJMP $这条指令的作用是等待/暂停。


但如果程序像你那样也不会闪两下,不知道你是仿真还是在板子上做的?


像R4、R5这种称为工作寄存器,51单片机里有4个工作寄存器组,从第0组到第3组,每次只能有一组工作寄存器组工作,默认是第0组。而每一组有8个寄存器,从R0到R7,可以同时使用,每一组的R0到R7都是独立存在的,有自己的物理空间,所以换句话说51单片机一共有32个工作寄存器,但每次能同时使用的只有8个。


如有不清楚的欢迎追问!


我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯