|
第一個(gè)延時(shí)函數(shù)只有申明,沒有實(shí)體,編譯時(shí)就會(huì)報(bào)警,延時(shí)函數(shù)無法定位,所以鏈接以后該地址仍為0000,這樣主程序執(zhí)行第一條命令LED=0以后,又跳回0000重新開始,于是反復(fù)執(zhí)行第一條指令。
C:0x0000 020017 LJMP STARTUP1(C:0017)
4: void main(void)
5: {
6: while(1)
7: {
8: led=0;
C:0x0003 C2A1 CLR led(0xA0.1)
9: delay(20000)
C:0x0005 7F20 MOV R7,#0x20
C:0x0007 7E4E MOV R6,#0x4E
C:0x0009 120000 LCALL C_STARTUP(C:0000)
第二個(gè)圖的程序也不能通過編譯,因?yàn)檠訒r(shí)函數(shù)頭后面多了個(gè)“ ;”,變成了函數(shù)申明
void delay(unsigned int i);
{
unsigned int x;
for(x=0;x<i;x++);
} |
|