物联网技术社区||STC15单片机应用开发之LED灯的外部中断控制
发布者:
布时间:2020-09-16 15:50:56
点击量:
在Keil C51的环境中对STC15W4K56S4单片机GPIO口配置,通过外部中断的方式,实现LED灯的亮灭控制,具体要求如下,初始状态LED灯熄灭,当外部中断被触发第一次时,LED灯点亮,外部中断被触发第二次时,LED灯熄灭,外部中断被触发第三次时,LED灯点亮,重复上述状态。
知识引入
1.单片机的GPIO口
STC15W4K56S4单片机最多有62个GPIO口,GPIO口的四种工作模式中,此处将IO口的工作模式通过PnM1和PnM0(n=0,1,2,3…7)设置成强推挽输出,用于控制LED的亮灭。每个IO口的驱动能力均可达20mA,但40引脚及以上的单片机整个芯片最大工作电流不要超过120mA。
2.单片机的中断系统
(1)中断
所谓中断是指程序执行过程中,允许外部或内部事件通过硬件打断程序的执行,使其转向为处理外部或内部事件的中断服务程序中去,完成中断服务程序后,CPU返回继续执行被打断的程序,一个完整的中断过程包括四个步骤:中断请求、中断响应、中断服务与中断返回。
(2)中断源
引起CPU中断的原因或根源,称之为中断源。中断源向CPU提出的处理请求,称为中断请求或中断申请。
(3)中断优先级
当有几个中断源同时申请中断时,就存在CPU先响应哪个中断请求的问题。为此,CPU要对各中断源确定一个优先等级,称为中断优先级。中断优先级高的中断请求优先响应。
(4)中断嵌套
中断优先级高的中断请求可以打断CPU正在处理的中断优先级低的中断服务程序,待完成了中断优先级高的中断服务程序之后,再继续执行被打断的中断优先级低的中断服务程序,这就是中断嵌套。如图3-1(b)所示。
3.寄存器的配置
GPIO口可设置为四种模式:准双向口/弱上拉,强推挽/强上拉,仅为输入/高阻,开漏,STC15W4K56S4单片机每个GPIO口均有外部中断输入功能,例如GPIO的按键连接。
(1)P11寄存器的配置如表3-1所示:
表3-1 P11寄存器的配置
P1口设定
(P1口地址:90H)
P1M1[7:0]
寄存器P1M1地址为91H |
P1M0[7:0]
寄存器P1M1地址为92H |
I/0口模式
(P1.x如做A/D使用,需先将其设置成开漏或高阻输入) |
0 |
0 |
准双向口(传统8051 I/O模式,弱上拉),
灌电流可达20mA,拉电流为270uA,
由于制造误差,实际为270uA~150uA |
0 |
1 |
推挽输出(强上拉输出,可达20mA,要加限流电阻) |
1 |
0 |
高阻输入(电流既不能流入也不能流出) |
1 |
1 |
开漏(Open Drain),内部上拉电阻断开。
开漏模式既可读外部模式也可对外输出(高电平或低电平)
如要正确读外部状态或需要对外输出高电平,需外加上拉电阻,否则读不到外部状态,也对外输不出高电压。 |
P1.7为开漏,P1.6为强推挽输出,P1.5为高阻输入,P1.4/P1.3/P1.2/P1.1/P1.0为准双向口/弱上拉。
按照表格寄存器的内容,对P1口配置成推挽输出P1M1寄存器第1位设置为0,寄存器P1M0第1位设置为1。所以配置如下:
P1M1 &= ~0x02; //设置bit1为0
P1M0 |= 0x02; //设置bit1为1
(2)中断寄存器的配置
STC15W4K56S4单片机有21个中断源,他们分别是:外部中断0(INT0)、定时器0中断、外部中断1(INT1)、定时器1中断、串口1中断、A/D转换中断、低压检测(LVD)中断、CCP/PWM/PCA中断、串口2中断、SPI中断、外部中断2(INT2)、外部中断3(INT3)、定时器2中断、外部中断4(INT4)、串口3中断、串口4中断、定时器3中断、定时器4中断、比较器中断、PWM中断及PWM异常检测中断。除外部中断2(INT2)、外部中断3(INT3)、定时器2中断、串口3中断、串口4中断、定时器3中断、定时器4中断及比较器中断笃定是最低优先级中断外,其他中断均有两个中断优先级。
本任务中按键作为外部中断源INT0输入时,需要配置的寄存器如表3-2所示。
表3-2 外部中断0寄存器的配置
符号 |
描述 |
地址 |
位地址及其符号
MSB LSB |
复位值 |
TCON |
中断请求标志 |
88H |
TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
0000 0000B |
IE |
中断允许控制 |
A8H |
EA | ELVD | EADC | ES | ET1 | EX1 | ET0 | EX0 |
0000 0000B |
IP |
中断优先级控制 |
B8H |
PPCA | PLVD | PADC | PS | PT1 | PX1 | PT0 | PX0 |
0000 0000B |
本任务使用外部中断0位于单片机芯片P3.2脚,实现对LED灯的控制。程序中需要对TCON寄存器中IT0、IE寄存器中总中断控制位EA和外部中断0(INT0)中断允许位EX0进行设置,具体设置如下。
IT0=1 或 TCON |=0x01; //外部中断0为下降沿触发的配置为
EX0=1; //允许外部中断0中断
EA=1; //使能总中断
IP寄存器中PX0为外部中断0优先级控制位,本任务只用到一个中断,可不进行优先级设置。
4.关键代码分析
#include
#define uchar unsigned char
#define uint unsigned int
sbit LED=P2^2;
//主程序
void main()
{
P2M1 &= ~(3<<2); //设置bit2、bit3为0
P2M0 |= (3<<2); //设置bit2、bit3为1
LED=1;
EA=1;//总中断打开
EX0=1;//外部中断0打开
IT0=1;//设置外部中断触发方式为下降沿触发
while(1);
}
//INT0 中断服务函数
void EX_INT0(void) interrupt 0
{
LED=~LED; //控制 LED 亮灭
}
|
任务实现
1、 将无线模块插到节点底板上,注意天线朝左。
2、 为节点底板通电。
3、 使用Keil软件打开随书资源中”源代码\项目三\任务1\WZ01_CZ_A_V1.0.uvproj”,工程目录如图所示。
4、 在主程序main.c中编辑前面关键代码分析中的源码,完成后保存。
5、 根据项目二任务二中的操作,进行编译选项的设置。
6、 点击编译按钮,成功编译后,在工程目录下output文件夹中生成了”LED灯外部中断控制.hex”可执行文件。
7、 打开STC-ISP软件,将USB-TTL下载器插上电脑(需要安装驱动),依据本教材项目二中任务三中的操作,选择下载器端口号和刚刚生成的HEX文件。
8、 查看运行结果
程序下载完毕时,当单片机P3.2脚连接的外设(如示波器等)发生一次下降沿时,LED灯点亮;当单片机P3.2脚连接的外设发生第二次下降沿时,LED灯熄灭,依此循环。
本任务主要通过编程实现节点板按键产生外部中断来控制LED灯的功能,讲述了中断的基本知识及STC15W4K56S4单片机中断调用方法,在学习过程中重点是掌握GPIO口的配置及中断寄存器的设置,学习中断在程序中的书写方式。注意中断优先级中,低优先级中断可被高优先级中断所中断,反之不能,且任何一种中断(不管是高级还是低级),一旦得到响应,不能被它的同级中断所中断。
唯众物联网工程应用实训装置带你快速掌握物联网关键技术
一、产品名称:物联网工程应用实训装置
二、产品型号和技术规格
1. 产品型号:WZ-IOT-ATP
2. 外型尺寸:
桌面式操作台1个操作台底座1个
3. 电压/功率:220V
4. 配套设备
实训台:
温湿度传感器1个
人体红外监测器1个
高频RFID阅读器1个
光照强度检测器1个
可燃气体监测器1个
RGB三色灯执行器1个
LED显示屏2个
智能语音播放设备1个
继电器1个
物联网教学实训主要用于对物联网核心课程的知识点学习,能够服务于相关课程的实验和实训需求。
核心课程主要针对学科基础技术的培养,掌握物联网概论,传感器和RFID 等感知设备认知和开发,ZigBee/Wi-Fi/蓝牙等无线网络的配置、维护和开发,物联网互联接入及存储,物联网应用层软件开发,物联网产品整合等基本知识。
核心课程采用全模块化的实验箱教学产品进行实验,具备优良的教学实验特性:全模块化的设计、开放式的硬件接口、开源的实验代码、完整的教学资源、贴心的售后服务。
基于ARM Cortex-M4核心的通信网关,支持无线节点模块的双向连接及组网,与配套“可视化编辑器”和“可视化控制器”进行配置和控制。物联网关可以管理不同协议的无线节点模块,并能将多个无线节点模块视作不同设备,将无线节点模块的数据转换为TCP网络通信进行传输,网关同无线节点模块可以互通互联,轻松构建物联网络,共同构成物联应用开发平台。通过本物联网平台,可以迅速降低物联网应用的开发成本和开发时间,开发者即便不会编程,也可以在一两天之内,就迅速使用本平台开发搭建出自己的物联网应用。
通过电脑PC端可直接以“可见即可得”的方式在此工具上生成不同的设备操作界面,支持指示灯、按键、图片集合、变量视窗、图文链接等五种可视化控件。所有控件的动作都可以直接反应到实际的物联设备(即无线节点模块)上。界面生成后,可以直接导入App使用,而不需要重新编译或安装App。
通过物联网关、可视化控制器、可视化界面生成器编辑器、万纳模组、物联网传感器/执行器以及配套物联网连件连接件,师生不仅可以完成出基于物联网、远程访问、设备联动等功能的物联网实训项目,还可以迅速开发物联网商业产品\项目,如空气监测仪、电气设备在线监测器等等,并随时实现不同设备间的联动,而这些开发过程,基于本系统的可视化开发工具,可以做到零编程实现物联网应用系统。
支持家庭常用的各种无线协议(红外、射频),兼容市面绝大多数品牌的空调、电视机、灯光、安防、窗帘等等家电设备,因此可以直接当做一套完备的智能家居系统进行使用,并集成了摄像头功能,可以直接在App中使用摄像头。
平台所有设备采用模块化、集散化、工业化的设计模式,每个模块都为独立工作单元;模块均接近实际应用系统,能够容纳2-3个学生同时实训,可完成工程项目应用开发系统中硬件设备的安装、布线与调试,完成设备间的无线组网,既具有展示型又具有实操性。能够组建具有行业特色的物联网智能家居实训项目,确保学生可利用设备搭建真实工程项目。
上一篇:物联网技术区||STC-ISP软件程序的下载与烧录
下一篇:物联网技术区||STC15单片机应用开发之LED灯闪烁效果实现