单片机中断

news2024/11/18 19:44:16

89C51/52的中断系统有5个中断源 ,2个优先级,可实现二级中断嵌套 。

( P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。
(P3.3)可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。
 TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。
 TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。
 RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。

中断的优先级别及中断函数编号

 TMOD寄存器 (定时/计时)

中断源符号及中断号

 中断响应条件

  • 中断源有中断请求;
  •  此中断源的中断允许位为1;
  •  CPU开中断(即EA=1)。

 

 #include <STC89C5xRC.H>
 
 typedef unsigned int u16;	
 typedef unsigned char u8;
 
 sbit LED1 = P2^0;
 sbit KEY3 = P3^2;
 
 
 void delay_10us(u16 ten_us)
 {
	 while(ten_us--);	
 }
 
 
 //外部中断0使能函数
 void exti0_init()
 {
	 INT0 = 1;
	 EX0 = 1;
	 EA = 1;
 }
 
 
 //中断0服务程序
 void exti0() interrupt 0
 {
	 delay_10us(100);
	 if(KEY3==0)
		 LED1 = ~LED1;
 }
 
 
 void main()
 {
	 exti0_init();
	 
 }
 

//写入单片机后,按KEY3存在“触摸不灵”的感觉,时而有效时而无效。

K3开关电机 K4电机停5s,转5s   K4只需按一次,K3产生中断

 #include <STC89C5xRC.H>
 
 typedef unsigned int u16;	
 typedef unsigned char u8;
 
 sbit LED1 = P2^0;
 sbit LED2 = P2^1;
 sbit KEY3 = P3^2;
 sbit KEY4 = P3^3;
 sbit DC_Motor = P1^3;
 
void delay_ms(u16 ms)
{
	u16 i,j;
	for(i=ms;i>0;i--)
			for(j=110;j>0;j--);
}
 
 
 void delay_10us(u16 ten_us)
 {
	 while(ten_us--);	
 }
 
 
 //外部中断0使能函数
 void exti0_init()
 {
	 INT0 = 1;
	 EX0 = 1;
	 EA = 1;
 }
 
 //外部中断2使能函数
  void exti2_init()
 {
	 INT1 = 1;
	 EX1 = 1;
	 EA = 1;
 }
 
 //外部中断0服务程序
 void exti0() interrupt 0
 {
	   if(DC_Motor==1)
		 {
			 DC_Motor=0;
			 EX1 = 0;
		 }
		 else
		 {
			 DC_Motor=1;
			 EX1 = 1;
		 }
 }
 
  //外部中断2服务程序
 void exti2() interrupt 2
 {
		 DC_Motor = 0;
		 delay_ms(5000);
		 DC_Motor = 1;
		 delay_ms(5000);
		 KEY4 = 0;
 }
 
 
 
 void main()
 {
	 exti0_init();
	 exti2_init();
	 while(1);
 }
 

 //使用外部中断0、1与定时器0实现:key3(外部中断0)开/关机,key4(外部中断1)使能定时器0;实现电机停2s,转2s

电机接在J47的1、5接口

 

 #include <STC89C5xRC.H>
 
 typedef unsigned int u16;	
 typedef unsigned char u8;
 
 sbit LED1 = P2^0;
 sbit LED2 = P2^1;
 sbit KEY3 = P3^2;
 sbit KEY4 = P3^3;
 sbit DC_Motor = P1^3;
 
void delay_ms(u16 ms)
{
	u16 i,j;
	for(i=ms;i>0;i--)
			for(j=110;j>0;j--);
}
 
 
 void delay_10us(u16 ten_us)
 {
	 while(ten_us--);	
 }
 
 //
 void time0_init(void)
{
	TMOD|=0X01;//选择为定时器0模式,工作方式1
	TH0=0XFC;	//给定时器赋初值,定时1ms
	TL0=0X18;	
	ET0=1;//打开定时器0中断允许
	EA=1;//打开总中断
	TR0=1;//打开定时器		
}
 
 //
void time0() interrupt 1 //定时器0中断函数
{
	static u16 i;//定义静态变量i
	TH0=0XFC;	//给定时器赋初值,定时1ms
	TL0=0X18;
	i++;
	if(i==2000)
	{
		i=0;
		DC_Motor = ~DC_Motor;	
	}						
}
 
 
 //外部中断0使能函数
 void exti0_init()
 {
	 INT0 = 1;
	 EX0 = 1;
	 EA = 1;
 }
 
 //外部中断2使能函数
  void exti2_init()
 {
	 INT1 = 1;
	 EX1 = 1;
	 EA = 1;
 }
 
 //外部中断0服务程序
 void exti0() interrupt 0
 {
	   if(DC_Motor==1)
		 {
			 DC_Motor=0;
			 EX1 = 0;
			 //
			 TR0 = 0;
		 }
		 else
		 {
			 DC_Motor=1;
			 EX1 = 1;
		 }
 }
 
  //外部中断2服务程序
 void exti2() interrupt 2
 {
//		 DC_Motor = 0;
//		 delay_ms(5000);
//		 DC_Motor = 1;
//		 delay_ms(5000);
//		 KEY4 = 0;
	     time0_init();
 }
 
 
 
 void main()
 {
	 exti0_init();
	
	 exti2_init();
	 while(1);
 }
 

succ!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/705254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于 unity 配置 adb

1.打开环境变量配置path的环境 2 找到自己的unity安装目录,找到对应路径 配置到 path 属性中 C:\~\Editor\2021.3.0f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools 3 应用保存即可

chatgpt赋能python:Win7下Python:轻松实现SEO优化

Win7下Python&#xff1a;轻松实现SEO优化 Python作为一门高级程序语言&#xff0c;不仅广泛应用于人工智能和数据科学领域&#xff0c;也在Web开发中扮演着重要角色。在SEO方面&#xff0c;Python也展现了强大的能力。本文将介绍如何在Win7下使用Python实现SEO优化。 什么是…

chatgpt赋能python:同一行Python给两个变量赋值:如何提高编程效率?

同一行Python给两个变量赋值&#xff1a;如何提高编程效率&#xff1f; 作为Python编程方面经验丰富的工程师&#xff0c;我们都知道Python是一种非常易学易用的编程语言&#xff0c;其灵活性和高效性问题业已广为人知。然而&#xff0c;当我们在同时对多个变量进行赋值时&…

docker学习(一)docker概述

Docker 是什么 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言&#xff0c;并遵从 Apache2.0 协议开源。它可以让开发者打包应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。Docker 可用于…

MobaXterm通过RDP连接Ubuntu

文章目录 RDP&#xff0c;FTP和SSH基础知识通过RDP连接UbuntuUbuntu安装RDP开放RDP默认端口使用MobaXterm进行连接 RDP&#xff0c;FTP和SSH基础知识 RDP, FTP和SSH是计算机网络中常用的远程连接协议&#xff0c;用于在不同计算机之间进行远程访问和文件传输。 RDP (Remote De…

Python L2: String、Class、Json

定义一个Python class class Node:def __init__(self):self.ip ""self.pods []self.count 0 Json 对象&#xff08;instance) 转 dict 和字符串 n Node() n.count 1 n.ip "127.0.0.1" n.pods ["pod-x", "pod-y", "pod…

uniapp 一键登录

官网文档地址https://uniapp.dcloud.net.cn/univerify.html 一、开发前准备 1、需要先开通uni一键登录服务 开通成功后会得到 apiKey、apiSecret。这2个信息&#xff0c;后续需要配置在uniCloud的云函数里。同时注意保密&#xff0c;这2个信息也是计费凭证 2、开通uniCloud服…

机器学习实战 | emojify 使用Python创建自己的表情符号(深度学习初级)

目录 简介技术流程1. 加载依赖包2. 初始化训练和验证生成器3. 建立网络结构4. 编译和训练模型5. 保存模型权重6. 输出预测结果 完整程序1. train.py程序2. gui.py程序 简介 准备写个系列博客介绍机器学习实战中的部分公开项目。首先从初级项目开始。 本文主要介绍机器学习项目…

.Net 4726.0 Razor编译时的小差异

前言 几个月前在进行着.Net 472到6.0的升级&#xff0c;复用原有代码&#xff0c;在对Razor进行迁移中&#xff0c;发现原运行正常的代码&#xff0c;却存在报错&#xff0c;深入研究发现是Core下对Razor编译有一些变动。 问题复现 472 创建视图 新建.Net Framework下Mvc&#…

常州工学院单片机及应用系统设计2021-2022 学年第 二 学期 考试类型 开卷 课程编码 0302005

第一题 #include "SC95F861x_C.H" #include <INTRINS.H> unsigned char keydata0; void delay(unsigned int timer) //延时函数 { while(timer>0) timer--; } void IOinit() { P5CON0x00; P5PH0x03; P3CON0xFF; P3PH0xFF; } void readke…

字节跳动算法 提前批offer复盘

作者 | zjwang 面试锦囊之面经分享系列&#xff0c;持续更新中 欢迎后台回复"面试"加入讨论组交流噢 写在前面 北航本硕&#xff0c;非科班对搜索推荐比较感兴趣&#xff0c;平时看的文章比较多&#xff0c;所以聊的比较偏这一块大四时一段五个月的nlp方向实习&…

Dlib —— Windows下Vs2017编译dlib源码

Dlib Dlib 是一个现代C工具包&#xff0c;包含机器学习算法和 用于创建复杂软件的工具&#xff0c;C解决现实世界的问题。 它用于工业界和学术界的广泛领域 包括机器人、嵌入式设备、手机和大型高 性能计算环境。Dlib的开源许可允许您在任何应用程序中免费使用它。   Dlib相关…

项目计划、进度与控制

思维导图 项目计划、进度与控制-思维导图 第一部分 项目管理概述 什么是项目 约瑟夫朱兰博士也说过&#xff0c;项目就是在已经确定好的时间内必须解决的问题 什么是项目管理 图1-1 项目管理就是工具、人和系统 image.png 组织是人的集合&#xff0c;过程是人在处理。如果人…

Docker cuda libnvidia-compute Invalid cross-device link

docker apt 安装 cuda rootyeqiang-PC:/opt/speccpu2006# docker exec -it 881 /bin/bash root8815d0425401:/# apt --fix-broken install Reading package lists... Done Building dependency tree Reading state information... Done Correcting dependencies... Don…

Redis 事务与数据持久化

目录 一、Redis 事务 1.1 事务本质 1.2 数据库事务与redis事务 1.2.1 数据库事务 1.2.2 Redis事务 1.2.2.1 两种错误不同处理方式 1&#xff09;代码语法错误&#xff08;编译时异常&#xff09; 2&#xff09;代码逻辑错误&#xff08;运行时错误&#xff09; 1.2.2.2 这种做…

线性代数行列式的几何含义

行列式可以看做是一系列列向量的排列&#xff0c;并且每个列向量的分量可以理解为其对应标准正交基下的坐标。 行列式有非常直观的几何意义&#xff0c;例如&#xff1a; 二维行列式按列向量排列依次是 a \mathbf{a} a和 b \mathbf{b} b&#xff0c;可以表示 a \mathbf{a} a和…

目标检测mAP

概述 AP (Average precision) is a popular metric in measuring the accuracy of object detectors like Faster R-CNN, SSD, etc. Average precision computes the average precision value for recall value over 0 to 1. It sounds complicated but actually pretty simple…

安卓热修系列-插件资源冲突解决方案

作者&#xff1a;37手游移动客户端团队 背景 在做插件化过程中&#xff0c;宿主需要用到插件的资源&#xff0c;涉及到加载插件的资源&#xff1b; 因为插件是以apk的方式存在的&#xff0c;所以插件的ID和宿主的ID可能导致重复&#xff1b; 为了解决这个问题&#xff0c;需…

[游戏开发][Unity]点击Play按钮卡顿特别久

一般小工程不会遇到这个问题&#xff0c;我在公司接手了几个老项目&#xff0c;都遇到了这个问题。每次Play卡顿几分钟甚至十几分钟&#xff0c;很是头疼。

DL学习11-nin-mnist

对于使用卷积神经网络加全连接层的结构而言&#xff0c;对于全连接的参数的巨大了&#xff0c;对于简单的任务容易造成过拟合&#xff0c;且会增加模型的额外开销&#xff0c;例如alexnet&#xff0c;vgg等&#xff0c;全连接层的开销会随着参数的增加而爆炸式增长。 nin旨在使…