概述
说明:头文件为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;
}
}
最后
以上就是完美汉堡为你收集整理的单片机补充案例--stc89c52的P4口使用的全部内容,希望文章能够帮你解决单片机补充案例--stc89c52的P4口使用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复