HC-SR501人体感应+串口提示
uart.c
/**********************************************/
/* 平台:Keil U4 + STC12C5A60S */
/* 名称:串口通信 */
/* 编写:WCT */
/* 日期:2019年1月21日18:43:49 */
/* QQ: 497950600 */
/* 晶振:11.0592MHZ */
/* 变更记录: 无 */
/**********************************************/
#include <reg52.h>
#define F_f 11059200UL //晶振频率11.0692MHZ
#define Baud_rate 9600UL //波特率9600
sbit OUT = P2^7;
sfr AUXR = 0x8E; //定义特殊功能寄存器AUXR
sfr BRT = 0x9C; //定义独立波特率发生寄存器BRT
void Uart_send_str(char *str)
{
while( *str )
{
SBUF = *str;
while( !TI ); //等待发送完成
TI = 0; //清除发送中断请求
str ++;
}
}
void Uart1Init()
{
PCON &= 0x7F; // 波特率不加倍
SCON = 0x50; // 设置串行通信工作方式1,并允许串行接受
AUXR &= 0xFB; // 独立波特率发生器时钟12T
BRT = 256 - F_f / (12 * Baud_rate * 32); //独立波特率发生器装载初值
AUXR |= 0x11; // 允许独立波特率发生器作为串口波特率发生器,并开启
EA = 1; // 开启总中断
ES = 1; // 开启串行中断
}
void Uart1Routine() interrupt 4
{
unsigned char uart_sbuf;
if(RI) //接受完成RI = 1;
{
uart_sbuf = SBUF;
if(uart_sbuf == 0x11 )
{
if( OUT == 1 )
{
Uart_send_str("有熊出没!\n");
}
else
{
Uart_send_str("没有感应到熊出没!\n");
}
}
RI = 0; //清除接受中断请求
}
}
main.c
/****************************************************/
/* 平台:Keil U4 + STC12C5A60S2 + HC-SR501 */
/* 名称:HC-SR501人体感应+串口提示 */
/* 编写:WCT */
/* 日期:2019年1月22日13:49:22 */
/* QQ: 497950600 */
/* 晶振:11.0592 */
/* 变更记录:无 */
/****************************************************/
#include <reg52.h>
//函数声明
extern void Uart_send_str(char *str);
extern void Uart1Init();
void main()
{
Uart1Init();
while(1);
}