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

登錄 免費(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

PICC優(yōu)化后程序跑飛的代碼

作者:黃果樹(shù) 欄目:單片機(jī)
PICC優(yōu)化后程序跑飛的代碼
關(guān)閉Enable assemble optimization 編譯出來(lái)的代碼

6:                 /*******************************************************************
7:                                      起動(dòng)IIC總線函數(shù)               
8:                 函數(shù)原型: void  I2cStart(void);  
9:                 功能:啟動(dòng)IIC總線,即發(fā)送I2C起始條件.  
10:                ********************************************************************/
11:                void    I2cStart(void)
12:                {
13:                    SDA_DIR=0;    //scl設(shè)為輸出
001BC5    1683     BSF 0x3, 0x5
001BC6    1303     BCF 0x3, 0x6
14:                    SCL_DIR=0;      //sda設(shè)為輸出
001BC8    1105     BCF 0x5, 0x2
15:                    SDA=1;
001BC9    1283     BCF 0x3, 0x5
16:                    #asm
17:                    goto    $+1
001BCB    2BCC     GOTO 0x3cc
18:                    goto    $+1
001BCC    2BCD     GOTO 0x3cd
19:                    NOP
001BCD    0000     NOP
20:                    #endasm
21:                    SCL=1;
001BCE    1505     BSF 0x5, 0x2
22:                    #asm
23:                    goto    $+1
001BCF    2BD0     GOTO 0x3d0
24:                    goto    $+1
001BD0    2BD1     GOTO 0x3d1
25:                    NOP
001BD1    0000     NOP
26:                    #endasm    //起始條件建立時(shí)間大于4.7us,延時(shí)
27:                    SDA=0;
001BD2    1285     BCF 0x5, 0x5
28:                    #asm
29:                    goto    $+1
001BD3    2BD4     GOTO 0x3d4
30:                    goto    $+1
001BD4    2BD5     GOTO 0x3d5
31:                //    NOP
32:                    #endasm
33:                    SCL=0;
001BD5    1105     BCF 0x5, 0x2
34:                }
001BD6    0008     return




打開(kāi)Enable assemble optimization 編譯出來(lái)的代碼
6:                 /*************************************************
7:                                      起動(dòng)IIC總線函數(shù)               
8:                 函數(shù)原型: void  I2cStart(void);  
9:                 功能:啟動(dòng)IIC總線,即發(fā)送I2C起始條件.  
10:                ********************************************************************/
11:                void    I2cStart(void)
12:                {
13:                    SDA_DIR=0;    //scl設(shè)為輸出
000898    1683     BSF 0x3, 0x5
000899    1303     BCF 0x3, 0x6
14:                    SCL_DIR=0;      //sda設(shè)為輸出
00089B    1105     BCF 0x5, 0x2
15:                    SDA=1;
00089C    1283     BCF 0x3, 0x5
16:                   &
2樓: >>參與討論
張明峰
我不會(huì)懷疑是優(yōu)化造成的問(wèn)題
類似的I2C程序也用C寫(xiě)過(guò),從來(lái)就沒(méi)有什么問(wèn)題。有開(kāi)發(fā)工具的話就趕緊調(diào)試呀,在這兒空等干嗎?

就算程序能運(yùn)行,看你對(duì)I2C總線的如此操作方式,要我看給個(gè)50分差不多了。你對(duì)I2C協(xié)議的本質(zhì)根本就沒(méi)有掌握。

3樓: >>參與討論
黃果樹(shù)
問(wèn)題解決
4:                 /*******************************************************************
5:                                      起動(dòng)IIC總線函數(shù)               
6:                 函數(shù)原型: void  I2cStart(void);  
7:                 功能:啟動(dòng)IIC總線,即發(fā)送I2C起始條件.  
8:                 ********************************************************************/
9:                 void    I2cStart(void)
10:                {
11:                    SDA_DIR=0;    //scl設(shè)為輸出
000895    1683     BSF 0x3, 0x5
000896    1303     BCF 0x3, 0x6
12:                    SCL_DIR=0;      //sda設(shè)為輸出
000898    1105     BCF 0x5, 0x2
13:                    SDA=1;
000899    1283     BCF 0x3, 0x5
14:                    #asm
15:                    goto    $+1
00089B    289C     GOTO 0x9c
16:                    goto    $+1
00089C    289D     GOTO 0x9d
17:                    NOP
00089D    0000     NOP
18:                    #endasm
19:                    SCL=1;
00089E    1505     BSF 0x5, 0x2
20:                    #asm
21:                    goto    $+1
00089F    28A0     GOTO 0xa0
22:                    goto    $+1
0008A0    28A1     GOTO 0xa1
23:                    NOP
0008A1    0000     NOP
24:                    #endasm    //起始條件建立時(shí)間大于4.7us,延時(shí)
25:                    SDA=0;
0008A2    1285     BCF 0x5, 0x5
26:                    #asm
27:                    goto    $+1
0008A3    28A4     GOTO 0xa4
28:                    goto    $+1
0008A4    28A5     GOTO 0xa5
29:                    NOP
0008A5    0000     NOP
30:                    #endasm
31:                    SCL=0;
0008A6    1105     BCF 0x5, 0x2 不加return時(shí),此句未產(chǎn)生代碼
32:                    return;就加了此句,
33:                }
0008A7    0008     RETURN不加return時(shí),編譯后無(wú)此句代碼,造成程序跑飛,堆棧溢出

* - 本貼最后修改時(shí)間:2004-2-26 9:21:07 修改者:黃果樹(shù)

4樓: >>參與討論
黃果樹(shù)
呵呵!
估計(jì)張斑竹給我50分的原因是我用SDA=1而不是釋放總線由上拉電阻產(chǎn)生"high"吧!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
如何用C語(yǔ)言寫(xiě)單片機(jī)
用到PIC16F676 做的電路燈閃動(dòng),怎樣解決?
pic編程的2個(gè)小問(wèn)題,求人能解答。。!我等待了許久!
急急!!  讀寫(xiě)24lc01b咋就不對(duì)呀,高手指點(diǎn)呀!!
折磨我?guī)滋斓腎IC程序,請(qǐng)大家一定幫忙!
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)