2013-12-18 128 views
-2

我有8051F312微控制器,我必須打開LED(在P2端口的7.bit上)。我的代碼不起作用,也許你有一些想法。8051F312微控制器

#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 

    } 
} 

(抱歉的格式,但我不得不使用文本編輯器的問題)

+4

那麼你的問題是什麼? – Jeribo

+3

你忘了添加一個問題... –

+0

答案似乎是42 – Laurijssen

回答

0

首先,你需要輸入/輸出設置爲GPIO。對於8051微控制器系列(根據我的知識)(我不知道8051F312),將1分配給一個引腳將gpio設置爲輸入,並將0設置爲將gpio設置爲輸出。因此,首先您需要將P2.7設置爲輸出。爲此,您需要在init函數中執行LED_16 = 0;。之後,您需要考慮如何將您的LED連接到您的微控制器引腳。如果LED的陽極連接到微控制器引腳,則需要將其變爲高電平才能點亮LED。如果LED的陰極連接到微控制器引腳,則需要使其爲低電平才能點亮LED。 如果LED指示燈連接到微控制器的陽極你的代碼應該是

void main(void) 
{ 
    init(); 

    while (1) 
    { 

    LED_16 = 1;      // LED continuously illuminated 

    } 
} 

如果陰極導致連接微控制器,那麼你的代碼應該是

void main(void) 
{ 
    init(); 

    while (1) 
    { 

    LED_16 = 0;      // LED continuously illuminated 

    } 
} 
0

請從Silicon Labs公司找到AN101應用筆記。我比較你的代碼示例源代碼,我注意到:

  1. 他們使用XBR2 = 0x40的橫樑初始化。
  2. 它們啓用/ SYSCLK XBR1 = 0x80
  3. 他們配置輸出引腳推輓模式由PRT1CF |= 0x40(我認爲它應該是PRT1CF |= 0x80在你的情況)。