m0_73578578 2023-02-14 07:51 采纳率: 66.7%
浏览 37
已结题

单片机点亮一盏灯,哪里有错误

帮我看看,有啥问题。错误显示说在=附近。我都是英文输入。自己真的看不出

img

  • 写回答

2条回答 默认 最新

  • 小6的跟班 2023-02-14 08:06
    关注

    可以先进行管口定义

    #include "reg52.h"
    sbit LED1 = P2^0;
    void delay()
    {     
        int i=2996;
        for(i;i>0;i--);
    }
    void main()
    { 
       while(1)
       {    
               LED1=1;    
            delay();    
            LED1=0;    
            delay();    
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    m0_73578578 2023-02-14 08:15

    嗯知道了,但是为什么不可以直接用哪个引脚编号

    回复
    小6的跟班 回复 m0_73578578 2023-02-15 06:49

    sbit在单片机中的意思是定义特殊功能寄存器的位变量,bit和sbit都是C51扩展的变量类型,在C语言里如果直接写P1.0,C编译器是不能够识别的,而且P1.0也不是一个合格的C语言变量名,所以必须要给它起另外一个名字.

    举例:在51单片机中,不能直接使用P0^0=xxx操作,因为P0^0是地址值,即指针,P0指针地址值0x80,P0^0指针地址0x81,P0^0=xxx是修改指针地址,即0x81=xxx,明显是错误的,我们想修改指针指向管脚值,必须使用位定义关键字sbit P00 = P0^0;然后P00=xxx,操作P00管脚值,即操作0x81指针指向的管脚P00的值。

    回复
    m0_73578578 回复 小6的跟班 2023-02-19 09:01

    非常感谢您的耐心解答,听懂了(膜拜大哥)

    回复
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月19日
  • 创建了问题 2月14日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部