#include
#define LED1 P1_5
#define LED2 P1_0
#define LED3 P1_4
#define LED4 P1_3
#define uchar unsigned char
#define uint unsigned int
uchar c;
/********************************
*函数名称:Initial_Light
*函数功能:初始化LED端口
*入口函数:无
*出口函数:无
*返回值: 无
/
void Initial_Light(void)
{
P1SEL &= ~0X39;
P1DIR |= 0X39;
LED1= LED2= LED3= LED4=0;
}
/
*函数名称:Init_UART
*函数功能:初始化串口
*入口函数:无
*出口函数:无
*返回值: 无
************************/
void Init_UART(void)
{
CLKCONCMD &= 0X80;//频率为32MHZ
U0CSR |= 0X80;//设置为UART模式
P0SEL |= 0X0C;
U0GCR |= 10;
U0BAUD |= 216;
URX0IF = 0;//中断标志,打开接收器
U0CSR |= 0X40;
URX0IE = 1;//使能URX0中断
EA = 1;
//IEN0|=0X84;
}
/中断服务子程序/
#pragma vector = URX0_VECTOR
__interrupt void URX0_INT(void)
{
URX0IF = 0;//使URX0中断标志赋值0,因为已经进入中断函数,故赋值0
c = U0DBUF;
switch( c )
{
case ‘1’: LED1 = 1;
LED2 =LED3 =LED4 =0;
break;
case ‘2’: LED2 = 1;
LED1 =LED3 =LED4 =0;
break;
case ‘3’: LED3 = 1;
LED2 =LED1 =LED4 =0;
break;
case ‘4’: LED4 = 1;
LED2 =LED3 =LED1 =0;
break;
case ‘0’:
LED4 = LED2 =LED3 =LED1 =0;
break;
//default:LED1 =LED2 =LED3 =LED4 = 0;
}
}
/
下面这种方法也可以/
/if(c == ‘0’)
{
LED1 =LED2 =LED3 =LED4 = 0;
}
if(c == ‘1’)
{
LED1 = 1;
LED2 =LED3 =LED4 =0;
}
if(c == ‘2’)
{
LED2 = 1;
LED1 =LED3 =LED4 =0;
}
if(c == ‘3’)
{
LED3 = 1;
LED2 =LED1 =LED4 =0;
}
if(c == ‘4’)
{
LED4 = 1;
LED2 =LED3 =LED1 =0;
}
}/
/********************************
*函数名称:main
*函数功能:调用自定义函数
*入口函数:main
*出口函数:无
*返回值: 无
********************************/
main()
{
Initial_Light();
Init_UART();
while(1)
{
}
}
#include
#define LED1 P1_5
#define LED2 P1_0
#define LED3 P1_4
#define LED4 P1_3
#define uchar unsigned char
#define uint unsigned int
uchar c;
/********************************
*函数名称:Initial_Light
*函数功能:初始化LED端口
*入口函数:无
*出口函数:无
*返回值: 无
/
void Initial_Light(void)
{
P1SEL &= ~0X39;
P1DIR |= 0X39;
LED1= LED2= LED3= LED4=0;
}
/
*函数名称:Init_UART
*函数功能:初始化串口
*入口函数:无
*出口函数:无
*返回值: 无
************************/
void Init_UART(void)
{
CLKCONCMD &= 0X80;//频率为32MHZ
U0CSR |= 0X80;//设置为UART模式
P0SEL |= 0X0C;
U0GCR |= 10;
U0BAUD |= 216;
URX0IF = 0;//中断标志,打开接收器
U0CSR |= 0X40;
URX0IE = 1;//使能URX0中断
EA = 1;
//IEN0|=0X84;
}
/中断服务子程序/
#pragma vector = URX0_VECTOR
__interrupt void URX0_INT(void)
{
URX0IF = 0;//使URX0中断标志赋值0,因为已经进入中断函数,故赋值0
c = U0DBUF;
switch( c )
{
case ‘1’: LED1 = 1;
LED2 =LED3 =LED4 =0;
break;
case ‘2’: LED2 = 1;
LED1 =LED3 =LED4 =0;
break;
case ‘3’: LED3 = 1;
LED2 =LED1 =LED4 =0;
break;
case ‘4’: LED4 = 1;
LED2 =LED3 =LED1 =0;
break;
case ‘0’:
LED4 = LED2 =LED3 =LED1 =0;
break;
//default:LED1 =LED2 =LED3 =LED4 = 0;
}
}
/下面这种方法也可以/
/if(c == ‘0’)
{
LED1 =LED2 =LED3 =LED4 = 0;
}
if(c == ‘1’)
{
LED1 = 1;
LED2 =LED3 =LED4 =0;
}
if(c == ‘2’)
{
LED2 = 1;
LED1 =LED3 =LED4 =0;
}
if(c == ‘3’)
{
LED3 = 1;
LED2 =LED1 =LED4 =0;
}
if(c == ‘4’)
{
LED4 = 1;
LED2 =LED3 =LED1 =0;
}
}/
/********************************
*函数名称:main
*函数功能:调用自定义函数
*入口函数:main
*出口函数:无
*返回值: 无
********************************/
main()
{
Initial_Light();
Init_UART();
while(1)
{
}
}
举报