89S52单片机怎样让几个端口同时输出?

来源:百度知道 编辑:UC知道 时间:2024/06/17 20:05:07
我是用来驱动LED,想让LED一个接一个亮后在一起亮。

单片机的I/O口都是以8位一次指令输入/输出的。
你把A写0000,0001B,先延时一定时间T,再把A值传给输出口P1,点亮P1.0,再延时,用位移指令(RR或RL)移动A,再传给P1,刷新输出值点亮P1.1,依次往复。
ORG 0000H
LJMP main
ORG 0030H
main:
MOV A,#01H
MOV P1,#00H
LOOP:
ACALL delay
MOV P1,A
RL A
LJMP LOOP

delay:
MOV R1,#100
D1:
MOV R2,#50
D2:
MOV R3,#50
D3:
DJNZ R1,D3
DJNZ R2,D2
DJNZ R3,D1
RET

C语言:
void delay()
{int i,j,k;
for(i=0;i<50,i++)
for(j=0;j<100,j++)
for(k=0,k<100<k++);
}
void main()
{int acc=0x01;
int out=P1;
out=0;
for(;;)
{delay();
out=acc;
acc=acc<<1;
}
}

可以同时输出的,你只要给相应的端口送数据就可以了。
楼上,写法有问题
汇编写法
MOV P1,00H

0x00是c语言的写法………………
P1=0x00;

如果你的LED接在同一个接口,比如P1口。
可以执行写端口操作。
MOV P1,0x00
即可点亮所有的LED。当然写入的数值是00还是FF要看你的电路接法。