单元训练08:外部中断的基本操作

news2024/11/16 3:22:28

蓝桥杯 小蜜蜂 单元训练08:外部中断的基本操作

#include "stc15f2k60s2.h"

#define LED(x)                 \
    {                          \
        P0 = x;                \
        P2 = P2 & 0x1f | 0x80; \
        P2 &= 0x1f;            \
    }

#define L1 0xFE; // 定义L1亮灯
#define L8 0x7F; // 定义L8亮灯

sbit KeyS5 = P3 ^ 2; // 定义S5

typedef unsigned int uin8_t;

uin8_t interruptEnalbe = 0;
uin8_t workingStatus = 0;
uin8_t timerCounter = 0;
uin8_t timerSecCounter = 0;
uin8_t timerEnable = 0;
uin8_t timerSecEnable = 0;

void Working()
{
    switch (workingStatus)
    {
    case 0:
        LED(P0 & L1);    // L1灯亮
        if (timerEnable) // 灯闪烁需要时间间隔
            workingStatus = 1;
        timerEnable = 0;
        break;
    case 1:
        LED(P0 | 0x01); // L1灯灭
        if (timerEnable)
            workingStatus = 0;
        timerEnable = 0;
        break;
    default:
        workingStatus = 0;
        break;
    }
}
void LightLed8()
{
    LED(P0 & L8); // L8亮灯,同时不影响L1
}
void OffLed8()
{
    if (timerSecEnable)
    {
        LED(P0 | 0x80); // L8熄灭,同时不影响L1
        timerSecEnable = 0;
    }
}

void Timer0_Init(void) // 1毫秒@12.000MHz
{
    AUXR |= 0x80; // 定时器时钟1T模式
    TMOD &= 0xF0; // 设置定时器模式
    TL0 = 0x20;   // 设置定时初始值
    TH0 = 0xD1;   // 设置定时初始值
    TF0 = 0;      // 清除TF0标志
    TR0 = 1;      // 定时器0开始计时
    ET0 = 1;      // 使能定时器0中断
    EA = 1;
}

void INT0_init()
{
    IT0 = 1; // 上升沿还是下降沿
    EX0 = 1; // 使能打开
    EA = 1;  // 全局使能打开
}
void main()
{
    LED(0xff);

    INT0_init();
    Timer0_Init();

    while (1)
    {
        if (interruptEnalbe)
        {
            Working();
            OffLed8();
        }
    }
}

void INT0_ISR() interrupt 0
{
    if (KeyS5 == 0)
    {
        interruptEnalbe = 1;
        LightLed8(); // 这个可以写到外面,比如增加Led8Proc()函数,将LightLe8与OffLed8作为子函数调用。
    }
    else
        interruptEnalbe = 0;
}

void Timer0_Isr(void) interrupt 1
{
    if (++timerCounter == 50) // 50ms
    {
        timerCounter = 0;
        timerEnable = 1;
        if (++timerSecCounter == 60) // 3000ms ,3s
        {
            timerSecCounter = 0;
            timerSecEnable = 1;
        }
    }
}

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

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

相关文章

SpringBoot集成MyBatis和FlyWay

一、什么是FlyWay 一个开源的数据库迁移工具,用于管理和执行数据库结构的版本变更。通俗来说,它帮助开发者跟踪和应用数据库中的更改,比如表的创建、列的修改等。主要的功能为: 数据库版本控制: Flyway 使用一组迁移…

硬件I2C和软件I2C(模拟I2C)的区别

硬件I2C和软件I2C是两种不同的实现I2C(Inter-Integrated Circuit,集成电路间)通信协议的方式,它们在实现方式、性能特点以及应用场景上存在显著差异。 一、实现方式 硬件I2C:通过专门的硬件电路实现,这些…

泛交通领域的可视化大屏作品欣赏,各个都相当惊艳。

各位新老朋友大家好,本次给大家带来泛交通领域的可视化大屏,供大家鉴赏。 泛交通领域是指综合利用各种交通方式和资源,提供全方位、多元化的出行选择和服务的交通体系。 它包括以下几个方面: 1. 公共交通:包括地铁、…

花钱买不到系列之—linux系统调用

关于系统调用是什么,为什么用系统调用? 也是通过生活的例子来说明白。 我们生活中有一种东西叫银行,银行是不是有存钱的仓库对不对?好银行有存钱的仓库,银行有桌椅板凳啊,银行还有电脑,设备啊,…

文华财经期货DK多空提示指标源码

N1:40; A:(COHL)/4; AA0:MA(A,N1),LINETHICK3;//中 MA1:MA(CLOSE,5), NODRAW; MA2:MA(CLOSE,10), NODRAW; MA3:MA(C,60), NODRAW,LINETHICK1; 转折线:MA3, NODRAW,COLORCYAN; 顺势线:MA(CLOSE,10), NODRAW; MA20:MA(C,20), NODRAW; MA30:MA(C,30), NODRAW; ZD:MA3>…

网络 基础

目录 1、协议: 2、OSI 七层 模型: 3、TCP/IP 五层 / 四层 协议 3.1、为什么要有TCP / IP 协议? 3.1.1、主机之间变远产生的问题: 3.1.2、TCP/IP协议于操作系统的关系 4、局域网 4.1、Mac 4.1.1 在Linux内使用指令 …

