Aula de programação C – 00

Ementa: Lógica de Programação. Desenvolvimento Sistemático e Implementação de Programas em Linguagem Operacional. Depuração, Testes e Documentação de Programas. Microcontroladores. Aplicações Práticas com Placas de Controles. Desenvolvimento de Projetos Mecatrônicos. 

Descrição: As práticas descritas abaixo, utilizam o Ambiente de Desenvolvimento MPLAB, versão “8.60” e compilador C18, versão “3.47”, aplicadas ao microcontrolador PIC 18F4550, nos Kits BR-GoGo e GoGo Real, versão “4.0”.

Observações: Todas as práticas necessitarão da alocação correta do código em memória, para o funcionamento em conjunto com o bootloader pré existente no microcontrolador, desta forma, além das bibliotecas “18f4550_g.lkr” e “c018i.o”, no diretório de projeto, a biblioteca “iniciog.h” será utilizada em todos os projetos, contendo as definições principais para o funcionamento do kit, incluindo rotinas que facilitarão o desenvolvimento dos algorítimos. Algumas práticas necessitarão de arquivos de apoio ou secundários, com funções e configurações específicas para o experimento, não incluídas na biblioteca “iniciog.h”.


CÓDIGO DE INICIALIZAÇÃO DA PLACA

#include <p18F4550.h>
#include <adc.h>
#include <delays.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <timers.h>
#include <pwm.h>
#include <i2c.h>
#include <usart.h>
//
#define Fosc 20
//
#pragma config FOSC = HS
#pragma config WDT = OFF
#pragma config PWRT = OFF
#pragma config BOR = OFF
#pragma config BORV = 1
#pragma config PBADEN = OFF
#pragma config LVP = OFF
//
#define RUN_BUTTON PORTDbits.RD1
#define RUN_LED PORTAbits.RA4
#define USER_LED PORTDbits.RD0
#define USER_LED2 PORTCbits.RC0
#define USER_LED3 PORTCbits.RC1
//
#define SS1 PORTAbits.RA0
#define SS2 PORTAbits.RA1
#define SS3 PORTAbits.RA2
#define SS4 PORTAbits.RA3
#define SS5 PORTAbits.RA5
#define SS6 PORTEbits.RE0
#define SS7 PORTEbits.RE1
#define SS8 PORTEbits.RE2
//
#define MCRL PORTEbits.RE3
//
#define CCP1 PORTCbits.RC2
#define CCP2 PORTCbits.RC1
//
#define DPLUS PORTCbits.RC5
#define DMINUS PORTCbits.RC4
//
#define MTR1_CW PORTBbits.RB5
#define MTR1_CC PORTBbits.RB4
#define MTR1_EN PORTBbits.RB6
//
#define MTR2_CW PORTBbits.RB2
#define MTR2_CC PORTDbits.RD7
#define MTR2_EN PORTBbits.RB3
//
#define MTR3_CW PORTDbits.RD4
#define MTR3_CC PORTDbits.RD3
#define MTR3_EN PORTDbits.RD5
//
#define MTR4_CW PORTCbits.RC6
#define MTR4_CC PORTCbits.RC7
#define MTR4_EN PORTDbits.RD2

#define MOTOR_AB_EN PORTBbits.RB7
#define MOTOR_CD_EN PORTDbits.RD6
//
#define SCL PORTBbits.RB1
#define SDA PORTBbits.RB0
//
#define SER_TX PORTCbits.RC6
#define SER_RX PORTCbits.RC7
//
#define PIEZO PORTCbits.RC2
//
#define espere_por Delay1KTCYx // 250 = 100ms
//
#define led PORTDbits.RD0
#define botao PORTDbits.RD1
#define led_vermelho PORTAbits.RA4
#define led_azul PORTDbits.RD0
#define buzzer PORTCbits.RC2
#define bip PORTCbits.RC2
//
#define sensor1 PORTAbits.RA0
#define sensor2 PORTAbits.RA1
#define sensor3 PORTAbits.RA2
#define sensor4 PORTAbits.RA3
#define sensor5 PORTAbits.RA5
#define sensor6 PORTEbits.RE0
#define sensor7 PORTEbits.RE1
#define sensor8 PORTEbits.RE2
//
#define botao1 PORTAbits.RA0
#define botao2 PORTAbits.RA1
#define botao3 PORTAbits.RA2
#define botao4 PORTAbits.RA3
#define botao5 PORTAbits.RA5
#define botao6 PORTEbits.RE0
#define botao7 PORTEbits.RE1
#define botao8 PORTEbits.RE2
//
void configura_portas();
void configura_conversor();
void ler_sensor();
void habilita_ponteh();
void configura_relogio();
void zera_relogio();
void trata_interrupcao();
void define_periodo(unsigned periodo);
void configura_pwm();
void configura_i2c_master();
void escrever_i2c(int databyte);
void configura_i2c_slave();
void ler_i2c();
void configura_display();
void escrever_display(int valor);
void configura_serial();
//void escrever_serial(char letra);
void escrever_serial();
void ler_serial();
//
void configura_portas(){
	TRISA = 0b00101111;
	TRISB = 0b00000011;
	TRISC = 0b00000000;
	TRISD = 0b00000010;
	TRISE = 0b00000111;
}
//


Observação: Deve ser acrescentada uma linha em branco ao final deste arquivo.