[問題] [Linker error] undefined reference to `outportb'
這是程式:
#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
05/11 16:24, 1F
推
05/11 16:31, , 2F
05/11 16:31, 2F
→
05/11 16:32, , 3F
05/11 16:32, 3F
→
05/11 16:32, , 4F
05/11 16:32, 4F
→
05/11 16:32, , 5F
05/11 16:32, 5F
推
05/11 16:42, , 6F
05/11 16:42, 6F
→
05/11 17:08, , 7F
05/11 17:08, 7F
推
05/11 17:21, , 8F
05/11 17:21, 8F
→
05/11 18:22, , 9F
05/11 18:22, 9F
推
05/11 18:32, , 10F
05/11 18:32, 10F
→
05/11 18:33, , 11F
05/11 18:33, 11F