#include<iocc2530.h>
char buf[256];
int i=0;
int flag = 0;
int count = 0;
void delay(int time)
{
for(int i=0;i<1000;i++)
for(int j=0;j<time;j++);
}
unsigned int get_swsensor()
{
P0DIR |= 0X02;
return P0_1;
}
void initLED()
{
P1DIR |= 0X1b;
P1=0;
}
//初始化串口
void initUART0()
{
PERCFG=0X00; //外设控制寄存器 这里使用串口0位置1
P0SEL=0X0C; //0_2 0_3设置特殊端口
U0CSR |=0X80;//0100 0000 0x80 串口通信的语言这里使用USART
U0BAUD =216 ;
U0GCR=10 ; //波特率
U0UCR |=0x80; //流控制禁止
U0CSR |=0x40; //允许接受数据
UTX0IF = 0; //接受标志位
URX0IF = 0; //发送标志位
URX0IE=1; //使能中断
EA=1; //中断总开关
}
//串口发送函数
void UART0SendString(char *str)
{
while(1)
{
if(*str=='\0')
break;
U0DBUF=*str++;
while(!UTX0IF);
UTX0IF = 0;
}
}
void led()
{
P1=0x02;
delay(200);
P1=0x01;
delay(200);
P1=0x10;
delay(200);
P1=0x08;
delay(200);
P1=0;
delay(200);
}
void initT1()
{
CLKCONCMD &=~0x40;
while(CLKCONSTA & 0x40);
CLKCONCMD &= ~0x47;
T1CTL |= 0X05;
IEN1 |= 0X02;
EA = 1;
}
#pragma vector = T1_VECTOR
__interrupt void T1_f()
{
EA = 0;
count++;
if(count>=30)
{
flag = get_swsensor();
count=0;
//P1_0 = !P1_0;
if(flag == 1)
{
UART0SendString("无人\r\n");
}
else
{
UART0SendString("有人\r\n");
led();
}
}
T1IF=0;
EA = 1;
}
void main()
{
initUART0();
initT1();
initLED();
while(1);
}