出事啦!出事啦!大家进来看一下!你们在用PICC编绎出来的代码是不是也是这个样子的!泪~~~~

2020-02-10 08:35发布

大家好!!我用PICC编写了一个很简单的程序如下:

/*************************************
晶振:外部4M
单片机:PIC16F877A
功能:利用PORTC端口实现循环流水灯
**************************************/
#include<pic.h>
#define uint unsigned int
#define uchar unsigned char
void delay_ms(uint time)//大约延时1ms
{
       uint j;
       for(;time>0;time--)
              for(j=109;j>0;j--)
              {;}
}
void main(void)
{
       uchar loop;
       TRISC=0x00;//设置为输出
       while(1)
       {     
              PORTC=0xfe;//先将端口赋值0xfe
              delay_ms(300);
              for(loop=0;loop<8;loop++)
              {     
                     PORTC<<=1;//读端口左移再赋值给PC端口
                     delay_ms(300);//延时300ms
              }
       }
}

PICC编绎之后所生成的代码可以正常地运行,但是用烧写器打开之后如下图所示!



(原文件名:编绎出来之后的代码分配情况.JPG)


第一部分从0x00~0x07,第二部分从0x7CE~0x7FF。为什么编绎器所生成的代码不是从0x00开始一直依次排列下去的!而是分成两部分排列!我试过编写超过7K的程序源码!PICC编绎器所生成的代码还分成三部分!是不是我的程序在编写时就出现了问题啊??但是编绎器却没有提示错误或警告!请大家指点!如何解决这个问题!谢谢 ?
  ?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
lgh050706
1楼-- · 2020-02-10 21:57
lvfei 吕飞:我这里上传了一个K149的PIC烧写器的上位机麻烦你按装这后帮忙看一下吧!
K149 PIC烧写器上位机ourdev_489627.rar(文件大小:1022K) (原文件名:2005v1.0-ch.rar)






minipigs:你说是Linker文档和MAP文档在那里啊?我找不到啊!!
lgh050706
2楼-- · 2020-02-11 00:24
别人4K的代码是这样的:

(原文件名:别人的代码.JPG)



我4K的代码是这样的!

我4K的代码是这样的 (原文件名:4K的代码分成三部分.JPG)

我总结好像是这样的:小的程序这样好像就没有出问题!但是程序大,源码多的话就会出问题!我写的这4K程序编绎没有出现语法错误!但是程序运行起来就很容易出现跑飞的现象!我查了很久都查不出问题!不知道是不是这个原因!
billowtust
3楼-- · 2020-02-11 00:44
配置、链接文件的原因

如果是手工汇编编程,则是根据编程者的意愿连续或不连续(就看怎么ORG了),如果是C语言,则C语言有它自己的链接原则,典型的是不用的中断入口是不写CODE的(默认0XFF),这块区域就是不编程的。其余的就看C语言编译器的其他习性了。
lvfei
4楼-- · 2020-02-11 04:55
我同意楼上的看法,这和C语言编译器的特性是有关的,要是汇编程序就不会遇到这些问题。至于你说的跑飞现象,应该和你的程序本身也有关系吧,比如说编程习惯什么的,优化你的代码,应该会好一些~~~~把你的程序贴出来看看~~~
lgh050706
5楼-- · 2020-02-11 05:15
 精彩回答 2  元偷偷看……
caochunhua
6楼-- · 2020-02-11 10:39
几年前,我发现K149的PIC烧写器PC端软件在解释PICC生成的HEX时会解释错了导致程序不能正确运行,不敢用它了,改ICD2了。

一周热门 更多>