大家好!!我用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编绎器所生成的代码还分成三部分!是不是我的程序在编写时就出现了问题啊??但是编绎器却没有提示错误或警告!请大家指点!如何解决这个问题!谢谢 ?
?
如果是手工汇编编程,则是根据编程者的意愿连续或不连续(就看怎么ORG了),如果是C语言,则C语言有它自己的链接原则,典型的是不用的中断入口是不写CODE的(默认0XFF),这块区域就是不编程的。其余的就看C语言编译器的其他习性了。
一周热门 更多>