2012-08-13 27 views
0

使用威拉德一個程序當我使用WILLAR上AT89C2051燒的程序,例如:燃燒上AT89C2051

#include <reg51.h> 
#define port P3 
void delay(unsigned int); 
void main(void) 
{ 
    for(;;) 
    { 
     port = 0x0; 
     delay(1000); 
     port = 0x0ff; 
     delay(1000); 
    } 
} 

void delay(unsigned int a) 
{ 
    unsigned int i; 
    unsigned int j; 
    for(i=0; i<a; i++) 
    for(j=0; j<120; j++); 
} 

它顯示了一個消息:The data out of range will be ignored。但是如果我使用端口P1而不是端口P3,我的程序就會成功燒燬。

問題在哪裏?

+0

哪行給出了錯誤? – 2012-08-13 14:00:50

+0

先生其實在程序中沒有錯誤,但是當我在微控制器上燒寫這個程序時,它顯示通知**「超出範圍的數據將被忽略」**。當我測試*端口3 *引腳輸出沒有輸出值。如果我拿** p1 **堅持** p3 **它正確運行讓我知道爲什麼會發生這種情況。 – PradeepBhati 2012-08-13 18:32:42

回答

0

港口3是多用途特別保留形式timer/read/write/interrupt/。 其他端口是通用的。 端口0和端口1可能有引體向上 你不想全局定義端口3,而不是你可以在你的程序中使用P3與十六進制值的

port=0xff代替port=0xfff