本函数实现连接在P1.0到P1.7阴极控制的LED点亮与熄灭控制,
点亮时间由第二个FOR结构实现。
*/
#include <AT89X51.h> //预处理命令
void main(void) //主函数名
{
unsigned int a; //定义变量a 为int 类型
do{ //do while 组成
P1_0 =0; //设P1.0 口为低电平,点亮LED
for (a=0; a<60000; a++); //这是一个循环
P1_0 =1; //设P1.0 口为高电平,熄灭LED
P1_1 =0; //设P1.1 口为低电平,点亮LED
for(a=0;a<60000;a++); //这是一个循环
P1_1 =1; //设P1.1 口为高电平,熄灭LED
P1_2 =0; //设P1.2 口为低电平,点亮LED
for(a=0;a<60000;a++); //这是一个循环
P1_2 =1; //设P1.2 口为高循环,熄灭LED
P1_3 =0; //设P1.3 口为低电平,点亮LED
for(a=0;a<60000;a++); //这是一个循环
P1_3 =1; //设P1.3 口为高电平,熄灭LED
P1_4 =0; //设P1.4 口为低电平,点亮LED
for(a=0;a<60000;a++); //这是一个循环
P1_4 =1; //设P1.4 口为高电平,熄灭LED
P1_5 =0; //设P1.5 口为低电平,点亮LED
for(a=0;a<60000;a++); //这是一个循环
P1_5 =1; //设P1.5 口为高电平,熄灭LED
P1_6 =0; //设P1_6 口为低电平,点亮LED
for(a=0;a<60000;a++); //这是一个循环
P1_6 =1; //设P1_6 口为高电平,熄灭LED
P1_7 =0; //设P1.7 口为低电平,点亮LED
for(a=0;a<60000;a++); //这是一个循环
P1_7 =1; //设P1.7 口为高电平,熄灭LED
}
while(1);
}
能不能在我的程序上继续添加代码来实现,刚接触单片机不太懂,所以麻烦大神们把程序写出来,拜托了~
请问一下if循环中第二个while是什么意思,延时消抖是什么意思?
追答按键,按下的过程中,会有多次接触、断开。
如果没有延时消抖过程,按下一次键,单片机就会进行多次的操作。
看看我的百度空间吧,有许多的例程。
好的,谢谢啦。
对,就是一个开关按下去在松开是8盏流水灯亮,再按下去松开就灭了!
追答你知道怎么使用定时器没,可以用定时器实现,在定时器中断里面进行流水灯的操作。
然后,如果按键按下的话,改变标志位的值为1,就停止定时器不让定时器计时,同时熄灭所有的灯。
如果按键再按下,改变标志位的值为0,继续计时,从刚才保存的数里读出流水灯的值,继续流水灯的操作
我还没接触定时器啊,怎么办?在我这个程序上不能实现吗?
追答#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define LED_PORT P1
sbit Key = P3 ^ 7;
void Delayms( uint ms )
{
uint x,y;
for( x=0; x<ms; x++ )
for( y=0; y<124; y++ );
}
void InitTimer0( void )
{
TMOD = 0x01;
TH0 = ( 65536 - 50000 ) / 256;
TL0 = ( 65536 - 50000 ) % 256;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main( void )
{
bit LEDFlag = 0;
LED_PORT = 0xff;
InitTimer0();
while(1)
{
if( !Key )
{
Delayms( 30 );
if( !Key )
{
LEDFlag =!LEDFlag;
if( LEDFlag )
{
TR0 = 0;
LED_PORT = 0xff;
}
else
{
TR0 = 1;
}
while( !Key );
}
}
}
}
void Timer0_ISR( void ) interrupt 1
{
static uchar cnt = 0;
static uchar LEDData = 0xfe;
TH0 = ( 65536 - 50000 ) / 256;
TL0 = ( 65536 - 50000 ) % 256;
cnt++;
if( cnt >= 10 )
{
cnt = 0;
LED_PORT = LEDData;
LEDData = _crol_( LED_PORT, 1 );
}
}
请问这个程序哪地方有流水的语句?还请详细讲解一下,麻烦了!
追答Timer0_ISR函数里面
本回答被提问者采纳