#include "H/Function_Init.H"
#include "stdio.h"
bit UartSendFlag = 0; //发送中断标志位
bit UartReceiveFlag = 0; //接收中断标志位
char putchar(char c)//重定向
{
UartSendBit(c);
return c;
}
/*****************************************************
*函数名称:void Uart0_Init(void)
*函数功能:Uart0中断初始化
*入口参数:void
*出口参数:void
*****************************************************/
void Uart0_Init(void) //选择Timer1作为波特率信号发生器
{
P1CON &= 0XF3;
P1PH |= 0X0C; //TX/RX为带上拉输入;
P13 = 1; //TX初始高电平;
SCON = 0X50; //方式1,允许接收数据
PCON |= 0X80;
T2CON = 0x00; //使用定时器1作UART时钟
TMOD = 0X20; //定时器1 8位自动重载
TMCON = 0X02; //定时器1 Fsys;
TL1 = 217;
TH1 = 217; //UART 波特率24M情况下=38400;
TR1 = 1; //启动Timer0
EUART = 1; //允许UART中断
EA = 1; //开总中断
}
/*
void Uart0_Init(void) //选择Timer2作为波特率信号发生器
{
P1CON &= 0XF3;
P1PH |= 0X0C; //TX为强推输出,RX为带上拉输入;
SCON = 0X50; //设置通信方式为模式一,允许接收
PCON |= 0X80;
TMCON |= 0X04;
T2MOD = 0X00;
T2CON = 0X30;
RCAP2H = 0xFF;
RCAP2L = 0xB2;
TR2 = 1;
EUART = 1; //开启Uart0中断
EA = 1;
}
*/
/*****************************************************
*函数名称:void UartInt(void) interrupt 4
*函数功能:Uart0中断服务函数
*入口参数:void
*出口参数:void
*****************************************************/
void UartInt(void) interrupt 4
{
if(TI)
{
TI = 0;
UartSendFlag = 1;
}
if(RI)
{
RI = 0;
UartReceiveFlag = 1;
}
}
/*****************************************************
*函数名称:void UartSendBit(unsigned char c)
*函数功能:Uart0中断服务函数
*入口参数:void
*出口参数:void
*****************************************************/
void UartSendBit(unsigned char c)
{
SBUF = c;
while(!UartSendFlag);
UartSendFlag = 0;
}
#include "H/Function_Init.H"
#include "stdio.h"
/**************************************************************
说明:
1、Options for Target‘Target1’:BL51 Locate->Code Range:0x100,烧录选项请选择DISRST,复位脚作为普通IO使用;
2、改变TEST的定义,可以分别测试对应的功能;
3、注意:先在Function.H里面选择测试型号(SC92F7320无LCD/LED和PWM功能)
***************************************************************/
#define Test 5 //BTM:0 EXTI:1 Timer:2 LCD:3 PWM:4 Uart0:5 ADC:7 IAP:8
void main(void)
{
IO_Init();
WDTCON |= 0x10; //清看门狗
Uart0_Init();
while(1)
{
printf("Hello SC92F7321!\r\n");;
}
switch(Test)
{
case 0: BTM_Test();
break;
case 1: EXTI_Test();
break;
case 2: Timer_Test();
break;
case 3: LCD_Test();
break;
case 4: PWM_Test();
break;
case 5: //Uart0_Test();
break;
case 7: ADC_Test();
break;
case 8: IAP_Test(0x1fff,IapROM); //操作ROM,对地址0x1fff进行读写测试
// IAP_Test(0x7f,IapEPPROM); //操作EPPROM,对地址0x7f进行读写测试
break;
default:
break;
}
}
|