線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3438
推到 Plurk!
推到 Facebook!

請教大大8051 c多重按鈕開關問題(第一次提問 如有發表不當 敬請各位大大海涵)

答題得分者是:ScottWang
azv777
一般會員


發表:2
回覆:4
積分:1
註冊:2014-05-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2014-05-17 14:47:21 IP:140.119.xxx.xxx 訂閱
各位大大日安:小優日前寫8051 c多重按鈕開關出現
Build target 'Target 1'
assembling STARTUP.A51...
compiling 0507.c...
MYIO.H(67): warning C280: 'x': unreferenced local variable
linking...
Program Size: data=21.0 xdata=0 code=705
creating hex file from "0507"...
"0507" - 0 Error(s), 1 Warning(s).

老師要我們自己找出問題 但是找了好久都無法排除 希望各位大大能幫幫我 告訴我問題在哪裡 讓我有學習的機會(造成各位大大困擾 小優先跟各位大大抱歉) 以下為程式:
/* 多重按鈕開關 */
//==宣告區================================
#include // 定義8051暫存器之標頭檔,P2-17~19
#include "myio.h" // 自己寫的I/O程式庫
sbit PB1=P2^0; // 宣告PB1=P2.0
sbit PB2=P2^1; // 宣告PB2=P2.1
sbit PB3=P2^2; // 宣告PB3=P2.2
sbit PB4=P2^3; // 宣告PB4=P2.3
//==主程式================================
main() // 主程式開始
{ LED=0xff; // 初始狀態(LED全滅)
P2=0xff; // 規劃P2輸入埠
while(1) // 無窮迴圈,程式一直跑
{ if (PB1==0) // 如果按下PB1
{ debouncer();// 防彈跳
alter(3); // 高低位元交互閃爍三次
flash(3);} // 全燈閃爍三次
else if (PB2==0)// 如果按下PB2
{ debouncer();// 防彈跳
left(3); // 單燈左移三圈
flash(3);} // 全燈閃爍三次
else if (PB3==0)// 如果按下PB3
{ debouncer();// 防彈跳
right(3); // 單燈右移三圈
flash(3);} // 全燈閃爍三次
else if (PB4==0)// 如果按下PB4
{ debouncer();// 防彈跳
SEG(3); // 霹靂燈三圈
flash(3);} // 全燈閃爍三次
} // while迴圈結束
} // 主程式結束


