说明:头文件为8052.h默认情况下不能使用P4口,需要添加如下代码,如使用P4_4:
复制代码
1
2__sfr __at (0xE8) P4; __sbit __at (0xEC) P4_4;
如果用keil:
复制代码
1
2sfr P4 = 0xe8; sbit P44 = P4^4;

当然也可以使用固件库。
具体案例参考:https://zhangrelay.blog.csdn.net/article/details/109194115
入侵检测系统未使用固件库,参考程序如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84#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内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复