单片机补充案例--按键点灯

本文介绍了一个简单的单片机程序实例,通过按键控制LED的亮灭。利用8052单片机实现输入与输出的数字量控制,并提供了一段示例代码,展示了如何配置环境及使用固件库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是一个及其简单的案例,按下key点亮led,为什么还要补充呢?

1. 输入和输出

2. 数字量

/*****************************************************************************
 *                    头文件                                   *
 *****************************************************************************/
#include "8052.h"    
//端口定义--功能按键控制LED灯亮灭
#define LSA   P1_5  			
#define LSB   P1_6  			
#define LSC   P1_7 
#define LED0   P0_0 
#define LED1   P0_1 
#define LED2   P0_2 
#define LED3   P0_3 
#define KEY0   P3_2 
#define KEY1   P3_3 
#define KEY2   P3_4 
#define KEY3   P3_5 

/*****************************************************************************
 *                             初始化                                   *
 *****************************************************************************/
void delay(unsigned int ms)	//
{
  unsigned int x;
  unsigned int y;
  for(x=ms;x>0;x--)
	for(y=110;y>0;y--)
	  ;
}

void sys_init(void)
{
	 LSA = 0;
	 LSB = 0;
	 LSC = 0; 
}
/*****************************************************************************
 *                             主函数                                   *
 *****************************************************************************/
void main(void)
{
    sys_init();
    while(1)
    {
        /* send per 0ms */
        //delay(1);
        LED0=KEY0;
        LED1=KEY1;
        LED2=KEY2;
        LED3=KEY3;
    }
}

关于单片机程序,如果使用固件库一定要配置好环境,对于实验一,不配置正确就无法完成编译,报错无法找到xxx等:

参考如下代码:

/*****************************************************************************
 *                    头文件                                   *
 *****************************************************************************/
#include "8052.h"
#define LSA   P1_5  			
#define LSB   P1_6  			
#define LSC   P1_7 
/*****************************************************************************
 *                             初始化                                   *
 *****************************************************************************/
void delay(unsigned int ms)	//
{
  unsigned int x;
  unsigned int y;
  for(x=ms;x>0;x--)
	for(y=110;y>0;y--)
	  ;
}

void sys_init(void)
{
	 LSA = 0;
	 LSB = 0;
	 LSC = 0; 
}
/*****************************************************************************
 *                             主函数                                   *
 *****************************************************************************/
void main(void)
{
    sys_init();
    while(1)
    {
        /* send per 1000ms */
        delay(1000);
        P0=0x55;
        /* send per 1000ms */
        delay(1000);
        P0=0xFF;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangrelay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值