题目是:8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。#include#includeunsigned char D1;void delay(unsigned int);sbit beep=P2^3;void main(){ D1=0xfe;P1=D1;while(1) {beep=0;delay(620);D1=_crol_(D1,1);P1=D1;beep=1;delay(620);} }void delay(unsigned int z){unsigned int x,y;for(x=z;x>0;x--) for(y=200;y>0;y--);}我的这个程序不能实现灭500ms,设置的晶振频率是11.0592MHZ,麻烦大家帮我改一下,万分的感激啊!!!
#include<reg52.h>
#include<intrins.h>
unsigned char D1;
void delay(unsigned int);
sbit beep=P2^3;
void main()
{
D1=0xfe;
P1=D1;
while(1)
{
beep=0;
delay(620);
D1=_crol_(D1,1);
P1=D1;
beep=1;
delay(620);
}
}
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}
为了看清楚点重发了一下。
void delay(unsigned int);
sbit beep=P2^3;
void main(){
uchar reg=0x00;
while(1){
P1=0xff-(1<<reg);
beep=0;
delay(500);
P1=0xff;
beep=1;
delay(500);
reg=(reg==7)?(reg+1):0;
}
}
void delay(unsigned int z){
unsigned int x,y;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}追问
我学的语句还没有那么难,我学了while、for语句,能帮忙用简单的这些语句帮我改吗?我也学学您的这种方法,感谢啊!
追答不学习新的方法,用你的方法,我也不会。
本回答被提问者采纳#include<intrins.h>
unsigned char D1;
void delay(unsigned int);
sbit beep=P2^3;
void main()
{
D1=0xfe;
P1=D1;
while(1)
{
beep=0;
delay(500);
D1=_crol_(D1,1);
P1=D1;
beep=1;
delay(500);
}
}
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
我看了你的可以说实现闪烁的功能追问
大概的500ms就行,就是实现不了灭500ms,我改了半天了,还是改不对!
追答你的led和那个IO口相连的啊!
这个程序不可能实现不了!
beep = 1;就是把led熄灭了啊!