/****************************************************************************************
 * KF8A系列单片机	KF8A100EON_DEMO	开发板演示程序
 * 标    题: 无符号16/8bit硬件乘法器实验
 * 项目名: 14- DIV_Test
 * 开发环境：ChipON IDE
 * 版          本     ：V1.0 (2019/07/23)
 * 作 者: 上海芯旺微电子有限公司
 * 功能简述:	PC端输入两个16位数,以0x0D,0x0A结尾，进行硬件乘法运算，并发送回PC端，从串口助手显示
 * 硬件说明：
 * 跳线接法： 单片机供电选择为3.3V或5V
 ****************************************************************************************/
#include<KF8A100EON.h>
#include "include.h"

unsigned char Rev_Flag,Rev_StopFlag;
unsigned char Rev_count;

void Sys_Init(void)
{
	OSCCTL = 0x70;		//时钟配置为内部16M
	TR0=0;
	TR1=0;
	TR2=0;
	TR3=0;
	P0=0;
	P1=0;
	P2=0;
	P3=0;
}

//主函数
void main()
{
	Sys_Init();
	UART_Init();
	AIE=1;			//开启中断
	PUIE=1;
	while(1)
	{
		if(Rev_Flag == 1)
		{
			Rev_Flag=0;
			if(Rev_count == 5)
			{
				DIVAH = UART_BUF[0];	//转载数据
				DIVAL = UART_BUF[1];	//被除数
				DIVB  = UART_BUF[2];	//除数
				DIVEN=1;				//开始运算
				while(!	DIVOEN);
				UART_SendBuf(DIVQH);	//商高
				UART_SendBuf(DIVQL);	//商低
				UART_SendBuf(DIVR);		//余数
			}
			Rev_count=0;
		}
	}
}
//中断函数0:0X04入口地址
void int_fun0() __interrupt (0)
{
	if(RCIF)
	{
		UART_BUF[Rev_count]=RXSDR;  	//清零 RXIF
		if(UART_BUF[Rev_count] == 0x0D)
		{
			Rev_StopFlag=1;
		}
		else
		{
			if(Rev_StopFlag)
			{
				if(UART_BUF[Rev_count] == 0x0A)
					Rev_Flag=1;
				else Rev_StopFlag=0;
			}
			else
			{
				Rev_StopFlag=0;
			}
		}
		Rev_count++;
	}
}


//中断函数1:0x14入口地址
void int_fun1() __interrupt (1)
{

}
