51单片机之外部中断

51单片机之外部中断

描述:利用KEIL5编程,使AT89C52单片机的外部中断触发控制RGB灯显示。

硬件:

电路仿真图(未运行)

电路仿真(运行)

程序:

设置好外部中断数据,建议使用下降沿模式,低电平模式机械按键按下有跳动,需要通过消抖。

#include <REGX52.H>

sbit LED_R = P2^0; //ºì

sbit LED_G = P2^1; //ÂÌ

sbit LED_B = P2^2; //˦

unsigned char LED_Mode = 0;

void LED_RGB(unsigned char i)

{

switch(i)//¿ØÖÆLEDÏÔʾÑÕÉ<<

{

case 0: LED_R = 1; LED_G = 1; LED_B = 1; break; //black

case 1: LED_R = 0; LED_G = 1; LED_B = 1; break; //red

case 2: LED_R = 1; LED_G = 0; LED_B = 1; break; //green

case 3: LED_R = 1; LED_G = 1; LED_B = 0; break; //blue

case 4: LED_R = 0; LED_G = 0; LED_B = 1; break; //yellow

case 5: LED_R = 0; LED_G = 1; LED_B = 0; break; //violet

case 6: LED_R = 1; LED_G = 0; LED_B = 0; break; //cyan

case 7: LED_R = 0; LED_G = 0; LED_B = 0; break; //white

default: break;

}

}

void INT0_Isr(void) interrupt 0 //ÓÅÏȼ¶0 ×î¸ß

{

++LED_Mode;

LED_Mode %= 8;

}

void Ext_Init(void) //³õʼ>>¯ÍⲿÖжÏ0

{

IT0 = 1; //INT0(P3.2)ϽµÑØÄ£Ê½

EX0 = 1; //¿ªÆôÍⲿÖжÏ0

EA = 1; //¿ªÆô×ÜÖжÏ

}

void main()

{

Ext_Init();

while(1)

{

LED_RGB(LED_Mode);

}

}

相关推荐
【 STM32开发 】18 分钟前
【CubeMX+STM32】SD卡 文件系统读写 FatFs+SDIO+DMA (F103版本)
stm32·单片机·嵌入式硬件·1024程序员节
动词ing1 小时前
【51单片机】独立按键控制LED灯亮灭
单片机·嵌入式硬件·51单片机
二十七日秋1 小时前
算法刷题笔记「Day 1|四道 OJ 入门题里的深坑」
c语言·汇编·数据结构·c++·笔记·python·算法
Industio_触觉智能1 小时前
瑞芯微工业ADC采集实战-上|AD7616&RK3506 FlexBus高速并行采集落地
嵌入式硬件·硬件架构·硬件工程·adc·瑞芯微·rk3506·flexbus
女神下凡1 小时前
芯参谋(79):嵌入式学习进阶_(硬件与软件)深入实践指南
arm开发·单片机·嵌入式硬件·学习·fpga开发·设计规范
Zhao136824553911 小时前
AT7456E 中科微电子 OSD图形叠加芯片/发生器芯片 无人机显示开发
嵌入式硬件
‎ദ്ദിᵔ.˛.ᵔ₎1 小时前
STM32 USART 串口
stm32·单片机·嵌入式硬件
abc light2 小时前
ARM 裸机开发(1)——ARM 体系结构
c语言·arm开发
smartpi_ai2 小时前
高端智能沙发如何接入大模型语音:JL-17T 离在线语音模块方案实录
人工智能·单片机·语音识别
Navigator_Z2 小时前
LeetCode //C - 1309. Decrypt String from Alphabet to Integer Mapping
c语言·算法·leetcode