| 
  |||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe  | 
  
各位大蝦(電腦圈圈...)如果知道的請幫幫忙,謝謝! | 
  
| 作者:fzj 欄目:單片機(jī) | 
case 1: PORTB=leddisp1[s1]; timebit1=1; break; //對應(yīng)的反匯編: 163: case 1: 164: PORTB=leddisp1[s1]; 0007A5 3000 MOVLW 0 0007A6 08A MOVWF 0xa //上面2句是垃圾沒用的怎么才能去掉?請熟悉PICC的高手幫我分析一下謝謝! 0007A7 82A MOVF 0x2a, W 0007A8 2015 CALL 0x15 0007A9 086 MOVWF 0x6 165: timebit1=1; 0007AA 1707 BSF 0x7, 0x6 166: break; 0007AB 008 RETURN  | 
  
| 2樓: | >>參與討論 | 
| 作者: fzj 于 2006/1/14 20:11:00 發(fā)布:
         是不是我編譯器的緣故呀? 怎么每個CASE下都要2句垃圾代碼,占用ROM不說還浪費(fèi)了我一個寶貴的RAM,怎么搞也不行,我的編譯軟件是PICC8.05版本!希望各位能幫幫我謝謝拉!  | 
  |
| 3樓: | >>參與討論 | 
| 作者: computer00 于 2006/1/14 20:57:00 發(fā)布:
         抱歉,沒用過PIC單片機(jī),所以不知道那幾個匯編代碼是什么意思 糾正你一個概念: 那幾個代碼是由C語言編譯出來的匯編代碼。所以應(yīng)該就叫做編譯后的匯編代碼,不能叫做反匯編。 反匯編是指從二進(jìn)制文件(或者h(yuǎn)ex文件,其實(shí)hex文件是二進(jìn)制文件的另一種編碼方式而已),生成匯編代碼的過程。 相反的,由匯編代碼生成二進(jìn)制文件的過程,就叫做匯編。由高級語言生成匯編代碼的過程,叫做編譯。  | 
  |
| 4樓: | >>參與討論 | 
| 作者: FZJ 于 2006/1/15 8:17:00 發(fā)布:
         哦,不能叫反匯編??C語言反變成匯編呀,呵呵! 沒關(guān)系,謝謝您, movlw 0 movwf 0xa //意思是將地址為0XA單元經(jīng)W寄存器中轉(zhuǎn)后送入0也就是0XA單元清0。我的CASE下每句都有這兩條語句,沒用的?纯矗 /***********************************************************************/ void scan_led (void) //數(shù)碼管顯示掃描 { static unsigned CHAR i; PORTC=0X00; if (i>=9) i=0; SWITCH (i) { case 0: PORTB=leddisp1[s1]; timebit1=1; break; case 1: PORTB=leddisp1[s2]; timebit2=1; break; case 2: PORTB=leddisp1[s3]; timebit3=1; break; case 3: PORTB=leddisp1[s4]; timebit4=1; break; /*---------------------------------------------------------------------*/ case 4: PORTB=leddisp1[j1]; countbit1=1; break; case 5: PORTB=leddisp1[j2]; countbit2=1; break; case 6: PORTB=leddisp1[j3]; countbit3=1; break; case 7: PORTB=leddisp1[j4]; countbit4=1; break; /*----------------------------------------------------------------------*/ case 8: PORTB=leddisp2[led_py]; break; } ++i; } 176: /***********************************************************************/ 177: void scan_led (void) //數(shù)碼管顯示掃描 178: { 179: static unsigned CHAR i; 180: PORTC=0X00; 79D 0183 CLRF 0x3 79E 0187 CLRF 0x7 181: if (i>=9) i=0; 79F 3009 MOVLW 0x9 7A0 0223 SUBWF 0x23, W 7A1 1C03 BTFSS 0x3, 0 7A2 2FE3 GOTO 0x7e3 7A3 01A3 CLRF 0x23 182: SWITCH (i) 7A4 2FE3 GOTO 0x7e3 7E3 0823 MOVF 0x23, W 7E4 1903 BTFSC 0x3, 0x2 7E5 2FA5 GOTO 0x7a5 7E6 3A01 XORLW 0x1 7E7 1903 BTFSC 0x3, 0x2 7E8 2FAC GOTO 0x7ac 7E9 3A03 XORLW 0x3 7EA 1903 BTFSC 0x3, 0x2 7EB 2FB3 GOTO 0x7b3 7EC 3A01 XORLW 0x1 7ED 1903 BTFSC 0x3, 0x2 7EE 2FBA GOTO 0x7ba 7EF 3A07 XORLW 0x7 7F0 1903 BTFSC 0x3, 0x2 7F1 2FC1 GOTO 0x7c1 7F2 3A01 XORLW 0x1 7F3 1903 BTFSC 0x3, 0x2 7F4 2FC8 GOTO 0x7c8 7F5 3A03 XORLW 0x3 7F6 1903 BTFSC 0x3, 0x2 7F7 2FCF GOTO 0x7cf 7F8 3A01 XORLW 0x1 7F9 1903 BTFSC 0x3, 0x2 7FA 2FD6 GOTO 0x7d6 7FB 3A0F XORLW 0xf 7FC 1903 BTFSC 0x3, 0x2 7FD 2FDD GOTO 0x7dd 183: { 184: case 0: 185: PORTB=leddisp1[s1]; 7A5 3000 MOVLW 0 7A6 008A MOVWF 0xa 7A7 082B MOVF 0x2b, W 7A8 2015 CALL 0x15 7A9 0086 MOVWF 0x6 186: &nbs  | 
  |
| 5樓: | >>參與討論 | 
| 作者: RobertJ 于 2006/1/27 9:28:00 發(fā)布:
         好久沒用了, 0xa 是不是TRISB?(現(xiàn)在機(jī)上沒有Maplab看不見,) 若不是,則去掉優(yōu)化選項(xiàng)則可  | 
  |
| 6樓: | >>參與討論 | 
| 作者: 未來是夢 于 2006/2/2 21:10:00 發(fā)布:
         那兩句是涉及到跨頁調(diào)用程序的問題 0xa正是pclath,接下來是call,調(diào)用的程序在頁0。  | 
  |
  | 
    
 
  | 
  
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 | 
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號  |