找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3097|回复: 14
收起左侧

跪求这段单片机代码的详细讲解

  [复制链接]
ID:91656 发表于 2015-10-13 19:48 | 显示全部楼层 |阅读模式
#include<reg52.h>
typedef unsigned char  u8;
typedef unsigned int   u16;
sbit key = P3^2;
sbit led = P1^0;
void delay(unsigned int y)
{
        unsigned int x,z;
        for(x=y; x>0; x--)
                for(z=110; z>0; z--);
}
void main (void)
{
        led = 1;
        while (1)
        {
                if (key == 0)
                {
                        delay(10);
                        if (key == 0)
                                led = ~led;
                }
                while(!key);
        }
}

回复

使用道具 举报

ID:1 发表于 2015-10-13 20:31 来自手机 | 显示全部楼层
看样子是一个闪烁灯的程序,而且还带有一个按钮
回复

使用道具 举报

ID:92383 发表于 2015-10-13 22:11 | 显示全部楼层
闪烁      有一个延时程序的调用
回复

使用道具 举报

ID:92394 发表于 2015-10-13 23:24 | 显示全部楼层
这是一个按钮控制LED灯亮灭的程序,每按一下按钮,LED灯的状态都会改变
回复

使用道具 举报

ID:79544 发表于 2015-10-15 12:03 | 显示全部楼层
#include<reg52.h>//包含51的头文件
typedef unsigned char  u8;//宏定义无符号char型
typedef unsigned int   u16;
sbit key = P3^2;//定义按键在P3.2口
sbit led = P1^0;//定义LED灯在P1.0输出
void delay(unsigned int y)//延时子函数
{
        unsigned int x,z;//定义两个变量为无符号int型
        for(x=y; x>0; x--)//循环
                for(z=110; z>0; z--);//循环嵌套
}
void main (void)//主函数
{
        led = 1;//LED初始为1(就是高电平)
        while (1)//大循环也叫死循环
        {
                if (key == 0)//判断按键按下
                {
                        delay(10);//延时消抖
                        if (key == 0)//再一次判断按键按下
                                led = ~led;//LED取反。就是开始是关闭,按键按下亮
                }
                while(!key);//等待按键释放
        }
}
回复

使用道具 举报

ID:92539 发表于 2015-10-15 16:45 | 显示全部楼层
一个按键控制led亮灭的程序
回复

使用道具 举报

ID:92627 发表于 2015-10-16 14:26 | 显示全部楼层
这是一个点灯的小程序
回复

使用道具 举报

ID:92641 发表于 2015-10-16 16:24 | 显示全部楼层
点灯的小程序
回复

使用道具 举报

ID:88453 发表于 2015-10-16 17:20 | 显示全部楼层
typedef unsigned char  u8; typedef unsigned int   u16;这两句没用  你后面也没用到   sbit key = P3^2; sbit led = P1^0;定义KEY和LED的端口      void delay(unsigned int y) {         unsigned int x,z;         for(x=y; x>0; x--)                 for(z=110; z>0; z--); }这个函数是个简单的粗略延时     led = 1;主函数开始给LED一个初始状态,具体是亮还是灭,取决于硬件怎么连的       if (key == 0)                 {                         delay(10);                         if (key == 0)                                 led = ~led;                 }判断有没有按键按下,要是有   延时一小下   再重新判断一次  要是还有按键按下  确定按下了   LED取反一下    最后那句是松手检测   避免你一直按着按键  LED一直取反
回复

使用道具 举报

ID:92919 发表于 2015-10-19 15:46 | 显示全部楼层
就是一个按钮控制灯的闪烁的程序,延时那段是控制闪烁的
回复

使用道具 举报

ID:92873 发表于 2015-10-20 11:13 | 显示全部楼层
这个程序我看懂了,用一个按钮控制一个LED状态转换,按下一次,LED状态变化一次,还设置了长按无效限制,确保按下一次,只转换一次。
回复

使用道具 举报

ID:5702 发表于 2015-10-20 16:09 | 显示全部楼层
不带注释的程序看起来相当不舒服咯。。
回复

使用道具 举报

ID:5702 发表于 2015-10-20 16:10 | 显示全部楼层
应该就是一个按键控制LED的程序  带防抖和松开检测
回复

使用道具 举报

ID:473159 发表于 2019-1-29 01:38 | 显示全部楼层
这是很基础的例子啊?视频中反复讲的都是这些内容。

评分

参与人数 8黑币 +148 收起 理由
shuisheng60 + 35
zhengchong60 + 12
sheng7533967 + 12
钻牛尖滴刘尖尖 + 12
站着说话不腰疼 + 12
Trump1438 + 15
jinsheng7533967 + 35
刀刀见红 + 15

查看全部评分

回复

使用道具 举报

ID:473878 发表于 2019-1-29 14:26 | 显示全部楼层
這是按下按鍵就會變亮,再按一下就會變暗,一直循環下去.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表