打印
[PIC®/AVR®/dsPIC®产品]

#pragma code的问题

[复制链接]
1931|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
JY-DX-JY|  楼主 | 2016-11-26 16:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
我买了一本PIC18F单片机的书,其中提到可以用#pragma code对程序设定ROM地址。
可是我试了一下,不行。
我的程序:
#include <p18f26k80.h>

rom const char mynum[]="0123456789";
#pragma code access main = 0x50
void main(void)
{
                unsigned int i;
                ANCON1= 0b00000000;                 //关RB4 模拟功能
                TRISB=0XFF;
                TRISC=0;
                while(1)
                {
                        /*PORTCbits.RC2=1;
                        for(i=0;i<50000;i++);
                        PORTCbits.RC2=0;
                        for(i=0;i<50000;i++);*/
                        if((PORTB&0X10)==0)
                                PORTCbits.RC2=1;
                        else
                                PORTCbits.RC2=0;
                }       
}       

编译完成,查看16进制代码:

感觉没有效果。请问高手,我哪里操作有错吗?谢谢!
沙发
JY-DX-JY|  楼主 | 2016-11-27 11:44 | 只看该作者
高手支招啊

使用特权

评论回复
板凳
XIEYUANBIN| | 2016-11-27 14:34 | 只看该作者
在对应C编译器的用户手册里有说明,但我实际试过,如果程序空间足够,貌似不按照你的空间分配指令来。除非修改程序空间范围

使用特权

评论回复
地板
JY-DX-JY|  楼主 | 2016-11-27 15:02 | 只看该作者
XIEYUANBIN 发表于 2016-11-27 14:34
在对应C编译器的用户手册里有说明,但我实际试过,如果程序空间足够,貌似不按照你的空间分配指令来。除非 ...

谢谢。怎么修改程序空间范围?

使用特权

评论回复
5
XIEYUANBIN| | 2016-11-27 16:45 | 只看该作者
一言难尽,在 *。gld文件中修改对应的起止地址

使用特权

评论回复
6
JY-DX-JY|  楼主 | 2016-11-27 17:07 | 只看该作者
XIEYUANBIN 发表于 2016-11-27 16:45
一言难尽,在 *。gld文件中修改对应的起止地址

我只知道有*.lkr文件。我用的18f67k22_g.lkr。
18系列有gld文件吗?我截个图给你

你看是修改这个吗?

使用特权

评论回复
7
XIEYUANBIN| | 2016-11-28 08:33 | 只看该作者
在编译器安装文件夹下面找

使用特权

评论回复
8
JY-DX-JY|  楼主 | 2016-11-28 08:37 | 只看该作者
XIEYUANBIN 发表于 2016-11-28 08:33
在编译器安装文件夹下面找

找不到

使用特权

评论回复
9
XIEYUANBIN| | 2016-11-28 10:25 | 只看该作者
什么编译器,对应你的芯片名称,

使用特权

评论回复
10
JY-DX-JY|  楼主 | 2016-11-28 10:49 | 只看该作者
XIEYUANBIN 发表于 2016-11-28 10:25
什么编译器,对应你的芯片名称,

MCC18_V3.00 PIC18F67K22

使用特权

评论回复
11
zbcaich| | 2016-11-29 19:43 | 只看该作者
在编译器可以指定代码范围,也可以指定空出来的范围

Builfd Options_1.png (38.65 KB )

Builfd Options_1.png

使用特权

评论回复
12
JY-DX-JY|  楼主 | 2016-11-30 08:28 | 只看该作者
zbcaich 发表于 2016-11-29 19:43
在编译器可以指定代码范围,也可以指定空出来的范围

你这个是MPLAB哪个版本的?我的是V8.92是这样的。

使用特权

评论回复
13
zbcaich| | 2016-12-17 13:54 | 只看该作者
这个应该和C编译器有关,我是8位机的,HT_PIC,但都应该能这样操作的吧,毕竟很多时候有这个需求

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:晴天响霹雳,平地一声雷。

245

主题

3349

帖子

30

粉丝