📄 main.c
字号:
/*
** ============================================================================
**
** FILE
** main.c
**
** DESCRIPTION
** Main file of the Si443x demo
**
** CREATED
** Silicon Laboratories Hungary Ltd
**
** COPYRIGHT
** Copyright 2008 Silicon Laboratories, Inc.
** http://www.silabs.com
**
** ============================================================================
*/
/*------------------------------------------------------------------------*/
/* INCLUDE */
/*------------------------------------------------------------------------*/
#include "S8051.h"
#include "uart.h"
#include "dog_glcd.h"
#include "timers.h"
#include "IA443x_demo.h"
/*------------------------------------------------------------------------*/
/* GLOBAL variables */
/*------------------------------------------------------------------------*/
extern bit fUartCommandReceived;
/*------------------------------------------------------------------------*/
/* FUNCTION prototypes */
/*------------------------------------------------------------------------*/
void InitHw(void);
/* ============================================================ *
* MAIN PROGRAM *
* ============================================================ */
void main(void)
{
//initialize the HW
InitHw();
//initialize the demo
DemoInit();
//main loop
while(1)
{
DemoStateMachine();
//if uart command received, handle it
if(fUartCommandReceived == TRUE)
{
fUartCommandReceived = FALSE;
UartCommandInterpreter();
}
}
}
void InitHw(void)
{
//Disable the Watchdog Timer
PCA0MD &= ~0x40;
PCA0MD = 0x00;
//I/O PORT INIT
// P0.0 - Skipped, Open-Drain, Digital
// P0.1 - Skipped, Open-Drain, Digital
// P0.2 - Skipped, Open-Drain, Analog
// P0.3 - Skipped, Open-Drain, Analog
// P0.4 - TX0 (UART0), Push-Pull, Digital
// P0.5 - RX0 (UART0), Open-Drain, Digital
// P0.6 - Skipped, Open-Drain, Digital
// P0.7 - Skipped, Open-Drain, Digital
// P1.0 - SCK (SPI1), Push-Pull, Digital
// P1.1 - MISO (SPI1), Open-Drain, Digital
// P1.2 - MOSI (SPI1), Push-Pull, Digital
// P1.3 - Skipped, Push-Pull, Digital
// P1.4 - Skipped, Push-Pull, Digital
// P1.5 - Skipped, Push-Pull, Digital
// P1.6 - Skipped, Push-Pull, Digital
// P1.7 - Skipped, Push-Pull, Digital
// P2.0 - Skipped, Open-Drain, Digital
// P2.1 - Skipped, Open-Drain, Digital
// P2.2 - Skipped, Push-Pull, Digital
// P2.3 - Skipped, Push-Pull, Digital
// P2.4 - Skipped, Push-Pull, Digital
// P2.5 - Skipped, Push-Pull, Digital
// P2.6 - Skipped, Push-Pull, Digital
// P2.7 - Skipped, Push-Pull, Digital
P0MDIN = 0xF3;
P0MDOUT = 0x10;
P0SKIP = 0xCF;
P1MDIN = 0xFF;
P1MDOUT = 0xFD;
P1SKIP = 0xF8;
P2MDIN = 0xFF;
P2MDOUT = 0xFC;
P2SKIP = 0xFF;
SFRPAGE = CONFIG_PAGE;
P0DRV = 0x10;
P1DRV = 0xFD;
P2DRV = 0xFC;
SFRPAGE = LEGACY_PAGE;
XBR0 = 0x01;
XBR1 = 0x40;
XBR2 = 0x40;
//set inputs
P0 |= 0xE3; //Set P0 inputs
P1 |= 0x02; //Set P1 inputs
P2 |= 0x03; //Set P2 inputs
//default I/O port
LED1_PIN = 0;
LED2_PIN = 0;
LED3_PIN = 0;
LED4_PIN = 0;
BLED_PIN = 0;
LCD_NSEL_PIN = 1;
LCD_A0_PIN = 0;
LCD_RESET_PIN = 1;
//Oscillator init: external XTAL (16MHz), SYSCLK=XTAL/2
OSCXCN = 0x77;
while ((OSCXCN & 0x80) == 0);
CLKSEL = 0x01;
//Initialize SPI
SetHwMasterSpi();
//Initialize Uart
UartInit();
//initialize the LCD
LcdInit();
//enable interrupts
EnableGlobalIt();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -