...不会做这个:用ATC52的P0口接8个发光二极管,开关K1和K2分别连至单 ...

发布网友 发布时间:1天前

我来回答

3个回答

热心网友 时间:50分钟前

其实这个程序很简单的,没有那么长的,更没有那么复杂呀。很简单的事,为什么要搞得那么复杂呢?

见下图和程序:

#include <reg52.h>
sbit k1=P3^2;
sbit k2=P3^3;
bit  glint;  //闪烁标志位
void delay()
{
 unsigned int i;
 for(i=12000;i>0;i--);
}
main()
{
 while(1)
 {
  if(glint==1)
  {
   P0=~P0;
   delay();
  }
  if(k1==0)
  {
   glint=0; //停止闪烁
   P0=0;    //全亮
   while(k1==0);
  }
  if(k2==0)
  {
   glint=1;  //开始闪烁
   while(k2==0);
  }
 }
}

热心网友 时间:47分钟前

/*-----------------------------------------------
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,
//头文件包含特殊功能寄存器的定义
#define LED P0
sbit KEY1=P3^2;
sbit KEY2=P3^3;// 用define 和sbit 关键字 定义 LED到P0端口,
//LED是自己任意定义且容易记忆的符号
void DelayUs2x(unsigned char t);
void DelayMs(unsigned char t);
unsigned char KeyScan(void);//函数声明
/*------------------------------------------------
主函数
------------------------------------------------*/
void main (void)
{
unsigned char num = 0;

while (1) //主循环
{
num=KeyScan();
switch(num)
{
case 1:
LED=0xff;
break;
case 2:
LED=0x00; //将P0口赋值 0x00
DelayUs2x(10000); //调用延时程序;更改延时数字可以更改延时长度; //用于改变闪烁频率
LED=0xff; //将P0口赋值 0xff
DelayUs2x(10000);
break;
default:
break;
}
DelayMs(1);
}
}
/*------------------------------------------------
uS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编,大致延时
长度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延时函数,含有输入参数 unsigned char t,无返回值
unsigned char 是定义无符号字符变量,其值的范围是
0~255 这里使用晶振12M,精确延时请使用汇编
------------------------------------------------*/
void DelayMs(unsigned char t)
{

while(t--)
{
//大致延时1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
按键扫描函数,返回扫描键值
------------------------------------------------*/
unsigned char KeyScan(void)
{
/********************************************************/
if(!KEY1) //如果检测到低电平,说明按键按下
{
DelayMs(10); //延时去抖,一般10-20ms
if(!KEY1) //再次确认按键是否按下,没有按下则退出
{
while(!KEY1);//如果确认按下按键等待按键释放,没有则退出
{
return 1;
}
}
}
/********************************************************/
else if(!KEY2) //如果检测到低电平,说明按键按下
{
DelayMs(10); //延时去抖,一般10-20ms
if(!KEY2) //再次确认按键是否按下,没有按下则退出
{
while(!KEY2);//如果确认按下按键等待按键释放,没有则退出
{
return 2;
}
}
}
else
return 0;
return 0 ;
}

热心网友 时间:45分钟前

啊!这个很简单啊,兄弟。你行的,加油!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com