再次求救 利用89C51的P1口控制8个发光二极管,相邻的4个管为一组,使两组每个0.5s交替发亮,周而复始.
来源:学生作业帮助网 编辑:作业帮 时间:2024/05/11 16:29:54
再次求救 利用89C51的P1口控制8个发光二极管,相邻的4个管为一组,使两组每个0.5s交替发亮,周而复始.
再次求救
利用89C51的P1口控制8个发光二极管,相邻的4个管为一组,使两组每个0.5s交替发亮,周而复始.
再次求救 利用89C51的P1口控制8个发光二极管,相邻的4个管为一组,使两组每个0.5s交替发亮,周而复始.
#include<REG51.h>
void delay(unsigned int ms)
{
unsigned int i;
unsigned char j;
for(i=ms;i>0;i--)
for(j=0;j<110;j++);
}
void main()
{
unsigned char temp=0x0f;
P1=0;
while(1)
{
P1=temp;
temp=temp^0xff;//实现高低4位的互换
delay(1457);//延时约500ms
}
}
#include
void delay()//延时子程序
{
unsigned char a,b,c;
for(c=23;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
}
void main()
{
全部展开
#include
void delay()//延时子程序
{
unsigned char a,b,c;
for(c=23;c>0;c--)
for(b=152;b>0;b--)
for(a=70;a>0;a--);
}
void main()
{
P1=0xf0;//亮四个
while(1)
{
delay();//延时0.5秒
P1=~P1;//取反,让另外四个亮,之前四个灭
}
}
这样就行了,见你这个比较简单和基础,所以呢就用了软件延时了
收起
程序如下:
ORG 0000H
MOV P1, #00001111B
LOOP:
XRL P1, #11111111B
LCALL DL500MS
SJMP LOOP
DL500MS: ;延时0.5s@12MHz
MOV R6, #244
全部展开
程序如下:
ORG 0000H
MOV P1, #00001111B
LOOP:
XRL P1, #11111111B
LCALL DL500MS
SJMP LOOP
DL500MS: ;延时0.5s@12MHz
MOV R6, #244
MOV R7, #151
DLY2:
DJNZ R7, $
DJNZ R7, $
DJNZ R7, $
DJNZ R7, $
DJNZ R6, DLY2
RET
END
收起