Eai galera, estou começando na programação de micros, e tive algumas dificuldades.
Primeiro escrevi o programa ( que foi só o que aprendi no curso de mecatrônica que fiz, estruturas como If else, struct for, switch case, apenas aprendemos C++ básico, rodava tudo no proteus que é uma maravilha, mas na hora de compilar, surgiram os problemas).
Informações:
Escrevo e compilo no mplabX compilador C18 v3.40
Gravo com um pickit2
Há princípio dava erro de faltar informação de comando no .hex, visto que não sei como configurar bits corretamente.
O programa:
#include<p18f4550.h>
#include <stdio.h>
#include <stdlib.h>
#define Botao1 PORTAbits.RA1
#define Botao2 PORTAbits.RA2
#define Botao3 PORTAbits.RA0
#define Led1 PORTCbits.RC2
#define Led2 PORTDbits.RD0
#define Led3 PORTCbits.RC0
#define TBotao1 TRISAbits.TRISA1
#define TBotao2 TRISAbits.TRISA2
#define TBotao3 TRISAbits.TRISA3
#define TLed1 TRISCbits.TRISC2
#define TLed2 TRISDbits.TRISD0
#define TLed3 TRISCbits.TRISC0
void Sistema(void);
void main(void)
{
Sistema();
while(1)
{
if(Botao1==1)
{
Led1=1;
Led2=0;
Led3=0;
}
if(Botao2==1)
{
Led1=0;
Led2=1;
Led3=0;
}
if(Botao3==1)
{
Led1=0;
Led2=0;
Led3=1;
}
}
}
void Sistema(void)
{
ADCON1 |= 0X0F;
TBotao1=1;
TBotao2=1;
TBotao3=1;
TLed1=0;
TLed2=0;
TLed3=0;
}
Compilo, gravo (mesmo quando tentei configurar bits como achei na internet, mas sem sucesso)
Se alguém puder me ajudar, a gravar de forma que também funcione no protoboard,ajudaria bastante.
Já procurei muita coisa, e só tive mais duvidas :S
Tags:
As respostas para este tópico estão encerradas.
Oi MG, boa tarde,
O PIC18F4550, é um ucomtolador muito complexo pra que está iniciando nesta área.
Eu recomendo você iniciar fazendo pequenos programas utilizando um dos PICs muito usados e
conhecidos por todos "PICqueiros", o PIC16F628A e o PIC16F877A.
Eles não têm o "poder" de um PIC18F4550, mas como tem muito material disponível sobre eles na net,
é um bom passo para iniciantes em PIC.
Realmente, sem configurar o ucontrolador, ele não funcionará.
O PIC18F4550 tem estes registradores de configuração:
CONFIG1L — — USBDIV CPUDIV1 CPUDIV0 PLLDIV2 PLLDIV1 PLLDIV0 --00 0000
CONFIG1H IESO FCMEN — — FOSC3 FOSC2 FOSC1 FOSC0 00-- 0101
CONFIG2L — — VREGEN BORV1 BORV0 BOREN1 BOREN0 PWRTEN --01 1111
CONFIG2H — — — WDTPS3 WDTPS2 WDTPS1 WDTPS0 WDTEN ---1 1111
CONFIG3H MCLRE — — — — LPT1OSC PBADEN CCP2MX 1--- -011
CONFIG4L DEBUG XINST ICPRT(3) — — LVP — STVREN 100- -1-1
CONFIG5L — — — — CP3(1) CP2 CP1 CP0 ---- 1111
CONFIG5H CPD CPB — — — — — — 11-- ----
CONFIG6L — — — — WRT3(1) WRT2 WRT1 WRT0 ---- 1111
CONFIG6H WRTD WRTB WRTC — — — — — 111- ----
CONFIG7L — — — — EBTR3(1) EBTR2 EBTR1 EBTR0 ---- 1111
CONFIG7H — EBTRB — — — — — — -1-- ----
Você tem que configurar alguns bits, Exemplo:
FOSC = INTOSCIO_EC //internal ocsillator
WDT = OFF //turn off WDT
LVP = OFF //turn off LVP
BOR = ON //enable brownout reset
MCLRE = OFF //tie MCLR to Vdd, free up
CPD = ON //eprom protect
PLLDIV = 2; //assume 8 mhz input
CPU_DIV = OSC1_PLL2; //no CPU postscaling
USBDIV = 2; //USB clock src is PLL
FCMEM = OFF; //fail safe clock monitor
IESO = OFF; //internal/external switch over
PWRT = OFF; //power up timer off
BORV = 46; //brown out reset voltage
VREGEN = OFF; //USB voltage regulation
PBADEN = OFF; //port B enable
Rui
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por