历史上的今天
返回首页

历史上的今天

今天是:2025年03月29日(星期六)

2020年03月29日 | MPLAB X IDE -1:如何反汇编PIC的二进制代码

2020-03-29 来源:eefocus

步骤:


1 准备好需要反汇编的代码文件.hex ;


2 File --> Import-->Hex File ;


3 按下图填好;

4 点击Finish;

5 选择Production-->Set Configuration Bits后,就会弹出下图;然后在红色圈处就可以选择Program Memory

6 在下图红色圈处选择Code后即出现Disassembly Code

二 程序


1 最初的程序:


#include


void delay(long i);


void main(void)

{

     __CONFIG(OSC_IntRC&WDT_OFF&CP_OFF&MCLRE_ON); 

  

     OPTION  = 0x40;      //关闭内部上拉

     TRIS        = 00001001;      //GPIO1、GPIO2输出;GPIO0、 GPIO3输入;高四位不可修改,默认为0

     OSCCAL  = 0x00;    // 内部时钟校正参数

     GP2 = 1;

     GP1 = 0;

     delay(25000); //延时800ms

     GP1 = 1;

     delay(2500);//延时ms

     GP2 =0;

     //while((GP1==1)&&(GP2==0)) //保持

     while(1)

   {

       GP1=1;

       GP2=0;

   }

            

}

   

   void  delay(long i)

   {

       

       while(i)

           i--;

   }

   需注意:


1 delay函数中的i不要设为int型,因为int的最大值为32767,如果你延时很长的话会超过32767的,程序就会出问题;


2 如果开了看门狗(WDT),就要记得喂狗即CLRWDT;我最开始的程序开了WDT,但是并没有CLRWDT。就导致GP2在输出时总是输出方波,跟我要的不一样。


三 问题:


1 为什么这段C代码用MPLAB转成汇编之后最后一行不是:


256  FF      C14     MOVLW 0x14 


而是:


256  FF      FFF     XORLW 0xFF


用HI TECH PICC v9.82和XC8编译出来的结果都是这样的。


2 为什么单测这个芯片,在掉电时GP1 GP2 的电平会翻转?上电后在很短时间内就掉电不会翻转,但是上电后过一段时间再掉电,二者的电平就会翻转


四 程序结论:


1 时钟校正参数是必须要写的,否则GP2一直输出方波,GP1一直是高电平;


2 若用C语言来写,则OSCCAL  = 0x00;这句写在程序开头都可以。虽然译成汇编之后最后一行不是Cxx(MOVLW 0x xx),但是从示波器上观察到的结果来看,这样是可行的。

推荐阅读

史海拾趣

Cotco公司的发展小趣事

在电子行业竞争日趋激烈的背景下,Cotco公司深知供应链管理和成本控制的重要性。公司与主要供应商建立了长期稳定的合作关系,确保原材料的稳定供应和成本控制。同时,Cotco不断优化生产流程和物流管理,降低生产成本和运营成本。这些举措使得Cotco的产品在价格上具有更强的竞争力,进一步巩固了其在市场上的地位。

Herga公司的发展小趣事

在20世纪90年代初,Herga公司凭借其在精密电机技术上的突破,成功研发出一款高效能、低噪音的步进电机,迅速在自动化设备和电子设备市场中脱颖而出。这款电机不仅提高了生产效率,还显著降低了能耗和噪音水平,赢得了众多知名电子制造商的青睐。Herga公司借此机会,进一步拓展产品线,逐步确立了在电子行业精密传动组件领域的领先地位。

China Semiconductor Corp公司的发展小趣事

随着公司的发展,CSC逐渐意识到技术创新是立足之本。于是,公司加大了研发投入,引进了一批高端人才,建立了完善的研发体系。通过不懈的努力,CSC在多个领域取得了重大突破,如高性能处理器、存储器等关键技术的研发,使公司在国际市场上逐渐获得了话语权。

安碁科技(AKER)公司的发展小趣事

