[PIC®/AVR®/dsPIC®产品] PIC18F45J10单片机怎么配置,,

[复制链接]
2483|14
 楼主| huagaoteng 发表于 2014-9-19 16:12 | 显示全部楼层 |阅读模式
__CONFIG(0x3FF2);
这一句写到程序里就编译报错,求教

zhimagod 发表于 2014-9-20 12:50 | 显示全部楼层
你用的什么编译器呢?
其实用X版的IDE然后下个配置插件应该就不需要关注怎么写的问题了吧
排山倒海 发表于 2014-9-20 13:29 | 显示全部楼层
33014L_CN《MPASM汇编器MPLINK目标链接器MPLIB目标库管理器用户指南.pdf》中66页有说明:
PIC18FXXJ 不支持此伪指令(即__config伪指令)。使用config 伪指令(无下划线)。
jinjian75 发表于 2014-9-22 10:45 | 显示全部楼层
45K22里面的配置
// ¡ª ¡ª WDPS<3:0> WDTEN<1:0> ¡ª ¡ª ¡ª BORV<1:0> BOREN<1:0> PWRTEN
__PROG_CONFIG(2,0x3c00);        // 0b 0011 1100  0000 0000
// MCLRE ¡ª P2BMX T3CMX HFOFST CCP3MX PBADEN CCP2MX ¡ª ¡ª ¡ª ¡ª ¡ª ¡ª ¡ª ¡ª
__PROG_CONFIG(3,0x8800);        // 0b
// ¡ª ¡ª ¡ª ¡ª ¡ª ¡ª ¡ª ¡ªDEBUG XINST ¡ª ¡ª ¡ª LVP ¡ª STRVEN
__PROG_CONFIG(4,0xFF01);        // 0b 1111 1111 0000 0101
// CPD CPB ¡ª ¡ª ¡ª ¡ª ¡ª ¡ª¡ª ¡ª ¡ª ¡ª CP3 CP2 CP1 CP0
__PROG_CONFIG(5,0x400f);        // 0b 1100 0000 0000 1111
// WRTD WRTB WRTC ¡ª ¡ª ¡ª ¡ª ¡ª¡ª ¡ª ¡ª ¡ª WRT3 WRT2 WRT1 WRT0
__PROG_CONFIG(6,0xE00f);        // 0b 1110 0000 0000 1111
// ¡ª EBTRB ¡ª ¡ª ¡ª ¡ª ¡ª ¡ª¡ª ¡ª ¡ª ¡ª EBTR3 EBTR2 EBTR1 EBTR0
__PROG_CONFIG(7,0x400f);        // 0b 0100 0000 0000 1111
 楼主| huagaoteng 发表于 2014-9-23 15:45 | 显示全部楼层
我用MAPLAB IDE和PICC18
 楼主| huagaoteng 发表于 2014-9-23 15:52 | 显示全部楼层
本帖最后由 huagaoteng 于 2014-9-23 16:00 编辑

我用PIC18F45J10的单片机,这个整个工程文件,单片机就是跑不起来,,,
编译环境是MAPLAB IDE和PICC18

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| huagaoteng 发表于 2014-9-23 22:12 | 显示全部楼层
谁能否提供下18f系列其中一款单片机的完整软件工程文件,谢谢
yklstudent 发表于 2014-9-23 22:49 | 显示全部楼层
#include        <pic18.h>
#include    "a2demo.h"
#include    "iodemo.h"
#include    "timer0.h"
#include    <stdio.h>

void delay(unsigned int t); //延时函数声明

//#pragma config CONFIG1L = 0xA0
__CONFIG(1, WDTEN_OFF & STVREN_ON & XINST_OFF);
//#pragma config CONFIG1H = 0xF4
__CONFIG(2, CP0_OFF);
//#pragma config CONFIG2L = 0xC4
__CONFIG(3, FOSC_HS & FOSC2_ON & FCMEN_ON & IESO_ON);
//#pragma config CONFIG2H = 0xFF
__CONFIG(4, WDTPS_32768);
//#pragma config CONFIG3H = 0xF1
__CONFIG(5, CCP2MX_DEFAULT);

/*
*        Interrupt demo for PIC; wait for button press on RB0/INT,
*        turn on a relay on another port bit for a period of time.
*        For simplicity here, literal constants are used, usually these
*        should be calculated with compile-time arithmetic.
*/

static unsigned int        relay_timer;        // timer value for relay driver

void main(void)
{
        io_init();
        while(1)
        {
                LATB = 0x55;
                delay(5000);
                LATB = 0xaa;
                delay(5000);
        }
}
  
void delay(unsigned int t) //延时函数
{
        unsigned int x,y;
        for(x=t;x>0;x--)
        {
                  for(y=100;y>0;y--);
        }
}
完整工程文件是不可能了,给你一个跑马灯范例跑跑还是没什么问题的
 楼主| huagaoteng 发表于 2014-9-25 10:42 | 显示全部楼层
这个可以运行的是吧,好的,我试试,谢谢
 楼主| huagaoteng 发表于 2014-9-25 10:54 | 显示全部楼层
我之前程序里是用PORTB进行端口赋值,这个和LATB有什么区别吗
yklstudent 发表于 2014-9-25 12:02 | 显示全部楼层
看看芯片资料,发现还是有区别的
具体什么区别,自行动手看资料即可
排山倒海 发表于 2014-9-25 12:40 | 显示全部楼层
本帖最后由 排山倒海 于 2014-9-25 12:42 编辑
huagaoteng 发表于 2014-9-25 10:54
我之前程序里是用PORTB进行端口赋值,这个和LATB有什么区别吗


要用LATB操作,用PORT口操作方式可能会有问题。相关详细原因信息见张明峰《PIC单片机入门与实战》163~165页的“5.1.5  端口的‘读—修改—写’问题”说明。《PIC单片机入门与实战》中说明问题是对Microchip旧型号单片机,Microchip新推出的很多单片机多增加了锁存器LATX。
 楼主| huagaoteng 发表于 2014-9-25 13:30 | 显示全部楼层
数据手册里是这样写的LATA data output,PORTA data input,,,数据输出用LATA,数据输入用PORTA,这样理解对吗
 楼主| huagaoteng 发表于 2014-10-8 09:57 | 显示全部楼层
问题解决了,非常感谢楼上的朋友,
cplide 发表于 2014-12-18 18:20 | 显示全部楼层
不懂过来参观学习的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

114

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部