/* myio.h - 自己寫的程式庫 */
//==宣告區==============================
#define LED P1 // 定義LED接至Port 1
void debouncer(void); // 宣告防彈跳函數
void delay10ms(int); // 宣告10毫秒延遲函數
void alter(int); // 宣告交互閃爍函數
void left(int); // 宣告單燈左移函數
void right(int); // 宣告單燈右移函數
void pili(int); // 宣告霹靂燈函數
void SEG(int); // 宣告7
//==自己寫的副程式========================
/* 防彈跳函數函數,延遲約20ms */
void debouncer(void) // 防彈跳函數開始
{ delay10ms(2); // 延遲約20ms
} // 防彈跳函數結束
/* 延遲函數開始,延遲約x 10ms */
void delay10ms(int x) // 延遲函數開始
{ int i,j; // 宣告整數變數i,j
for (i=0;i for (j=0;j<1200;j ); // 計數1200次,延遲約10ms
} // 延遲函數結束
/* 高低位元交互閃爍函數,執行x次 */
void alter(int x) // 高低位元交互閃爍函數開始
{ int i; // 宣告變數i
LED=0x0f; // 初始狀態(高位元亮,低位元滅)
for(i=0;i<2*x-1;i )// i變數for迴圈執行2x-1次
{ delay10ms(50); // 延遲50*10m=0.5s
LED=~LED; // LED反相輸出
} // i變數for迴圈結束
delay10ms(50); // 延遲50 10m=0.5s
} // 高低位元交互閃爍函數結束
/* 全燈閃爍函數,執行x次 */
void flash(int x) // 全燈閃爍函數開始
{ int i; // 宣告變數i
LED=0x00; // 初始狀態(全亮)
for(i=0;i<2*x-1;i )// i變數for迴圈執行2x-1次
{ delay10ms(50); // 延遲50 10m=0.5s
LED=~LED; // P0反相輸出
} // i變數for迴圈結束
delay10ms(50); // 延遲50 10m=0.5s
} // 全燈閃爍函數結束
/* 單燈左移函數,執行x圈 */
void left(int x) // 單燈左移函數開始
{ int i, j; // 宣告變數i,j
for(i=0;i { LED=0xfe; // 初始狀態=1111 1110
for(j=0;j<7;j )// j迴圈,左移7次
{ delay10ms(25); // 延遲25 10m=0.25s
LED=(LED<<1)|0x01; // 左移1位後,LSB設為1
} // j迴圈結束
delay10ms(25); // 延遲25 10m=0.25s
} // i迴圈結束*/
} // 單燈左移函數結束
/* 單燈右移函數,執行x圈 */
void right(int x) // 單燈右移函數開始
{ int i, j; // 宣告變數i,j
for(i=0;i { LED=0X7f; // 初始狀態=0111 1111
for(j=0;j<7;j )// j迴圈,右移7次
{ delay10ms(25); // 延遲25 10m=0.25s
LED=(LED>>1)|0x80; // 左移1位後,MSB設為1
} // j迴圈結束
delay10ms(25); // 延遲25 10m=0.25s
} // i迴圈結束
} // 單燈左移函數結束
/* 霹靂燈函數,執行x圈 */
void SEG(int x) // 7函數開始
{int i;
/* 七段顯示器資料區*/
unsigned char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};


{
for(i=0;i<10;i ) //重複執行10次
{
P0=table[i]; //將table值取出後送至P2
delay10ms(25); //延遲500ms
}
}
}

------
黃小優
編輯記錄
azv777 重新編輯於 2014-05-17 14:55:28, 註解 無‧
ScottWang
版主


發表:32
回覆:486
積分:688
註冊:2009-04-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2014-05-17 19:45:19 IP:36.229.xxx.xxx 訂閱
compiler已經有指出錯誤所在,你再去看那個錯誤與其它正常使用的有何不同之處,這樣就可以找出問題點了.
------
高壓模組,高壓直流電源供應器(全範圍可調電壓電流),中低壓直流電源供應器,電壓放大器,
電流放大器,帶通濾波器,高精度參考電壓,標準電壓,恆流源(定電流源),恆壓源(定電壓源),
測試LED專用AC LED定電流源,專門接受訂製,設計生產各種特殊規格,高精度產品,學校實驗室,
研究單位實驗設備,另可接受其它電子專案設計,HV Power,Vmax=20KV,Imax=2000A.
http://hvpower.myweb.hinet.net/
...Scott Wang...
azv777
一般會員


發表:2
回覆:4
積分:1
註冊:2014-05-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2014-05-18 19:25:09 IP:114.25.xxx.xxx 訂閱
感謝大大的提點..小妹無才能..悟不出 C280: 'x'(找很多次 找不到在哪兒)sorry!!可以正確的告訴我嗎??謝謝大大的幫忙!!
------
黃小優
ScottWang
版主


發表:32
回覆:486
積分:688
註冊:2009-04-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2014-05-19 07:11:49 IP:36.229.xxx.xxx 訂閱
MYIO.H(67): 你自己寫的I/O程式庫第67行.
warning C280: 錯誤代號
'x': 有問題的變數名稱
unreferenced local variable : 沒有被引用的本地變數.

===================引 用 azv777 文 章===================
感謝大大的提點..小妹無才能..悟不出 C280: 'x'(找很多次 找不到在哪兒)sorry!!可以正確的告訴我嗎??謝謝大大的幫忙!!
------
高壓模組,高壓直流電源供應器(全範圍可調電壓電流),中低壓直流電源供應器,電壓放大器,
電流放大器,帶通濾波器,高精度參考電壓,標準電壓,恆流源(定電流源),恆壓源(定電壓源),
測試LED專用AC LED定電流源,專門接受訂製,設計生產各種特殊規格,高精度產品,學校實驗室,
研究單位實驗設備,另可接受其它電子專案設計,HV Power,Vmax=20KV,Imax=2000A.
http://hvpower.myweb.hinet.net/
...Scott Wang...
azv777
一般會員


發表:2
回覆:4
積分:1
註冊:2014-05-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2014-05-19 08:14:44 IP:140.119.xxx.xxx 訂閱
感謝ScottWang版主大大....把10改成x既可.. ( for(i=0;iScottWang版主大大.....
------
黃小優
系統時間:2017-10-22 9:04:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!