历史上的今天
今天是: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),但是从示波器上观察到的结果来看,这样是可行的。
史海拾趣
|
FPGA设计经常要用到仿真, 仿真软件可以用QUARTUS 自带的, 也可以用第三方工具软件,比较著名的就是Modesim , 仿真程序的时候我们经常要知道输入和输出的的关系,有时为了查找问题方便,还需要在查看中间积存器, QUARTUS 自带仿真工具添加中间信号 ...… 查看全部问答> |
|
我在VS2005下已做好WM5的项目,可转WM2003编译供WM2003的PDA使用,但找不到选项更改?! 我想到的笨办法是要另建一个WM2003的同名项目,再把WM5的项目中的同名文件覆盖过来,然后在项目不添加后加的文件,但工作量好象不小。 特此请教!… 查看全部问答> |
|
我想设计一个电路用来测量三角波的幅度,频率,以及斜率,我觉得对幅度来说可以用数模转换,在不同的幅度输出不同的值;在频率方面,用时钟电路来做计时,在一个波完时再对时钟中断;而在斜率方面,就不太清楚了,也不知道对不对,请给个方向吧!但 ...… 查看全部问答> |
|
请问大家.半导体集成,它的集成程度分为小规模集成,中规模集成,大规模集成,超大规模集成,特大规模集成,巨大规模集成.请问是如何区分的.请举个具体型号的例子.谢谢 [ 本帖最后由 jirongchang 于 2010-8-26 13:15 编辑 ]… 查看全部问答> |




