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);

}

}

相关推荐
崇山峻岭之间5 小时前
单片机USB虚拟串口实验
单片机·嵌入式硬件
崇山峻岭之间5 小时前
单片机USB U盘实验
单片机·嵌入式硬件
点灯小铭5 小时前
基于单片机的锅炉压力与温度监测报警系统设计
数据库·单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
环境倒逼我学习5 小时前
无人机地面站之第13章 Mission Planner 入门与界面总览
单片机·嵌入式硬件·无人机
apcipot_rain5 小时前
计科八股20260606——二叉树、PCA、图深度学习、进程上下文、C语言预编译、文件读写、单精度浮点数
c语言·数据结构·算法·pca·图神经网络
你怎么知道我是队长5 小时前
CRC校验介绍
c语言
大阳1236 小时前
ARM.8(ADC,SPI)
单片机·嵌入式硬件·adc·spi
hoiii1876 小时前
基于 STM32 的标准遥控器架构与源码
stm32·嵌入式硬件·架构
少年、潜行6 小时前
STM32 ISP 升级体验
stm32·嵌入式硬件·isp升级·系统编程区域
189228048616 小时前
NV077固态MT29F16T08ESLCHL6-QAES:C
c语言·开发语言·性能优化