登录 免费注册 首页 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

各位大虾(电脑圈圈...)如果知道的请帮帮忙,谢谢!

作者:fzj 栏目:单片机
各位大虾(电脑圈圈...)如果知道的请帮帮忙,谢谢!
case 1:
     PORTB=leddisp1[s1];
     timebit1=1;
     break;
//对应的反汇编:
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
是不是我编译器的缘故呀?
怎么每个CASE下都要2句垃圾代码,占用ROM不说还浪费了我一个宝贵的RAM,怎么搞也不行,我的编译软件是PICC8.05版本!希望各位能帮帮我谢谢拉!

3楼: >>参与讨论
computer00
抱歉,没用过PIC单片机,所以不知道那几个汇编代码是什么意思
纠正你一个概念: 那几个代码是由C语言编译出来的汇编代码。所以应该就叫做编译后的汇编代码,不能叫做反汇编。

反汇编是指从二进制文件(或者hex文件,其实hex文件是二进制文件的另一种编码方式而已),生成汇编代码的过程。
相反的,由汇编代码生成二进制文件的过程,就叫做汇编。由高级语言生成汇编代码的过程,叫做编译。

4楼: >>参与讨论
FZJ
哦,不能叫反汇编??C语言反变成汇编呀,呵呵!
没关系,谢谢您,
movlw 0
movwf 0xa     //意思是将地址为0XA单元经W寄存器中转后送入0也就是0XA单元清0。我的CASE下每句都有这两条语句,没用的。看看:
/***********************************************************************/
     void    scan_led  (void)       //数码管显示扫描
{
     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)       //数码管显示扫描
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
好久沒用了,
0xa 是不是TRISB?(現在機上沒有Maplab看不見,)
若不是,則去掉優化選項則可



6楼: >>参与讨论
未来是梦
那两句是涉及到跨页调用程序的问题
0xa正是pclath,接下来是call,调用的程序在页0。

参与讨论
昵称:
讨论内容:
 
 
相关帖子
windowed watchdog,看门狗新品种
按键的开关量如何长距离传输?
求助: 能否给介绍1扩4的I2C芯片或较好的方法
给大家拜个年啊!!请问如何用一个单片机与3个RS232通讯,
51单片机接什么芯片可以单独直接驱动100-200LED呢
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入


Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号