普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 2728|回复: 3

啊又出问题了

[复制链接]

6

主题

6

帖子

28

积分

新手上路

Rank: 1

积分
28
发表于 2021-2-4 19:39:02 | 显示全部楼层 |阅读模式
#include "reg51.h"

typedef unsigned int u16;
typedef unsigned char u8;

sbit led1 = P2^0;
/*sbit led2 = P2^1;
sbit led3 = P2^2;
sbit led4 = P2^3;
sbit led5 = P2^4;
sbit led6 = P2^5;*/


void delay(u16 i)
{
    while(i>0)
        {
                i--;
        }
}

void play(u8 i)
{
        i=0;
        delay(50000);
        i=1;
        delay(50000);
}

void main()
{
    while(1)
        {
                 /*led1=0;
                delay(50000);
                led1=1;
                delay(50000);*/
                play(led1);   
        }
}
好奇怪,又不能闪了......
回复

使用道具 举报

0

主题

3

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2021-2-9 11:29:34 | 显示全部楼层
本帖最后由 manta_xray 于 2021-2-9 11:35 编辑

sbit不是定义一个变量,定义的是一个固定的寄存器,给那个寄存器取个名字而已,led1是寄存器的名字,代表的是那个寄存器,是固定的常量,也就不能做函数参数,所以play(led1)是无法实现你想要的功能的。
回复 支持 反对

使用道具 举报

2

主题

9

帖子

20

积分

新手上路

Rank: 1

积分
20
发表于 2021-2-12 15:44:48 | 显示全部楼层
你可以使用取反符号来实现led的闪烁,用led1=~led1;delay(50000);就不必使用play()函数了。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-5 19:50 , Processed in 0.093359 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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