This question already has an answer here:
C8051f312 microcontroller [closed]
                                
                                    (1个答案)
                                
                        
                                6年前关闭。
            
                    
我有8051F312微控制器,并且必须打开LED(在P2端口的7.bit上)。我的代码不起作用,也许您有一些想法。

 #include < C8051F310.H >
 #include < stdio.h >

sbit LED_16 = P2^7; // P2^7-->green LED: 1 = ON; 0 = OFF
void init(void)
    {

    // XBRN registers_init
      XBR1    = 0x40;                  // Enable the crossbar
      PCA0MD  &= 0X40;                 // Disable Watchdog
      P2MDOUT |= 0xF0;
      ADC0CN  = 0x80;
      ADC0CF  = 0xFC;
      REF0CN  = 0x08;
    }

void main(void)
{
  init();

  while (1)
  {

    LED_16 = 1;                       // LED continuously illuminated

  }
}


(对不起格式,但是文本编辑器有问题)

最佳答案

首先,您需要设置GPIO的输入/输出。对于8051微控制器系列(据我所知)(我对8051F312不了解),将1分配给一个引脚将gpio设置为输入,将0设定为gpio设置为输出。因此,在您的情况下,首先需要将P2.7设置为输出。为此,您需要在LED_16 = 0;函数中执行init。之后,您需要考虑如何将LED连接到微控制器引脚。如果将LED的阳极连接到微控制器引脚,则需要将其设置为高电平才能使LED发光。如果LED的阴极连接到微控制器引脚,则需要将其拉低以使LED发光。
如果将LED的阳极连接到微控制器,则您的代码应为

void main(void)
{
  init();

  while (1)
  {

    LED_16 = 1;                       // LED continuously illuminated

  }
}


如果将LED的阴极连接到微控制器,则您的代码应为

void main(void)
{
  init();

  while (1)
  {

    LED_16 = 0;                       // LED continuously illuminated

  }
}

关于c - 8051F312微 Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20657107/

10-11 15:23
查看更多