IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 51单片机中断例1 -> 正文阅读

[嵌入式]51单片机中断例1

写中断之前 我们先要了解 中断在哪
常用的有外部中断 计时器中断 串行口中断

这里我们用外部中断

1、(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。

2、(P3.3)可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。

3、TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。

4、TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。

5、RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。

EA: 总中断允许。 EA=0;CPU屏蔽所有中断的请求 EA=1;开放所有中断。
ES:串行口中断允许位。ES=0; 禁止串行中断。ES=1; 允许串口中断。
ET0、ET1: 定时器/计数器0 和 定时器/计数器 1 中断允许位 =0时 禁止相应的定时器中断。 =1 允许相应的定时器中断。
EX0、EX1: 外部中断0 和 外部中断 1 中断允许位。=0时 禁止相应的外部中断。 =1时 允许相应的外部中断。

(1:代表允许中断 0 :代表禁止中断)

在这里插入图片描述
常用原件图示和名称

中断程序

void check(){
		int i;
		beep=0;
		P0=num[0];
		P2=~(0x02);
		P1=~(0x01);
		for(i=0;i<=10;i++){
			dalay(1000);
			
		}
		beep=1;
}
void int0rupt() interrupt 0 //P3^2==0
{
	beep=1; //关闭蜂鸣器
	while(P3_2!=1);
	check();
	
}

较上一个红绿灯 我这个多了一个中断程序

这个·中断是 在按下按钮之后 进入中断 然后 进入10s的东西通行 南北禁止通行

倒计时秒表设为0 同时蜂鸣器响起

这个中断可以用在 一路放绿灯

整个proteus图片如下

在这里插入图片描述

蜂鸣器响应电压应设置为2v 否则没有响应

演示视频

主要功能跟我上一个红绿灯差不多 只多了一个中断
七段码实现红绿灯

主程序

#include<reg51.h>
unsigned char num[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

sbit P3_2=P3^2;
sbit beep=P3^3;	
void dalay(unsigned int n){
	int i=0,j=0;
	for(i=0;i<n;i++)
			for(j=0;j<120;j++);
}


void solve(){
	int i=0;
	for(i=0;i<8;i++){
			P0=~(0x01<<i);
			dalay(1000);
	}
}

void leftgreen(){
	int i=0;
	P2=~(0x01);
	P1=~(0x04);
	
	for(i=0;i<10;i++){
			P0=num[9-i];
			dalay(1000);
	}
}

void leftred(){
	int i=0;
		P2=~(0x02);
		P1=~(0x01);
		
		for(i=0;i<10;i++){
				P0=num[9-i];
				dalay(1000);
		}
		
}
void yellow(){
	
	int i=0;
	for(i=0;i<4;i++){
			P0=num[3-i];
			P2=~(0x04);
			P1=~(0x02);
			dalay(500);
			P2=0xFF;
			P1=0xFF;
			dalay(500);
	}
}
void check(){
		int i;
		beep=0;
		P0=num[0];
		P2=~(0x02);
		P1=~(0x01);
		for(i=0;i<=10;i++){
			dalay(1000);
			
		}
		beep=1;
}
void int0rupt() interrupt 0 //P3^2==0
{
	beep=1;
	while(P3_2!=1);
	check();
	
}
void main(){
		EA=1;//
  	EX0=1;//
		IT0=0;//
		while(1){	
			P0=num[0];
			dalay(1000);
			leftgreen();
			P2=0xFF;P1=0xFF;
			P0=num[0];
			dalay(1000);
			yellow();
			P0=num[0];
			P2=0xFF;P1=0xFF;
			dalay(1000);
			leftred();
			P0=num[0];
			P2=0xFF;P1=0xFF;
			yellow();
			P0=num[0];
			P2=0xFF;P1=0xFF;

		}
}
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 23:22:24  更:2022-04-06 23:23:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:32:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码