#include "include.h"
void System_Int(void)
{
	Ram_Int();   ///RAM清零  
	
	Gpio_Int();		//IO初始化	

	Uart_Int();
}

void Uart_Int(void)
{
	ANSELC0   = 1;
	TRISC0    = 1;      ///TX  PC0 数字输出
	
	ANSELB5   = 1;
	TRISB5    = 0;      ///RX  PB5 数字输入
	WPUB5     = 1;      ///输入上拉 空闲高电平
	
	UART_MAP  = 0x22;   //TX PC0  RX PB5
	
	S1CON     = 0x00;

/*
波特率计算公式
	推算波特率
	Fcpu / (16 * (65536 - [BRTH : BRTL]))
	
	推算波特率发生器的值
	[BRTH : BRTL] = 65536 - (Fcpu / (16 * Baud))

*/

	BRTH      = 0xFF; 
	BRTL      = 0xE6; ////波特率计算  
		
	S1CON2    = 0x20;
	
	REN = 1;     ///使能接收
	
	RXIF = 0;
	RXIE = 1;    ///接收中断

}

void Gpio_Int(void)
{
	////数字模拟模式：   1：数字    0：模拟
	ANSELA = 0x00;
	ANSELB = 0x00;
	ANSELC = 0x00;
	
	////输入输出模式：   1：输出    0：输入
	TRISA = 0x00;
	TRISB = 0x00;
	TRISC = 0x00;
	
	////IO数据寄存器：   1：高电平    0：低电平
	PORTA = 0x00;
	PORTB = 0x00;
	PORTC = 0x00;
	
	////输入上拉控制：   1：使能上拉   0：关闭上拉
	WPUA = 0x00;
	WPUB = 0x00;
	WPUC = 0x00;
	
	////输入下拉控制：   1：使能下拉   0：关闭下拉
	WPDA = 0x00;
	WPDB = 0x00;
	WPDC = 0x00;
	
	////GPIO唤醒控制：   1：使能唤醒   0：关闭唤醒
	IOCA = 0x00;
	IOCB = 0x00;
	IOCC = 0x00;	
}

void Ram_Int(void)
{
	IRP = 0;
	FSR = 0x60;
	do{
		INDF = 0;
		FSR++;
	}while(FSR != 0x80);//BANK0 60H~7FH 地址清0
      
	FSR = 0xD0;
	do{
		INDF = 0;
		FSR++;
	}while(FSR != 0xF0);//BANK1 D0H~EFH 地址清0
	
	IRP = 1;
	FSR = 0x10;
	do{
		INDF = 0;
		FSR++;
	}while(FSR != 0x70);//BANK2 110H~16FH 地址清0
      
	FSR = 0x90;
	do{
		INDF = 0;
		FSR++;
	}while(FSR != 0xF0);//BANK3 190H~1EFH 地址清0

	IRP = 0;
}