品质是企业的生命线。安碁科技自成立以来,一直注重品质管理和技术创新。2000年,公司引进了全自动化制程设备,正式生产SMD产品,并通过了ISO9002认证。此后,安碁科技陆续通过了多项国际认证,如TL-9000、TS16949等,证明了其在品质管理方面的卓越表现。同时,公司也不断投入研发资源,推动技术创新和产品升级,以满足市场不断变化的需求。

Anaren Ceramics公司的发展小趣事

Anaren Ceramics公司深知技术创新是企业发展的核心动力,因此一直致力于打造一支强大的研发团队。公司投入大量资金用于研发人才的引进和培养,同时积极与高校和科研机构建立合作关系,共同开展技术研发项目。这些举措使得公司的研发团队不断壮大,为公司的发展提供了源源不断的创新动力。

Cosel公司的发展小趣事

在电子行业,技术创新是企业发展的关键。Cosel公司深知这一点,因此在发展过程中不断引进先进的技术和管理理念。1979年,公司引进了质量控制圈(QC circle)活动,通过全员参与的方式提高产品质量和客户满意度。随后,公司又引进了TQC(全面质量管理)和方针管理,进一步提升了企业的运营效率和产品质量。这些举措使得Cosel公司的产品在市场上获得了良好的口碑。

问答坊 | AI 解惑

菜鸟求教简单的问题

刚学99SE,不知道若运放,双联电位器怎么设置才能够是一个元件,就是电路土和PCB中一致…

查看全部问答>

十年不跳槽的精英

在中国外企和民企工作的人,呆满两年就算老人,呆满五年算是牛人,呆满十年的,绝对可以被称为仙人。   细数我认识的为数不多的几个仙人,发现比起那些每两三年跳一次槽的精英们,他们如今无论在薪水待遇、头衔职位,还是工作生活平衡度上,都毫 ...…

查看全部问答>

Modelsim观察源代码中的中间寄存器信号使用方法

FPGA设计经常要用到仿真, 仿真软件可以用QUARTUS 自带的, 也可以用第三方工具软件,比较著名的就是Modesim , 仿真程序的时候我们经常要知道输入和输出的的关系,有时为了查找问题方便,还需要在查看中间积存器, QUARTUS 自带仿真工具添加中间信号 ...…

查看全部问答>

在win ce中如何 结束进程

在win ce中如何结束进程 要求在一个进程中结束另一个进程…

查看全部问答>

VS2005下如何把WM5的项目转WM2003编译?

我在VS2005下已做好WM5的项目,可转WM2003编译供WM2003的PDA使用,但找不到选项更改?! 我想到的笨办法是要另建一个WM2003的同名项目,再把WM5的项目中的同名文件覆盖过来,然后在项目不添加后加的文件,但工作量好象不小。 特此请教!…

查看全部问答>

求购光电转换装置

求购光电转换装置:要求该装置能输出与光通量成比例的电压(或电流)信号.此信号能被普通单片机识别. 大虾们推荐推荐.…

查看全部问答>

一个热爱电子的学子提问:关于三角波的测量

我想设计一个电路用来测量三角波的幅度,频率,以及斜率,我觉得对幅度来说可以用数模转换,在不同的幅度输出不同的值;在频率方面,用时钟电路来做计时,在一个波完时再对时钟中断;而在斜率方面,就不太清楚了,也不知道对不对,请给个方向吧!但 ...…

查看全部问答>

半导体的集成程度怎么区分

请问大家.半导体集成,它的集成程度分为小规模集成,中规模集成,大规模集成,超大规模集成,特大规模集成,巨大规模集成.请问是如何区分的.请举个具体型号的例子.谢谢 [ 本帖最后由 jirongchang 于 2010-8-26 13:15 编辑 ]…

查看全部问答>

可以连接到目标板,但进不了调试模式

各位大哥,帮忙解释下撒 Start Debugging后找不到调试的黄色小箭头…

查看全部问答>