单片机补充案例--stc89c52的P4口使用
【摘要】 说明:头文件为8052.h默认情况下不能使用P4口,需要添加如下代码,如使用P4_4:
__sfr __at (0xE8) P4;__sbit __at (0xEC) P4_4;
如果用keil:
sfr P4 = 0xe8;sbit P44 = P4^4;
P4口接蜂鸣器
当然也可以使用固件库。
具体案例参考:https:...
说明:头文件为8052.h默认情况下不能使用P4口,需要添加如下代码,如使用P4_4:
-
__sfr __at (0xE8) P4;
-
__sbit __at (0xEC) P4_4;
如果用keil:
-
sfr P4 = 0xe8;
-
sbit P44 = P4^4;
当然也可以使用固件库。
具体案例参考:https://zhangrelay.blog.csdn.net/article/details/109194115
入侵检测系统未使用固件库,参考程序如下:
-
#include <8052.h>
-
__sfr __at (0xE8) P4;
-
__sbit __at (0xEC) P4_4;
-
-
#define LED P0 //LED闪烁警示
-
#define LSA P1_5 //P0控制=0
-
#define LSB P1_6 //P0控制=0
-
#define LSC P1_7 //P0控制=0
-
#define ALARM P4_4 //声音警示
-
#define HUMAN P3_2 //模拟人体检测信号
-
#define KEY01 P3_4 //模拟密码组合1
-
#define KEY02 P3_5 //模拟密码组合2
-
unsigned int cnt = 0; //定义一个计数变量,记录 T0 溢出次数
-
unsigned char alarmlevel=0; //警报等级
-
void sleep(unsigned int t);
-
void SysInit();
-
void Timer0() __interrupt 1;
-
/************************************************************/
-
void main () //主函数
-
{
-
SysInit();
-
while(1)
-
{
-
if(alarmlevel==1) //LED警示
-
{
-
LED=0xff;
-
sleep(10000);
-
LED=0x00;
-
sleep(10000);
-
}
-
if(alarmlevel==2) //LED+Sound警示
-
{
-
LED=0xff;
-
ALARM=1;
-
sleep(2000);
-
LED=0x00;
-
ALARM=0;
-
sleep(2000);
-
}
-
}
-
}
-
/************************************************************/
-
void sleep(unsigned int t)
-
{
-
while(t--);
-
}
-
void SysInit()
-
{
-
LSA = 0; //本开发板的P0发光二极管片选地址
-
LSB = 0;
-
LSC = 0;
-
LED = 0xff;; //初始化LED
-
TMOD = 0x01; //设置定时器T0工作方式1
-
TL0 = 47104%256; //计数器初值
-
TH0 = 47104/256;
-
TR0 = 1; //启动定时器
-
ET0 = 1; //开中断
-
EA = 1;
-
}
-
void Timer0() __interrupt 1 //定时器 T0 中断响应
-
{
-
TL0 = 47104%256; //计数器初值
-
TH0 = 47104/256;
-
if(HUMAN==0)
-
{
-
cnt++;
-
if(alarmlevel==0)
-
alarmlevel=1;
-
}
-
if (cnt > 249) //判断 T0 溢出是否达到 250 次,等于5秒
-
{
-
if(alarmlevel==1)
-
alarmlevel=2;
-
}
-
if(KEY01==0&&KEY02==0) //密码合适清全部状态
-
{
-
alarmlevel=0;
-
LED=0xff;
-
ALARM=1;
-
cnt=0;
-
}
-
}
-
文章来源: zhangrelay.blog.csdn.net,作者:zhangrelay,版权归原作者所有,如需转载,请联系作者。
原文链接:zhangrelay.blog.csdn.net/article/details/109667259
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)