用sbit定义成led后,就不能点亮数码管了,请各位大虾为小弟指点迷津?

2019-07-15 09:16发布

小弟新手一枚,最近在学习普中科技推出的一款51的单片机开发板,在点亮静态数码管的时候遇到一个问题,程序一与程序二编译均无报错,程序一能够点亮数码管,但是我将P0口用sbit定义成led后,就不能点亮数码管了,请各位大虾为小弟指点迷津,谢谢一:#include "reg51.h"
typedef unsigned char u8;
typedef unsigned int u16;
u16  smgduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
  void main()
{
   P0=smgduan[0];
   while (1)
   {}
}

二:#include "reg51.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit led=P0;
u16  smgduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
  void main()
{
  led=smgduan[0];
   while (1)
   {}
}


2.png
1.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
J木昜
1楼-- · 2019-07-15 20:30
sbit是定义位的 不能定义整个P0
6华仔
2楼-- · 2019-07-15 22:44
你位定义只能操作一个端口的一个引脚,要想操作整个端口要用 #define led P0
这样你的led 才能代表P0
skcaaa
3楼-- · 2019-07-16 03:53
 精彩回答 2  元偷偷看……
skcaaa
4楼-- · 2019-07-16 03:54
J木昜 发表于 2017-11-27 10:26
sbit是定义位的 不能定义整个P0

恩 了解了 谢谢
skcaaa
5楼-- · 2019-07-16 04:26
wulinwl 发表于 2017-11-27 10:13
二:#include "reg51.h"
typedef unsigned char u8;
typedef unsigned int u16;

多谢大侠指点
勇哥-lzu
6楼-- · 2019-07-16 05:35
编译器不报错,这样定义的LED是什么? P0的0脚吗?

一周热门 更多>