宏定义
#include<iocc2530.h> #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) { } }