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

PIC18F45J10单片机怎么配置,,

[复制链接]
1854|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

使用特权

评论回复
5
huagaoteng|  楼主 | 2014-9-23 15:45 | 只看该作者
我用MAPLAB IDE和PICC18

使用特权

评论回复
6
huagaoteng|  楼主 | 2014-9-23 15:52 | 只看该作者
本帖最后由 huagaoteng 于 2014-9-23 16:00 编辑

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

2.zip

70.37 KB

工程文件

使用特权

评论回复
7
huagaoteng|  楼主 | 2014-9-23 22:12 | 只看该作者
谁能否提供下18f系列其中一款单片机的完整软件工程文件,谢谢

使用特权

评论回复
8
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--);
        }
}
完整工程文件是不可能了,给你一个跑马灯范例跑跑还是没什么问题的

使用特权

评论回复
9
huagaoteng|  楼主 | 2014-9-25 10:42 | 只看该作者
这个可以运行的是吧,好的,我试试,谢谢

使用特权

评论回复
10
huagaoteng|  楼主 | 2014-9-25 10:54 | 只看该作者
我之前程序里是用PORTB进行端口赋值,这个和LATB有什么区别吗

使用特权

评论回复
11
yklstudent| | 2014-9-25 12:02 | 只看该作者
看看芯片资料,发现还是有区别的
具体什么区别,自行动手看资料即可

使用特权

评论回复
12
排山倒海| | 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。

使用特权

评论回复
13
huagaoteng|  楼主 | 2014-9-25 13:30 | 只看该作者
数据手册里是这样写的LATA data output,PORTA data input,,,数据输出用LATA,数据输入用PORTA,这样理解对吗

使用特权

评论回复
14
huagaoteng|  楼主 | 2014-10-8 09:57 | 只看该作者
问题解决了,非常感谢楼上的朋友,

使用特权

评论回复
15
cplide| | 2014-12-18 18:20 | 只看该作者
不懂过来参观学习的

使用特权

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

本版积分规则

23

主题

114

帖子

1

粉丝