keil5按键控制灯亮灭(keil5小灯闪烁)

单片机用KEIL软件编译,功能是让小灯有周期的亮和灭,出现错误,大家帮帮忙啊!!

程序 没有 问题,是KEIL软件编译的问题。

编译汇编语言程序 可以直接用protues仿真软件编译,

或者 用 MedWin 中文铅腔版 比较 好用,

KEIL软件 对 汇编语言 本身 就存在一些问态银题的。槐闭衫

用keil编一个用四个按钮控制16个灯变化的程序,能停止

很简单啊,假定用P1驱动灯泡,按下列步骤:

1、P1=0x81,表示1、8亮,延时一段时间;

2、P1=0x42,表示弯肢2、7亮,延时一段时间;

3、P1=0x24,表示3、6亮,延时一段埋烂世时间;

4、历漏P1=0x81,表示4、5亮,延时一段时间;

重复1-4步即可。

如何用单片机一个按钮开关控制3个灯3种效果。流水。闪烁。还有一直亮。用keil编程。

下面是用C51编写尺核正的简单程序:

#include reg51.h

#include intrins.h

sbit io_Key = P1 ^ 1;

sbit led1 = P1 ^ 2;

sbit led2 = P1 ^ 3;

sbit led3 = P1 ^ 4;

unsigned char ucCount = 0;

bit flag05s = 0;

//---------------------------------

void delay125us(void) //@12.000MHz

{

unsigned char i;

i = 60;

while (--i);

}

void Timer0Init(void) //10毫秒@12MHz

{

TMOD = 0xF0; //设置定时器模式

TMOD |= 0x01; //设置定时器模式

TL0 = 0xF0; //设置定时初值

TH0 = 0xD8; //设置定时初值

TR0 = 1; //开定时器0

ET0 = 1; //开定时器0中断

EA = 1; //开总中断

}

/陵悔/T0中断用来计数器溢出

void zd0(void) interrupt 1

{

TL0 = 0xF0; //设置定时初值

TH0 = 0xD8; //设置定时初值

if(++ucCount = 50)

{

ucCount = 0;

flag05s = 1; //g_flag05s = isYes定时0.52秒到,用于测量周期延时

}

}

void main(void)

{

unsigned char CountTemp = 0, ucState = 0;

Timer0Init();

while(1)

{

//-------------------------------

//简单的按键检测程序:

io_Key = 1;

_nop_();

if( io_Key == 0 )

{

CountTemp = 0;

do

{

delay125us();

if( io_Key != 0 ) break;

} while(++CountTemp 160); // 延时20ms去抖动

if(CountTemp 160)//如果按键时间有效,改变状态

{

switch(ucState)

{

case(0):

{

ucState = 1;

led1 = 0;

led2 = 0;

led3 = 0;

}

break;

case(1):

{

ucState = 2;

led1 = 0;

led2 = 0;

led3 = 0;

}

break;

case(2):

{

ucState = 0;

led1 = 0;

led2 = 1;

led3 = 1;

}

break;

}

while(io_Key == 0); //等待按键释放

}

}

//------------------------------

//每0.5秒改变一下LED状态

if(flag05s == 1)

{

flag05s = 0;

switch(ucState)

{

case(0):

{

led1 = !led1;

led2 = !led2;

led3 = !led3;

}

break;

case(1):

{

bit ledTemp = led1;

led1 = led2;

led2 = led3;

led3 = ledTemp;

}

break;

//LED常氏颂亮可以忽略改变LED状态

/*

case(2):

{

led1 = 0;

led2 = 0;

led3 = 0;

}

break;

*/

}

}

}

}

//-----------------------------------------------

//上面程序中有很多地方可以优化,这里只是给出一个参考供学习。

在51单片机中用c语言keil写程序实现用一个按键控制6个灯的亮和灭(按下按

#include隐陪槐灶友reg51.h乱数

sbit key=P1^0;

sfr LED=P0;

main()

{

while(1)

if(key==0)P0=0xc0;

else P0=0xff;

}

Keil中怎么实现按键一次显示一盏灯,按键两次显示两盏灯?

应该是用keil写C语言程序实现,声明槐搏一个变量num计按岩明灶键次数,按键一次num加1,大于2再回1,再用if语句判断num的值确定显示粗扮1或2盏灯。

361知讯网

本文链接:http://pdidw.com/keil/56471.html

发表评论

评论列表

还没有评论,快来说点什么吧~