Bronyaer 2022-12-07 18:02 采纳率: 60%
浏览 36
已结题

51单片机独立按键控制LED二进制

独立按键控制LED二进制
STC89C52以及普中51的开发板
第一个问题 为什么要定义为unsigned char,int可不可以
第二个 为什么 NUM++;P2=~NUM;放在if的大括号外边就不型,在里面就可以


#include <REGX52.H>
#include<INTRINS.H>
int main()
{
    //        P2=0XFE;
    void Delay1ms(int x);
    unsigned char NUM=0;
    while(1)
    {
        if(P3_1)
        {
            Delay1ms(20);
            while(P3_1)
            {
                Delay1ms(20);

            }
        NUM++;
        P2=~NUM;
        }


    }
    return 0;
}

void Delay1ms(int x)        //@11.0592MHz
{
    while(x)
    {
        unsigned char i, j;

        _nop_();
        _nop_();
        _nop_();
        i = 11;
        j = 190;
        do
        {
            while (--j);
        } while (--i);
        x--;
    }
    
}

  • 写回答

1条回答 默认 最新

  • Norcor 2022-12-07 18:36
    关注

    1.int是可以的,但是但凡玩单片机的都会注意内存管理。int太大了,而且不同的平台下,int的长度也不相同。
    为什么用unsigned char?unsigned char值是0-255,16进制为0-0xff,只占用一个字节,除了bit以外的最小单位,省空间而且够用啊
    2. 如果放在if外,那就在P3_1为低电平的情况下,就一直执行;放在if内,则在p3_1被拉高时,进入第二级while,并在p3_1被松开时,执行
    显然,你想做个按键控制,就必须放在if内
    ps.你确定要P2 = ~NUM嘛?如果我没猜错,P2应该也是一个引脚,引脚的类型一般是bit,只有1位。而NUM可是一个有8位的unsigned char啊

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月18日
  • 已采纳回答 12月10日
  • 创建了问题 12月7日

悬赏问题

  • ¥30 sort cuteSV.vcf by bcftools用IGV可视化出现报错
  • ¥100 SOS!对STK中导出的天体图像进行质心提取有没有人做过啊
  • ¥15 python 欧式距离
  • ¥15 运行qteasy报错
  • ¥15 遗传算法解决有工序顺序约束的大规模FJSP问题
  • ¥15 企业消防水炮塔设计方案
  • ¥20 WORKBENCH网格划分
  • ¥60 急招师兄远程解决下载NPCAP的BUG!
  • ¥15 关于#51单片机#的问题:51单片机LM1602的数据只能显示一个字符,在使用矩形键盘送数据的时候不能显示出来而是在显示初始位置上,达不到密码锁的效果
  • ¥15 求旧版本ns-2软件