你是想要左移还是右移?还是一直循环就可以了?
如果是左移右移就要调用了"intrins.h"的文件包,如果是一直循环,那么用while循环语句就可以实现了,如下:
左移右右:#include "reg52.h"
#include"intrins.h" //包含_crol_函数所在的头文件
#define uint unsigned int // 宏定义
#define uchar unsigned char
void delayms(uint); //说明子函数
uchar aa; //定袖个变量,用来给P1口赋值
void main() //主函数
{
aa=0xfe; //赋初值11111110
while(1) //大循环
{
P1=aa; //先点亮第一个发光管
delayms(500); //延时500毫秒
aa=_crol_(aa, 1); //将aa循环左移1位后同给aa
}
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
我已经一句写出来,可以看得慬吧!
MOV R0,50;
DL2:MOV R1,#250;
DL1:NOP;
NOP;
DJNZ R1,DL1
DJNZ R2,DL2
精确延时时间为1*1us+[(1+1+2)*1us*250+(1+2)*1us]*10=10057us
MOV R1,#98
LOOP_2: MOV R0,#253
DJNZ R0,$
DJNZ R1,LOOP_2
MOV R0, #57
DJNZ R0,$
RET
没有误差 你算算