最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

C51求助:C51中加入?yún)R編怎么編譯錯(cuò)誤?出現(xiàn)了怪事

作者:wayner 欄目:單片機(jī)
C51求助:C51中加入?yún)R編怎么編譯錯(cuò)誤?出現(xiàn)了怪事
各位看官、DX你們好!小弟我在Keil V7.07環(huán)境下編了
如下程序,可是編譯出現(xiàn)了錯(cuò)誤(見(jiàn)下)
我看了匯編后的代碼,竟然將ack()函數(shù)作為起始地址了!
我將startup.a51加入到源文件中,如下的警告多出了一個(gè),再看代碼
確實(shí)將RAM初始化加到了程序的開(kāi)頭,可是出現(xiàn)了死循環(huán),一直初始化。
請(qǐng)問(wèn),中斷中可否用匯編?若可用,該怎么用?先謝謝了

assembling .\g115.src...
linking...
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  ?C_STARTUP
    MODULE:  .\g115.obj (G115)
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
    SYMBOL:  ?C?CCASE
    MODULE:  .\g1105.obj (PG115)
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
    SYMBOL:  ?C?CCASE
    MODULE:  .\g1105.obj (G115)
    ADDRESS: 013DH

#include "reg51.h"
#include "intrins.h"
#define uCHAR unsigned CHAR
#define uint unsigned int
sbit scl=P3^1;   /* i2c AT24C02 SCL pin */
sbit sda=P3^0;  /* i2c AT24C02 SDA pin */
sbit sound=P1^7;
sbit p01=P3^2;      
sbit p02=P3^3;
uCHAR volatile data getabyte,addres,dlycont;
uCHAR volatile data read[3],insbak;
uint data needfq;

void icstart(void)
void icstop(void)
void ack(void)

void time0() interrupt 1
{
  #pragma asm
PUSH    PSW
PUSH    ACC
PUSH    B
PUSH    DPH
PUSH    DPL
MOV     PSW,#08H
DEC     dlycont
MOV     TH0,#03CH
MOV     TL0,#0B8H
MOV     A,dlycont
JNZ     ?C0002
CLR     ET0
CLR     EA
MOV     A,#03H    
ADD     A,insbak
MOV     addres,A  ;將地址傳回來(lái)
POP     DPL
POP     DPH
POP     B
POP     ACC
POP     PSW
POP     DPL  ;POP PC VALUE
POP     DPH
MOV    DPTR,#?main?red3
PUSH DPL
PUSH DPH
SJMP ?C0333

  ?C0002:
POP     DPL
POP     DPH
POP     B
POP     ACC
POP     PSW

?C0333:
RETI  
#pragma endasm
}

void time1() interrupt 3 using 2
{
TH1=needfq>>8;
TL1=(uCHAR)needfq;
sound=!sound;
}

void main ()
{
  uCHAR data counter,keyprstime,datan;
  uCHAR data addr,testb,tabf;
addr=addres=counter=0;   /*  */
keyprstime=insbak=0;
  if (!p01)
  {
   delay50ms(15);
   if (!p01) testb=0x74;
   ......
   
red3: if (testb==0xa5)
  .......
}

void icstart(void)
{
scl=0;
sda=1;
_nop_();
_nop_();
scl=1;
_nop_();
sda=0;
_nop_();
}

void icstop(void)
{
.......
}

void ack(void)
{
scl=0;
_nop_();
sda=0;
_nop_();
scl=1;
_nop_();
_nop_();  
}

2樓: >>參與討論
wayner
MOV    DPTR,#?main?red3這一句的作用是想中段后返回到指定地址
 
3樓: >>參與討論
wayner
再次請(qǐng)教啊!
 
4樓: >>參與討論
wayner
在options for files"g115.c"中我也勾選了:
generate assmbler SRC filer和assmble SRC file 兩選項(xiàng)

5樓: >>參與討論
wayner

 
6樓: >>參與討論
wayner
這個(gè)問(wèn)題沒(méi)有人感興趣嗎?
 
7樓: >>參與討論
wayner
大家都準(zhǔn)備過(guò)年了,不來(lái)了?祝大家春節(jié)快樂(lè)!
 
8樓: >>參與討論
eric_tj
我也出現(xiàn)過(guò)。。。。
奇怪的是執(zhí)行時(shí)沒(méi)從MAIN函數(shù)開(kāi)始反而從一個(gè)子函數(shù)開(kāi)始,是不是KEIL不支持混合模式編程?

9樓: >>參與討論
eric_tj
急!求教高手指點(diǎn)!
 
10樓: >>參與討論
zhang_2000
C中斷
C51編程只要是進(jìn)入interrupt 函數(shù)
回自動(dòng)把A,B,PSW等壓入堆棧,你又寫(xiě)
PUSH    PSW
PUSH    ACC
PUSH    B
PUSH    DPH
PUSH    DPL
重復(fù).沒(méi)有必要這么做的.還是好好的去看看關(guān)于中斷的C51的書(shū)吧.

11樓: >>參與討論
wayner
謝謝zhang_2000和eric_tj,我多試試看吧!
 
參與討論
昵稱(chēng):
討論內(nèi)容:
 
 
相關(guān)帖子
有沒(méi)有人PIC單片機(jī)高手??看一下。
一般來(lái)說(shuō)10mil的銅線可以過(guò)多大的電流  謝謝
關(guān)于51單片機(jī)的I/O口的輸入狀態(tài)的問(wèn)題。
急請(qǐng)大俠指點(diǎn):怎么使用78E58B內(nèi)部的外部256字節(jié)RAM?
請(qǐng)問(wèn)用一個(gè)IO口怎么控制雙色燈???
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號(hào)