Ola Senhores
Pessoal consegui acertar a biblioteca para uso do port bit a bit.
Gostaria de agradecer à William César por sua ajuda, foi ele quem deu a letra para a solução do problema.
arquivo: uc_CY8C29xxx.h
- Código: Selecionar todos
/*--------------------------------------------------------------\
| Arquivo: uc_CY8C29xxx.h |
| Criado por: Ricardo Franco |
| Data: 10/08/2008 13:07 |
| Observação: |
| Agradecimentos à William César Santos Ramalho |
\--------------------------------------------------------------*/
// -- Previne a reentrancia --------------------------------------
#ifndef __uc_CY8C29xx
#define __uc_CY8C29xx
// -- Estrutura para definição do port bit a bit -----------------
typedef struct
{
unsigned char b7 : 1;
unsigned char b6 : 1;
unsigned char b5 : 1;
unsigned char b4 : 1;
unsigned char b3 : 1;
unsigned char b2 : 1;
unsigned char b1 : 1;
unsigned char b0 : 1;
} PORT_BITS;
// -- Declaração da Union ----------------------------------------
typedef union
{
unsigned char byte;
PORT_BITS b;
} PORT_DEF;
// -- Atribuição da union aos registradores dos ports ------------
#ifdef CY8C29466
#pragma ioport Port0: 0x000
PORT_DEF Port0;
#pragma ioport Port1: 0x004
PORT_DEF Port1;
#pragma ioport Port2: 0x008
PORT_DEF Port2;
#endif CY8C29466
// -- Fim ---------------------------------------------------------
#endif __uc_CY8C29xx
O segredo é a diretiva #pragma que deve ser utilizada para apontar um endereço especifico, no caso o resgistrador dos ports.
Abaixo um pequeno exemplo de como utilizar esta biblioteca.
Arquivo: Main.c
- Código: Selecionar todos
//----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------
#define CY8C29466 // Define necessario para configuração dos ports bit a bit
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
#include "uc_CY8C29xxx.h" // Biblioteca com os registradores especiais
#define LED1 Port2.b.b0 // define para acessar um único bit
void main (void)
{
while(1)
{
Port2.byte = 6; // acesso do Byte todo
Port2.b.b3 = 1; // acesso apenas de um unico bit
LED1 = 1; // acesso de um unico bit pode #define
}
}
A maior vantagem deste sistema é a portabilidade que o aplicativo ganha e o uso dos pinos por nomes definidos.
Obrigado a todos pela força
Ricardo Franco