Nesse exemplo mostro como realizar a recepção serial por interrupção.

Usar no Proteus 7.10 ou superior.


Fazer o download:[PIC][MIKROC][PROTEUS] Recepção Serial por Interrupção


Segue o código:

[sections] [section title=”Esquema Elétrico”]
[PIC][MIKROC][PROTEUS] Recepção Serial por Interrupção
[PIC][MIKROC][PROTEUS] Recepção Serial por Interrupção
[/section]

[section title="Código Fonte"]

/*
DATEK Tecnologia Eletrônica Ltda.

********************************************************************************
PROGRAMA EXEMPLO: Mostrar como ler UART por interrupção.
OBJETIVO: Aprender como ler UART por interrupção.
AUTOR: Fabio Mulero.[fabio@datek.com.br]
********************************************************************************
MICROCONTROLADOR: PIC18F4620.

PLACA DE DESENVOLVIMENTO: SIMULAÇÃO NO PROTEUS

SOFTWARE: MikroC PRO for PIC Versão: 6.0

********************************************************************************
*/
//### DIRETIVAS DE PROGRAMA ####################################################
#include "built_in.h"

//### DEFINES E MACROS #########################################################
// Constantes
#define NAO 0
#define SIM 1
#define DESLIGA NAO
#define LIGA SIM
#define FALSO NAO
#define VERDADEIRO SIM
#define SAIDA NAO
#define ENTRADA SIM
// Macros

//### DECLARAÇÃO DE ALIASES DOS PINOS ##########################################
//--- Configuração dos pinos do LCD --------------------------------------------
// CONFIGURAÇÃO DOS PINOS DO LCD.
sbit LCD_RS at RD1_bit;
sbit LCD_EN at RD0_bit;
sbit LCD_D7 at RD6_bit;
sbit LCD_D6 at RD5_bit;
sbit LCD_D5 at RD4_bit;
sbit LCD_D4 at RD3_bit;

// DIREÇÃO DOS PINOS.
sbit LCD_RS_Direction at TRISD1_bit;
sbit LCD_EN_Direction at TRISD0_bit;
sbit LCD_D7_Direction at TRISD6_bit;
sbit LCD_D6_Direction at TRISD5_bit;
sbit LCD_D5_Direction at TRISD4_bit;
sbit LCD_D4_Direction at TRISD3_bit;

//################## PROTÓTIPOS DE FUNÇÃO ######################################
void Inicializa_PIC();
//################## VARIÁVEIS GLOBAIS #########################################

/* ROTINA PARA TRATAMENTO DE INTERRUPÇÕES*/
//=== ROTINA PARA TRATAMENTO DE INTERRUPÇÕES ===================================
void interrupt()
{
   if(RCIF_bit)
   {
      UART1_Write(UART_Read());
      RCIF_bit=0; // Limpa flag
   }
}

//################## FUNÇÃO MAIN() #############################################
void main()
{

   Inicializa_PIC();
   while(1);
}

//################## FUNÇÕES AUXILIARES ########################################
void Inicializa_PIC()
{
   CMCON = 0x07; // Desabilita comparadores

   RCIF_bit = 0; // Limpa flag
   RCIE_bit = 1; // Habilita a interrupção serial
   PEIE_bit = 1; // Habilita as interrupções de periféricos
   GIE_bit = 1; // Habilita as interrupções mascaradas

   UART1_Init(9600); // Inicializa módulo UART com taxa de 9600 bps

   Lcd_Init(); // Inicializa LCD.
   Lcd_Cmd(_LCD_CLEAR); // Apaga display.
   Lcd_Cmd(_LCD_CURSOR_OFF); // Desliga cursor.
   // Config. LCD no modo 4 bits
   Lcd_Out(1,1," DATEK Tecnologia ");
   Lcd_Out(2,1," Exemplo Recepcao ");
   Lcd_Out(3,1,"UART por interrupao ");
   Lcd_Out(4,1," Revisao 0 ");
}



[/section]
[/sections]


Obrigado e até o próximo post.

DATEK Tecnologia Eletrônica
[PIC][MIKROC][PROTEUS] Recepção Serial por Interrupção
Tags:                         

Deixe uma resposta

%d blogueiros gostam disto: