单片机学习5——外部中断程序

cpp 复制代码
#include<reg52.h>

unsigned char a;
sbit lcden = P3^4;

void main()
{
	lcden=0;
	EA=1;
	EX0=1;
	IT0=0;
 	a=0xF0;         //点亮4位小灯
	while(1)
	{
		P1=a;
	}
}

//中断服务程序
void ext0() interrupt 0	 // 0 表示的是外部中断源0
{
  a=0x0f;                // 中断处理完,再返回主程序
}

void ext0() interrupt 0: 这是一个外部中断源0的中断服务程序。中断源0对应的是单片机上的P3的2端口,也就是P3.2。

如果写的是1,则对应的是定时器/计数器0。

一旦产生中断,就是执行中断服务程序。

那如何开中断呢?

IT0=0:IT0是低电平触发方式选择位,表示的是低电平触发。P3.2变为低电平,就触发中断。

这句话很重要,这是触发的起点。

然后按照这个图,在红框中按从左到右的顺序执行,设置相应的值即可。

EA=1;

EX0=1;

另外,这些位都已经在头文件中声明好了。

LCDEN网络标号是连到:

代码中LCDEN赋值了一个低电平。那么CSDA就得到了一个低电平,也就是单片机P3.2得到了一个低电平,那么就触发了中断服务程序。

中断服务程序将a的值改成了0x0F,那么LED的灯的点亮就发生了变化。

LCDEN网络标号接到的是单片机上的P3.4上,所以需要进行下声明:

sbit lcden=P3^4;

更改下晶振频率:

中断响应的过程演示。

相关推荐
Msshu1232 小时前
PD快充诱骗芯片 XSP15 支持获取快充电压可与外部MCU共用D+D-网络与电脑传输数据
单片机·嵌入式硬件
brave and determined2 小时前
MCU学习Day24——STM32G030多路ADC DMA采集深度解析:完全可配置序列器与不完全可配置序列器的陷阱与抉择
stm32·单片机·嵌入式硬件·dma·adc·hal·多通道采集
d111111111d2 小时前
通过操作地址,来进行STM32的写入GPIO端口值
stm32·单片机·嵌入式硬件
小刘爱玩单片机2 小时前
【stm32简单外设篇】- 土壤湿度传感器
c语言·stm32·单片机·嵌入式硬件
晚秋大魔王3 小时前
基于python的jlink单片机自动化批量烧录工具
前端·python·单片机
某林21211 小时前
ROS2与STM32通信详解
stm32·单片机·嵌入式硬件
EVERSPIN13 小时前
MCU微控制器,N32H47x高性能MCU机器人关节控制方案
单片机·嵌入式硬件·机器人·mcu微控制器
云山工作室14 小时前
基于STM32单片机的正激式开关电源设计(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·课程设计·毕设
芯希望14 小时前
芯伯乐700mA线性稳压器XBLW L78M05H/L78M12H:稳定可靠,简化电源设计
单片机·嵌入式硬件
lingzhilab15 小时前
零知IDE——STM32F407VET6驱动SHT40温湿度传感器与ST7789实现智能环境监测系统
stm32·单片机·嵌入式硬件