CC2530:人体红外传感器HC-SR501

#include <ioCC2530.h>

typedef unsigned char uchar;
typedef unsigned int  uint;

#define LED1 P1_0       //定义P1.0口为LED1控制端
#define LED2 P1_1       //定义P1.1口为LED2控制端
#define LED3 P1_4       //定义P1.4口为LED3控制端

#define DATA_PIN P0_4        //定义P0.4口为传感器的输入端

void DelayMS(uint msec)
{ 
    uint i,j;
    
    for (i=0; i<msec; i++)
        for (j=0; j<535; j++);
}

void InitUart(void)
{ 
    PERCFG = 0x00;           //外设控制寄存器 USART 0的IO位置:0为P0口位置1 
    P0SEL |= 0x0c;           //P0_2,P0_3用作串口(外设功能)
    P2DIR &= ~0XC0;          //P0优先作为UART0
    
    U0CSR |= 0x80;           //设置为UART方式
    U0GCR |= 11;				       
    U0BAUD |= 216;           //波特率为115200
    UTX0IF = 0;              //UART0 TX中断标志初始置位0
}

void UartSendString(char *Data, int len)
{
    uint i;
    
    for(i=0; i<len; i++)
    {
        U0DBUF = *Data++;
        while(UTX0IF == 0);
        UTX0IF = 0;
    }
}


void InitLed(void)
{
    P1DIR |= 0x13;           //P1.0、P1.1、P1.4定义为输出
    P0SEL &= ~0x10;
    P0DIR &= ~0x10;          //P0.4定义为输入口    
    P2INP |= 0x20;
    
    LED2 = 0;                //点亮D2 提示程序已运行
}

void main(void)
{      
    InitLed();                        //设置LED灯和P0.4相应的IO口
    InitUart();                       //调置串口相关寄存器

    CLKCONCMD &= ~0x40;               //设置系统时钟源为32MHZ晶振
    while(CLKCONSTA & 0x40);          //等待晶振稳定为32M
    CLKCONCMD &= ~0x47;               //设置系统主时钟频率为32MHZ   
        
    while(1)                          //无限循环
    {
        if(DATA_PIN == 1)
        {
            LED1 = 0;                 //有人时LED1亮
            UartSendString("ON ", 3); //串口发送数据,提示用户
        }    	
        else
        {
            LED1 = 1;                  //无人时LED1熄灭
            UartSendString("OFF ", 4); //串口发送数据,提示用户
        }
        
        DelayMS(1000);
    }   
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃橘子的橘猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值