音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

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

關(guān)于C51的一個難題,請大蝦指點一二

作者:yuzhuen 欄目:單片機
關(guān)于C51的一個難題,請大蝦指點一二
各位兄弟,你們有沒有碰過這樣的問題:在C51里邊不同地方調(diào)用同一函數(shù),結(jié)果不一樣,我這里指的結(jié)果是有時會出錯有時不會出錯,所傳遞的參數(shù)是沒有錯的,如下面函數(shù)是將數(shù)值轉(zhuǎn)換成字符串,就出現(xiàn)這樣的問題
void IntToString(CHAR *Str,unsigned LONG iData,unsigned CHAR iBits)
{    unsigned CHAR  iTemp;
    unsigned CHAR  temp_bit;
          unsigned CHAR  i;
          unsigned LONG temp_data;
         temp_bit = iBits;
         temp_data = iData;
    
    for( i = temp_bit-1; i >= 0; i-- )
    {         iTemp = (CHAR)( temp_data % 10 );
        Str[i] = iTemp+'0';
        temp_data = temp_data/10;
        
        if( i == 0 )
        break;
        
    }
    Str[temp_bit]='\0';
}

在連續(xù)多次調(diào)用(傳遞參數(shù)正確)情況下有時會出現(xiàn)這樣的情況,程序跑飛到以下這段代碼中,并且跳不出來。
                 C?ULDIV:
C:0x04C1    B800C1   CJNE     R0,#0x00,C:0485
C:0x04C4    B90059   CJNE     R1,#0x00,C:0520
C:0x04C7    BA002D   CJNE     R2,#0x00,C:04F7
C:0x04CA    EC       MOV      A,R4
C:0x04CB    8BF0     MOV      B(0xF0),R3
C:0x04CD    84       DIV      AB
C:0x04CE    CF       XCH      A,R7
C:0x04CF    CE       XCH      A,R6
C:0x04D0    CD       XCH      A,R5
C:0x04D1    FC       MOV      R4,A
C:0x04D2    E5F0     MOV      A,B(0xF0)
C:0x04D4    CB       XCH      A,R3
C:0x04D5    F9       MOV      R1,A
C:0x04D6    7818     MOV      R0,#0x18
C:0x04D8    EF       MOV      A,R7
C:0x04D9    2F       ADD      A,R7
C:0x04DA    FF       MOV      R7,A
C:0x04DB    EE       MOV      A,R6
C:0x04DC    33       RLC      A
C:0x04DD    FE       MOV      R6,A
C:0x04DE    ED       MOV      A,R5
C:0x04DF    33       RLC      A
C:0x04E0    FD       MOV      R5,A
C:0x04E1    EC       MOV      A,R4
C:0x04E2    33       RLC      A
C:0x04E3    FC       MOV      R4,A
C:0x04E4    EB       MOV      A,R3
C:0x04E5    33       RLC      A
C:0x04E6    FB       MOV      R3,A
C:0x04E7    10D703   JBC      CY(0xD0.7),C:04ED
C:0x04EA    99       SUBB     A,R1
C:0x04EB    4004     JC       C:04F1
C:0x04ED    EB       MOV      A,R3
C:0x04EE    99       SUBB     A,R1
C:0x04EF    FB       MOV      R3,A
C:0x04F0    0F       INC      R7
C:0x04F1    D8E5     DJNZ     R0,C:04D8
C:0x04F3    E4       CLR      A
C:0x04F4    F9       MOV      R1,A
C:0x04F5    FA       MOV      R2,A
C:0x04F6    22       RET      

不知道是不是KEILC51的庫函數(shù)有問題,我用的是
c51.exe     v7.00
a51.exe     v7.00a

不知各有兄弟有何高見,請指教!謝謝

2樓: >>參與討論
xwj
真的有意思啊,不知道你怎么想的啊
for( i = temp_bit-1; i >= 0; i-- )

你這個循環(huán)可以把51的(iBits-1)~0x00的RAM(包括堆棧指針,R0~R7等)全部修改,不亂套才怪呢


3樓: >>參與討論
yuzhuen
謝謝xwj胡提醒,你真是一語中的啊,我將for()改了一下就行了
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
關(guān)于接地問題的緊急求教
關(guān)于一個存儲芯片24LC64與
偉福的仿真器,能把人折騰死!
求助時鐘問題1
各路單片機高手,小弟有問題請教!
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號