[問題] [Linker error] undefined reference to `outportb'

看板C_and_CPP作者 (海綿)時間15年前 (2010/05/11 08:10), 編輯推噓4(407)
留言11則, 6人參與, 最新討論串1/1
這是程式: #include "stdio.h" /*原型定義*/ #define RxRDY 0x01 /*接收備妥旗標*/ #define TxRDY 0x20 /*傳送備妥旗標*/ #define LSR 0x3fd /*連線狀態暫存器*/ #define LCR 0x3fb /*連線控制暫存器*/ #define BRDH 0x3f9 /*鮑率除頻暫存器(高位元組)*/ #define BRDL 0x3f8 /*鮑率除頻暫存器(低位元組)*/ #define THR 0x3f8 /*傳送保持暫存器*/ #define RDR THR /*接收資料暫存器*/ main() /*主程式*/ { char*msg[]={ /*字串定義*/ "-------------------", "PC<---------->89C51", "-------------------"}; char i; /*迴圈次數*/ char key; /*按鍵值*/ char a=0xff; char b; outportb(LCR,0x80); /*設定LCR暫存器位元7=1*/ outportb(BRDH,0x00); /*設定鮑率為1200BPS*/ outportb(BRDL,0x60); outportb(LCR,0x03); /*設通信協定;8資料位元,1停止位元*/ inportb(RDR); /*清除接收資料暫存器*/ clrscr(); /*清除PC顯示螢幕*/ gotoxy(1,6);printf("%s",msg[0]); /*游標(X,Y)=(1,6),顯示字串MSG[0]*/ gotoxy(1,7);printf("%s",msg[1]); /*游標(X,Y)=(1,7),顯示字串MSG[1]*/ gotoxy(1,8);printf("%s",msg[2]); /*游標(X,Y)=(1,8),顯示字串MSG[2]*/ gotoxy(1,10);printf("input select:"); /*游標(X,Y)=(1,10),顯示字串*/ while(1) { a=0xff; /*設定初值為0xff*/ gotoxy(14,10); /*游標(X,Y)=(14,10)*/ key=toupper(getch()); /*等待鍵盤輸入按鍵,並將鍵值轉大寫*/ if(key=='Q')goto quit; /*鍵值key=Q,結束連線*/ else if(key=='A') /*鍵值key=A,顯示按鍵值並設定a=1*/ { a=1; printf("%2c",key); } else if (key=='s') /*鍵值key=S,顯示按鍵值並設定a=2*/ { a=2; printf("%2c",key); } else if(key=='D') /*鍵值key=D,顯示按鍵值並設定a=3*/ { a=3; printf("%2c",key); } else if(key=='F') /*鍵值key=F,顯示按鍵值並設定a=4*/ { a=4; printf("%2c",key); } else if(key==0x3b) /*鍵值key=F1,顯示按鍵值並設定a=1*/ { a=1; printf("F1"); } else if(key==0x3c) /*鍵值key=F2,顯示按鍵值並設定a=2*/ { a=2; printf("F2"); } else if(key==0x3d) /*鍵值key=F3,顯示按鍵值並設定a=3*/ { a=3; printf("F3"); } else if(key==0x3e) /*鍵值key=F4,顯示按鍵值並設定a=4*/ { a=4; printf("F4"); } if(a>1&a<=4) /*a=1~4*/ { while((inportb(LSR)&TxRDY)!=TxRDY) /*傳送已備妥*/ ; /*未備妥,在偵測*/ outportb(THR,a); /*傳送a值*/ while((inportb(LSR)&RxRDY)!=RxRDY) /*PC已備妥?*/ ; a=inportb(RDR); /*接受資料*/ gotoxy(1,12);printf("receive char:%2d words",a); /*顯示長度*/ gotoxy(1,14);printf("receive string:"); /*顯示字串*/ printf("%20c",0x20); /*清20bytes空間*/ gotoxy(16,14); /*設定游標(16,14)*/ for(i=0;i<a;i++) /*傳送字串*/ { while((inportb(LSR)&RxRDY)!=RxRDY)/*接受已備妥?*/ ; b=inportb(RDR); /*接收資料*/ printf("%c",b); /*顯示接收字元*/ } } } quit:; /*結束迴圈*/ } --------------------------------------------------------------------------- 按編譯後..就出現 [Linker error] undefined reference to `outportb' [Linker error] undefined reference to `inportb' [Linker error] undefined reference to `clrscr' [Linker error] undefined reference to `gotoxy' ld returned 1 exit status 這樣應該是無法定義吧??? 請問各位神手大大要如何處理....謝謝^^ -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.64.185.194

05/11 16:24, , 1F
請問你outportb是寫在那?如果是在其它檔案,請include進去
05/11 16:24, 1F

05/11 16:31, , 2F
發問格式裡不是有開發環境嗎?? 都沒人在看的....Orz
05/11 16:31, 2F

05/11 16:32, , 3F
那幾個function印象中是以前舊的開發環境裡的
05/11 16:32, 3F

05/11 16:32, , 4F
conio.h與dos.h裡會定義的東西, 你是挖出了舊的程式碼
05/11 16:32, 4F

05/11 16:32, , 5F
在新的開發環境上跑嗎??
05/11 16:32, 5F

05/11 16:42, , 6F
turbo c 的東西...在 devc 上不能跑吧
05/11 16:42, 6F

05/11 17:08, , 7F
恩我用dev c跑的= =
05/11 17:08, 7F

05/11 17:21, , 8F
outportb inportb..喔喔...有點老的東西..
05/11 17:21, 8F

05/11 18:22, , 9F
那請問一下所以這只能在turbo執行嗎
05/11 18:22, 9F

05/11 18:32, , 10F
in跟out兩個assembly code在Win32下可以直接用嗎 @@
05/11 18:32, 10F

05/11 18:33, , 11F
conio裡的東西應該可以用別的取代
05/11 18:33, 11F
文章代碼(AID): #1BwH3kK9 (C_and_CPP)