Moderadores: andre_luis, 51
// SW address and mask defines
#pragma ioport SW_Data_ADDR: 0x4
BYTE SW_Data_ADDR;
#pragma ioport SW_DriveMode_0_ADDR: 0x104
BYTE SW_DriveMode_0_ADDR;
#pragma ioport SW_DriveMode_1_ADDR: 0x105
BYTE SW_DriveMode_1_ADDR;
#pragma ioport SW_DriveMode_2_ADDR: 0x7
BYTE SW_DriveMode_2_ADDR;
#pragma ioport SW_GlobalSelect_ADDR: 0x6
BYTE SW_GlobalSelect_ADDR;
#pragma ioport SW_IntCtrl_0_ADDR: 0x106
BYTE SW_IntCtrl_0_ADDR;
#pragma ioport SW_IntCtrl_1_ADDR: 0x107
BYTE SW_IntCtrl_1_ADDR;
#pragma ioport SW_IntEn_ADDR: 0x5
BYTE SW_IntEn_ADDR;
#define SW_MASK 0x1
//----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------
#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules
//----------------------------------------------------------------------------
// Declarações globais
//----------------------------------------------------------------------------
struct Bits
{
char SW_Status : 1;
char LED_Status : 1;
};
struct Bits Status;
//----------------------------------------------------------------------------
// Rotina de delay para gastar tempo
//----------------------------------------------------------------------------
void delay(void)
{
int i, j;
for(i = 0; i < 255; i++)
{
for(j = 0; j < 255; j++)
M8C_ClearWDT;
}
}
//----------------------------------------------------------------------------
// Função da interrupção Pino1_1
// Modo RisingEdge
//----------------------------------------------------------------------------
#pragma interrupt_handler PSoC_GPIO_ISR
void PSoC_GPIO_ISR()
{
Status.SW_Status = ~Status.SW_Status;
}
//----------------------------------------------------------------------------
// Função principal
//----------------------------------------------------------------------------
void main()
{
M8C_EnableIntMask(INT_MSK0, INT_MSK0_GPIO);
M8C_EnableGInt; // Habilita globalmente interrupções
M8C_EnableWatchDog; // Habilita o WatchDog
LED_1_Start(); // Habilita o Led
Status.SW_Status = 0;
Status.LED_Status = 0;
while(1)
{
if(!Status.SW_Status)
{
LED_1_On();
delay();
LED_1_Off();
delay();
}
M8C_ClearWDT;
}
}
// Fim
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante