我把MAIN最后一条LJMP MAIN删除了,以为让他们8个灯闪一下就关.但是我试了一下,他现在这个程序是闪了2下才关.
我想你们给我解析一下为什么会是闪2下??还有,R4,R5之类的缓存区,可以有多少个?
我把MAIN最后一条LJMP MAIN删除了,以为让他们8个灯闪一下就关.但是我试了一下,他现在这个程序是闪了2下才关.
我想你们给我解析一下为什么会是闪2下??还有,R4,R5之类的缓存区,可以有多少个?
根据你的意思,貌似你是高电平驱动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个。
如有不清楚的欢迎追问!