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

}

}

相关推荐
代码中介商19 小时前
C语言指针深度解析:从数组指针到函数指针
c语言·开发语言
NQBJT20 小时前
DMA —— 让 CPU “偷懒”的数据搬运工
stm32·单片机·dma·嵌入式
棋子入局20 小时前
C语言制作消消乐游戏(4)
c语言·开发语言·游戏
xiangw@GZ21 小时前
EMC原理:CS传导抗扰度测试总结
单片机·嵌入式硬件
三佛科技-1341638421221 小时前
PL3325CS/CD/CH/CE 与PL3325BE 之间的对比与联系(应用功率与典型应用电路)
单片机·嵌入式硬件·物联网·智能家居·pcb工艺
流年如夢21 小时前
自定义类型进阶:联合与枚举
java·c语言·开发语言·数据结构·数据库·c++·算法
nuoxin11421 小时前
CH6001FN/BW-富利威
网络·人工智能·嵌入式硬件·fpga开发·dsp开发
三品吉他手会点灯21 小时前
C语言学习笔记 - 9.C概述 - 常见问题答疑
c语言·笔记·学习
blevoice21 小时前
杰理智能蓝牙音响开发板AC696N:文件系统操作API精讲
单片机·物联网·杰理蓝牙芯片·ac6966b蓝牙音响方案·杰理智能音箱开发·杰理ac6965e蓝牙音频开发
『昊纸』℃21 小时前
C语言上机入门实例
c语言·程序设计·编程学习·vc++6.0·海伦公式