leetCode - - - 哈希表

目录 1.模拟行走机器人(LeetCode 874) 2.数组的度(LeetCode 697) 3.子域名访问次数(LeetCode 811) 4.字母异位词分组(LeetCode 49) 5.小结 1.常见的哈希表实现 2.遍历Map 1.模…

基于Java中的SSM框架实现医院收费系统项目【项目源码+论文说明】计算机毕业设计

基于Java中的SSM框架实现医院收费系统演示 摘要 随着医疗体制改革的不断深入,医院收费系统成为医院信息化建设的重点内容。医院收费系统是利用计算机、网络技术和数据库技术,实现病人在医疗机构的诊疗信息的电子化存储、传递和分析,从而提高…

[Meachines] [Medium] Mango PHP弱比较绕过+MongoDB注入+TRP00F自动化权限提升+JJS权限提升

信息收集 IP AddressOpening Ports10.10.10.162TCP:22,80,443 $ nmap -p- 10.10.10.162 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0) | ssh-host…

<数据集>快递识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:5382张 标注数量(xml文件个数):5382 标注数量(txt文件个数):5382 标注类别数:1 标注类别名称:[Box-Packet] 序号类别名称图片数框数1Box-Packet53828965 使用标注工…

8.15-配置mysql5.7环境+使用python管理数据库+使用中间件mycat配置读写分离

一、配置mysql5.7的环境 1.基础配置 # 将mysql5.7的包拖入xshell [rootmysql_5 ~]# ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz ​ # 解压 [rootmysql_5 ~]# tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz ​ # 备份文件 [rootmysql_5 ~]# cp…

短说V4.2.0测试版发布|字体更换、小名片及个人中心UI更换

Hi 大家好, 我是给你们带来惊喜的运营小番茄。 本期更新为短说V4.2.0测试版,本次更新涉及平台有H5、App、微信小程序。 4.2.0版本除功能优化外,新增了如下功能: 一、新增功能 通用版: ①全站默认字体全部更换为…

淘宝到一个墨水屏,成功实现显示经历记录

一,淘一个墨水屏的原因 在一些小的PCB设计和编程中发现,许多程序控制运行情况如果能够显示出来,会很完美。大学时期使用LCD1602(经典)显示了一个称重传感器的课程设计,后来尝试OLED显示。在过程中发现墨水…

【嵌入式linux开发】智能家居入门5(QT、微信小程序、HTTP协议、ONENET云平台、旭日x3派)

智能家居入门5(QT、微信小程序、HTTP协议、ONENET云平台、旭日x3派) 前言一、QT界面设计二、云平台产品创建与连接三、下位机端QT代码总览:四、微信小程序端代码总览五、板端测试 前言 前四篇智能家居相关文章都是使用STM32作为主控&#xf…

报表的多行业应用!用工具做报表省了我不少事...

一、什么是报表? 说起报表,你不会还停留在Excel报表的层面上吧? 传统的报表一般都是基于Excel制作的,主要面向业务人员、开发人员等,也有一些公司会自己去开发设计,只不过周期较长,耗费人力多。…

端到端自动驾驶落地挑战与驱动力

1、端到端的发展驱动力 1.1 对标驱动:特斯拉FSD的标杆作用吸引行业关注 大部分行业专家表示,特斯拉FSD v12的优秀表现,是端到端自动驾驶这一技术路线快速形成大范围共识的最重要的推动力;而在此之前,从来没有一个自动…

C#模拟量线性变换小程序

1、一步步建立一个C#项目 一步步建立一个C#项目(连续读取S7-1200PLC数据)_s7协议批量读取-CSDN博客文章浏览阅读1.7k次,点赞2次,收藏4次。本文详细介绍了如何使用C#构建一个项目,通过S7net库连接并连续读取S7-1200 PLC的数据,包括创建窗体应用、配置存储位置、安装S7net库…

服务器端请求伪造漏洞

1.客户端请求 客户端请求指的是由客户端设备(如个人计算机、智能手机、平板电脑等)或软件(浏览器、各种APP)发出的请求,以获取指定的网页、图片、视频或其他资源。比如当用户在浏览器中输入URL或点击链接时,浏览器会自动发起HTTP请求,请求服…

Python | Leetcode Python题解之第335题路径交叉

题目&#xff1a; 题解&#xff1a; class Solution:def isSelfCrossing(self, distance: List[int]) -> bool:n len(distance)# 处理第 1 种情况i 0while i < n and (i < 2 or distance[i] > distance[i - 2]):i 1if i n:return False# 处理第 j 次移动的情况…

【语义通信】灵(Genie)——6G的第四维元素

6G 不仅包含 5G 涉及的人类社会、信息空间、 物理世界&#xff08;人、机、物&#xff09;这 3 个核心元素&#xff0c;还第四维元素—灵&#xff08;Genie&#xff09;。Genie存在于虚拟世界体系&#xff0c;虚拟世界体系包括&#xff08;VPS, VBS, VSS&#xff09;&#xff0…