当前位置: 首页 > news >正文

51单片机——中断系统之外部中断实验,小白讲解,相互学习

 中断介绍

        中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一,是我们学些单片机必须要掌握的。

        为了更容易的理解中断概念,我们先来举一个生活中的例子:你打开火烧上一壶水,然后去洗衣服,在洗衣服的过程中,突然听到水壶发水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。这个过程实际就发生了一次中断。如下图:

                                           

        对于单片机来讲,中断是指 CPU 在处理某一事件A时,发生了另一件事情B, 请求CPU迅速去处理(中断发生);CPU暂时停止当前的工作(中断响应),转去处理事件B(中断服务);待CPU将事件B处理完毕后,再回到原来事件 A 被中断的地方继续处理事件 A(中断返回),这一过程称为中断。

                                                       

        在来看生活事例,与单片机中断结合分析,主要任务事洗衣服,水开报警这时一个中断请求,这一时刻相当于断点处,你响应中断去关火,然后将开水灌入暖水瓶中,这一行动实际上就是处理中断程序,灌完开水后再回去继续洗衣服,相当于处理完中断程序后再返回主程序继续执行主程序。这里需要注意的是,水开是随时都有可能的,但是无论什么时候开,只要一开你将立即去处理它,处理完后再回来继续接着洗衣服。单片机再执行程序时,中断也是随时可能发生,但无论何时发生,只要一旦发生,单片机将立即暂停当前程序,赶去处理中断程序,处理完中断程序后再返回刚才暂停处接着执行原来的程序。

单片机再执行程序时其程序流程图如下:

        引起 CPU 中断的根源称为中断源。中断源向 CPU 提出中断请求,CPU 暂时 中断原来的事务 A,转去处理事件 B,对事件 B 处理完毕后,再回到原来被中断 的地方(即断点),称为中断返回。实现上述中断功能的部件称为中断系统(中断机构)。

        当中央处理机 CPU 正在处理某件事的时候外界发生了紧急事件请求,要求 CPU 暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中 断的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件称为中 断系统,请示 CPU 中断的请求源称为中断源。微型机的中断系统一般允许多个 中断源,当几个中断源同时向 CPU 请求中断,要求为它服务的时候,这就存在 CPU 优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先 处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别。CPU 总是 先响应优先级别最高的中断请求。

        当 CPU 正在处理一个中断源请求的时候(执行相应的中断服务程序),发生 了另外一个优先级比它还高的中断源请求。如果 CPU 能够暂停对原来中断源的 服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中 断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系统,没 有中断嵌套功能的中断系统称为单级中断系统。

        中断的开启与关闭、设置启用哪一个中断等都是由单片机内部的一些特殊功 能寄存器来决定的,在前面章节的学习中我们仅对单片机 IO 口操作过(实际上 操作 IO 口即操作 IO 口寄存器,只不过编译器已经帮我们把 IO 口寄存器封装好 直接操作 IO 即可,这些可在 51 单片机头文件内查看),从本章开始就会介绍单片机内部更多的特殊功能寄存器以及如何配置它实现相应的功能。

        随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速 I/O 设备的数据传送问题,而且还具有如下优点:

①分时操作。CPU 可以分时为多个 I/O 设备服务,提高了计算机的利用率;

②实时响应。CPU 能够及时处理应用系统的随机事件,系统的实时性大大增 强;

③可靠性高。CPU 具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高

中断结构

        STC89C5X 系列单片机提供了 8 个中断请求源,它们分别是:外部中断 O(INTO)、外部中断 1(INT1)、外部中断 2(INT2)、外部中断 3(INT3)、定时器 0 中断、定时器 1 中断、定时器 2 中断、串口(UART)中断。(注意:51 系列单片 机一定有基本的 5 个中断,但不全有 8 个中断,需要查看芯片手册,通常我 们使用的都是基本的 5 个中断:INT0、INT1、定时器 0/1,串口中断)。所有的 中断都具有四个中断优先级(基本型只有两个)。用户可以用关总中断允许位 (EA/IE.7)或相应中断的允许位来屏蔽所有的中断请求,也可以用打开相应的中 断允许位来使 CPU 响应相应的中断申请。其中有些中断源可以用软件独立地控 制为开中断或关中断状态。每一个中断的优先级别均可用软件设置。高优先级的 中断请求可以打断低优先级的中断,反之,低优先级的中断请求不可以打断高优 先级及同优先级的中断。当两个相同优先级的中断同时产生时,将由查询次序来 决定系统先响应哪个中断。

STC89C5X 系列单片机的各个中断查询次序表如下图 所示:

        通过设置新增加的特殊功能寄存器 IPH 中的相应位,可将中断优先级设为 四级,如果只设置 IP 或 XICON,那么中断优先级就只有两级,与传统 8051 单 片机两级中断优先级完全兼容。上图中的中断查询次序即为中断号,这个中断号 在编程时非常重要,当中断来临时,只有中断号正确才能进入中断。

        下面我们以 51 单片机均有的 5 个中断来介绍,其内部结构框图如下所示:

 

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

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

        ③T0 对应的是 P3.4 口的附加功能,TF0(TCON.5),片内定时/计数器 T0 溢 出中断请求标志。当定时/计数器 T0 发生溢出时,置位 TF0,并向 CPU 申请中断。

        ④T1 对应的是 P3.5 口的附加功能,TF1(TCON.7),片内定时/计数器 T1 溢出中断请求标志。当定时/计数器 T1 发生溢出时,置位 TF1,并向 CPU 申请中 断。

        ⑤RXD 和 TXD 对应的是 P3.0 和 P3.1 口的附加功能,RI(SCON.0)或 T(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位 RI 或 当串行口发送完一帧串行数据时置位 TI,向 CPU 申请中断。

中断相关寄存器

1)中断允许控制

        CPU 对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器 IE 控制的。

EX0(IE.0),外部中断 0 允许位;

ET0(IE.1),定时/计数器 T0 中断允许位;

EX1(IE.2),外部中断 0 允许位;

ET1(IE.3),定时/计数器 T1 中断允许位;

ES(IE.4),串行口中断允许位;

EA (IE.7), CPU 中断允许(总允许)位。

2)中断请求标志 TCON

IT0(TCON.0),外部中断 0 触发方式控制位。

        当 IT0=0 时,为电平触发方式。

        当 IT0=1 时,为边沿触发方式(下降沿有效)。

IE0(TCON.1),外部中断 0 中断请求标志位。

IT1(TCON.2),外部中断 1 触发方式控制位。

IE1(TCON.3),外部中断 1 中断请求标志位。

TF0(TCON.5),定时/计数器 T0 溢出中断请求标志位。

TF1(TCON.7),定时/计数器 T1 溢出中断请求标志位。

3)中断优先级

        同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先 级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:

4)中断号

外部中断配置 

        我们知道要让 51 单片机发生中断必须要满足以下 3 个条件,这 3 个条件的 顺序可以任意:

①中断源有中断请求;

②此中断源的中断允许位为 1;

③CPU 开中断(即 EA=1)。

以上三条同时满足时,CPU 才有可能响应中断。在使用中断时我们需要做什么呢?

①你想使用的中断是哪个?选择相应的中断号;

②你所希望的触发条件是什么?

③你希望在中断之后干什么?

比如我们配置外部中断 0,对应的配置程序如下:

EA=1;//打开总中断开关

EX0=1;//开外部中断 0

IT0=0/1;//设置外部中断的触发方式

        如果要配置的是外部中断 1,只需将 EX0 改为 EX1,IT0 改为 IT1。
        因为独立按键一端是共地的,当按下后对应单片机 IO 口被拉低,而默认单 片机 IO 口是高电平,这样就有一个下降沿过程,所以通常使用外部中断都是配 置为下降沿触发,即 IT0=1;
        在编写程序时通常我们会将外部中断的配置放到一个自定义函数内便于管 理维护。如下所示:
void exti0_init(void)
{
        IT0=1;//跳变沿触发方式(下降沿)如果是=0是低电平触发
        EX0=1;//打开 INT0 的中断允许
        EA=1;//打开总中断
}
当触发中断后即会进入中断服务函数,外部中断 0 中断服务函数如下:

void int0() interrupt 0 //外部中断 0 中断函数

{

//编写用户所需的功能代码

}

        在中断函数中 exti0 是函数名,可自定义,但必须符合 C 语言标识符定义规 则,interrupt 是一个关键字,表示 51 单片机中断。后面的“0”是中断号,外 部中断 0 中断号为 0,如果是外部中断 1,则中断号为 2,这个可参考中断章节 的内容。编写所需的代码不能太长,越短越好
硬件设计
本实验使用到硬件资源如下:
(1)独立按键模块(K3)
(2)LED 模块(D1)
        LED 模块和独立按键模块电路在前面章节已介绍过,这里就不多说。原理图 中 K3 键是连接在单片机 P3.2 口(外部中断 0),K4 按键是连接在 P3.3 口(外部中断 1)。

 

软件设计
        实现的功能是:使用独立按键 K3 控制 LED 亮灭。
/**********************************************************************************
****
实验名称:外部中断 0 实验
接线说明:
实验现象:下载程序后,当按下 K3 键可控制 D1 指示灯亮灭
注意事项:将红外接收传感器取下,防止对 P3.2 口干扰
***********************************************************************************
****/
#include "reg52.h"
typedef unsigned int u16;//对系统默认数据类型进行重定义
typedef unsigned char u8;
//定义 LED1 管脚
sbit LED1=P2^0;
//定义独立按键 K3 控制脚
sbit KEY3=P3^2;
/*******************************************************************************
* 函 数 名 : delay_10us
* 函数功能 : 延时函数,ten_us=1 时,大约延时 10us
* 输 入 : ten_us
* 输 出 : 无
*******************************************************************************/
void delay_10us(u16 ten_us)
{while(ten_us--);
}
/*******************************************************************************
* 函 数 名 : exti0_init
* 函数功能 : 外部中断 0 配置函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void exti0_init(void)
{IT0=1;//跳变沿触发方式(下降沿),跳变沿触发方式(下降沿)如果是=0是低电平触发EX0=1;//打开 INT0 的中断允许EA=1;//打开总中断
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
/*******************************************************************************
再main()函数并没有对LED灯的操作,按下按键KEY3为什么会控制灯亮灭呢?
这是因为我们满足了 exi0_init()的出发条件 ,就会进入中断服务函数exti0(),中断函数执行完成,就又回到刚才中断的位置,现在while()是个死循环,不断的循环,如果我们按键按下,就又跳到中断服务函数exti0(),中断函数执行完成,就又回到刚才中断的位置while()循环里面,当没有按键按下的时候就一直再while()里面循环,只要又按键按下就跳到中断服务函数exti0()
*******************************************************************************/
void main()
{exti0_init();//外部中断 0 配置while(1){}
}
//外部中断 0 中断函数,interrupt 是一个关键字不能写错写错是进不去中断的
//0后面的0是中断号,也不能写错,不同数字代表不同的中断
void exti0() interrupt 0 
{delay_10us(1000);//消斗if(KEY3==0)//再次判断 K3 键是否按下LED1=!LED1;//LED1 状态翻转
}
程序代码比较简单,首先定义 K3 键与 LED1 的控制管脚,然后定义了外部中 断 0 配置函数 exti0_init,该函数内容是按照前面介绍的配置方法实现,即开 启总中断、外部中断 0 功能,设置外部中断 0 为下降沿触发。然后进入 while 循环,在循环体内没有执行任何功能程序。 有人就会问,在主函数中怎么没有看到按键对 LED 的控制呢?因为我们在 exti0_init()函数内就已经把按键管脚配置为外部中断 0 下降沿触发,当有按键 按下,即会进入对应中断服务函数执行相应的功能程序,LED 的控制就在中断函 数内完成的。
实现的功能是:使用独立按键 K4 控制 LED 亮灭。
/**********************************************************************************
****
实验名称:外部中断 1 实验
接线说明:
实验现象:下载程序后,当按下 K4 键可控制 D2 指示灯亮灭
注意事项:将红外接收传感器取下,防止对 P3.3 口干扰
***********************************************************************************
****/
#include "reg52.h"
typedef unsigned int u16;//对系统默认数据类型进行重定义
typedef unsigned char u8;
//定义 LED1 管脚
sbit LED2=P2^1;
//定义独立按键 K3 控制脚
sbit KEY4=P3^3;
/*******************************************************************************
* 函 数 名 : delay_10us
* 函数功能 : 延时函数,ten_us=1 时,大约延时 10us
* 输 入 : ten_us
* 输 出 : 无
*******************************************************************************/
void delay_10us(u16 ten_us)
{while(ten_us--);
}
/*******************************************************************************
* 函 数 名 : exti0_init
* 函数功能 : 外部中断 1 配置函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void exti0_init(void)
{IT1=1;//跳变沿触发方式(下降沿),跳变沿触发方式(下降沿)如果是=0是低电平触发EX1=1;//打开 INT0 的中断允许EA=1;//打开总中断
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
/*******************************************************************************
再main()函数并没有对LED灯的操作,按下按键KEY3为什么会控制灯亮灭呢?
这是因为我们满足了 exi0_init()的出发条件 ,就会进入中断服务函数exti0(),中断函数执行完成,就又回到刚才中断的位置,现在while()是个死循环,不断的循环,如果我们按键按下,就又跳到中断服务函数exti0(),中断函数执行完成,就又回到刚才中断的位置while()循环里面,当没有按键按下的时候就一直再while()里面循环,只要又按键按下就跳到中断服务函数exti0()
*******************************************************************************/
void main()
{exti0_init();//外部中断 0 配置while(1){}
}
//外部中断 0 中断函数,interrupt 是一个关键字不能写错写错是进不去中断的
//2后面的0是中断号,也不能写错,不同数字代表不同的中断
void exti0() interrupt 2 
{delay_10us(1000);//消斗if(KEY4==0)//再次判断 K4 键是否按下LED2=!LED2;//LED2 状态翻转
}

实验现象
        使用 USB 线将开发板和电脑连接成功后(电脑能识别开发板上 CH340 串口), 把编译后产生的.hex 文件烧入到芯片内,实现现象如下:当按下 K3 键,D1 指 示灯亮,再次按下 K3 键,D1 指示灯灭,如此循环。 如果下载的是外部中断 1 实验程序,实验现象如下:当按下 K4 键,D1 指示 灯亮,再次按下 K4 键,D1 指示灯灭,如此循环

相关文章:

51单片机——中断系统之外部中断实验,小白讲解,相互学习

中断介绍 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一,是我们学些单片机必须要掌握的。 为了更容易的理解中断概念&…...

如何设计一个秒杀系统

秒杀系统要如何设计? 前言 高并发下如何设计秒杀系统?这是一个高频面试题。这个问题看似简单,但是里面的水很深,它考查的是高并发场景下,从前端到后端多方面的知识。 秒杀一般出现在商城的促销活动中,指定…...

厄瓜多尔公司注册方案

简介: 经济概况与商机 厄瓜多尔是世界上第74大国家,是南美西部国家,与哥伦比亚,秘鲁和太平洋接壤。厄瓜多尔地处世界中心,地理位置优越,地理位置优越-赤道线零纬度,使其成为通往太平洋的理想枢…...

安全渗透环境准备(工具下载)

数据来源 01 一些VM虚拟机的安装 攻击机kali: kali官网 渗透测试工具Kali Linux安装与使用 kali汉化 虚拟机网络建议设置成NAT模式,桥接有时不稳定。 靶机OWASP_Broken_Web_Apps: 迅雷下载 网盘下载 安装教程 开机之后需要登录&am…...

118.(leaflet篇)leaflet空间判断-点与geojson面图层的空间关系(turf实现)

听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html> <html>...

目标检测与目标跟踪算法技术汇总

现如今chatgpt的爆火&#xff0c;我也使用了一段时间&#xff0c;问了许多关于人工智能技术的问题&#xff0c;基本是它能够回答了大部分的原理的&#xff0c;至于其人工智能涉及到的算法以及网络&#xff0c;考虑到也没有图&#xff0c;可能在给出这类回答上&#xff0c;是不太…...

Linux 系统启动过程

过去几十年&#xff0c;公用事业行业发生了重大变化。能源需求的转变导致企业利润率的波动&#xff0c;但不是运营成本的波动。 许多公用事业公司通过后勤部门流程自动化来削减成本&#xff0c;比如招采流程自动化。 在招采活动中&#xff0c;人工招采会产生盲点。由于公共事业…...

【每日一题Day118】LC1124表现良好的最长时间段 | 前缀和+单调栈/哈希表

表现良好的最长时间段【LC1124】 给你一份工作时间表 hours&#xff0c;上面记录着某一位员工每天的工作小时数。 我们认为当员工一天中的工作小时数大于 8 小时的时候&#xff0c;那么这一天就是「劳累的一天」。 所谓「表现良好的时间段」&#xff0c;意味在这段时间内&#…...

vue使用nprogress(进度条)

目录 1.安装 2.引入 3.配置 4.使用 5.使用场景 6.改变颜色 1.安装 npm install --save nprogress2.引入 import NProgress from nprogress import nprogress/nprogress.css3.配置 NProgress.configure({easing: ease, // 动画方式&#xff0c;和css动画属性一样&#…...

@NotNull 、@NotBlank、@NotEmpty区别和使用

引言 今天在使用validation校验的时候&#xff0c;发现了使用校验不起作用&#xff0c;一时间有点摸不到头绪&#xff0c;就看了一下同事提交的代码&#xff0c;发现了问题在用NotNull用法&#xff0c;用的有些错误&#xff0c;所以在这里讲一下NotNull、NotBlank、NotEmpty区…...

Nacos——Nacos简介以及Nacos Server安装

资料来源&#xff1a;02-Nacos配置管理-什么是配置中心_哔哩哔哩_bilibili nacos记得下载2.x版本的&#xff0c;负责以后新建配置的时候会出现“发布错误&#xff0c;请检查参数是否正确”错误&#xff01;&#xff01;&#xff01;&#xff01; 目录 一、Nacos简介 1.1 四…...

Presto 文档和笔记

1. Presto Presto 官网 Presto 文档 2. 配置 3.1 node 配置 cat etc/node.properties # Generated by Apache Ambari. Fri Feb 10 14:52:10 2023node.data-dir/mnt/bmr/presto/data node.environmentproduction node.idbmr-master-4b7cbaa3.2 jvm 配置 cat etc/jvm.confi…...

大尺度衰落与小尺度衰落

一. 大尺度衰落 无线电磁波信号在收发天线长距离&#xff08;远大于传输波长&#xff09;或长时间范围发生的功率变化&#xff0c;称为大尺度衰落&#xff0c;一般可以用路径损耗模型来描述&#xff0c;路径损耗是由发射功率在空间中的辐射扩散造成的&#xff0c;根据功率传输…...

完美解决:重新安装VMware Tools灰色。以及共享文件夹的创建(centos8)

解决&#xff1a;重新安装VMware Tools灰色问题&#xff1a;重新安装VMware Tools灰色解决方案-挂载VMware中的linux.iso1. vmtools的linux.iso挂载及安装2. 共享文件夹的创建及配置问题&#xff1a;重新安装VMware Tools灰色 发现一个小问题&#xff0c;我的vm虚拟机安装后发…...

达梦数据库作业管理

一、基本功能 作业系统大致包含作业&#xff0c;警报&#xff0c;操作员三部分。 作业可运行DMPL/SQL脚本&#xff0c;定期备份数据库&#xff0c;检查等。可定时执行&#xff0c;也可通过警报触发执行&#xff0c;可产生警报通知用户状态。一个作业由多个步骤组成&#xff0c…...

数据结构-考研难点代码突破(C++实现树型查找-二叉搜索树(二叉排序树))

文章目录1.二叉搜索树基本操作二叉搜索树的效率分析2. C实现1.二叉搜索树基本操作 二叉排序树是具有下列特性的二叉树&#xff1a; 若左子树非空&#xff0c;则左子树上所有结点的值均小于根结点的值。若右子树非空&#xff0c;则右子树上所有结点的值均大于根结点的值。左、…...

emqx异常处理

启动异常 通过解压tar压缩包安装后通过 ./bin/emqx start 启动报错 WARNING: Default (insecure) Erlang cookie is in use. WARNING: Configure node.cookie in /opt/emqx/etc/emqx.conf or override from environment variable EMQX_NODE__COOKIE NOTE: Use the same config…...

Web前端:开始学习ReactJS需要知道什么?

毫无疑问&#xff0c;ReactJS是前端开发者中最著名的库之一&#xff0c;它的受欢迎程度与日俱增。用ReactJS构建的网站看起来非常棒&#xff0c;大多数开发新手都被它吸引住了。然而&#xff0c;许多新人和有经验的开发人员在没有首先了解先决条件的情况下&#xff0c;就直接用…...

卡诺图化简

1.相关概念 最小项&#xff1a;函数的某个乘积项包含了函数的全部变量&#xff08;原变量或反变量的形式&#xff09;&#xff0c;且每个变量仅出现一次&#xff0c;则这个乘积项为该函数的一个标准积项。 最小项中的原变量记为1&#xff0c;反变量记为0&#xff0c;当变量顺序…...

带你了解软件测试是做什么的

软件测试是互联网技术中一门重要的学科&#xff0c;它是软件生命周期中不可或缺的一个环节&#xff0c;担负着把控、监督软件的质量的重任。 人才稀缺&#xff0c;对于求职者来说就意味着机会。但是很多想学习软件测试的人对这个学科并不了解&#xff0c;也不知道该如何学习&a…...

企业电子招投标采购系统源码之功能模块功能描述

​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外…...

职场中的高手,是如何高质量解决问题?

职场总会遇见很多新问题&#xff0c;高手会从容应对&#xff0c;因为他们学习了一套通 用理论&#xff0c;可以处理工作当中的大部分内容&#xff0c;剩下的一部分能够用快速 提问的方式找到思路。 记得几年前有个同事 A&#xff0c;下午四点多项目突然丢过来一个活&#xff0c…...

报表生成工具Stimulsoft中的电子签名和 PDF 数字签名

Stimulsoft Reports 是一款报告编写器&#xff0c;主要用于在桌面和Web上从头开始创建任何复杂的报告。可以在大多数平台上轻松实现部署&#xff0c;如ASP.NET, WinForms, .NET Core, JavaScript, WPF, Angular, Blazor, PHP, Java等&#xff0c;在你的应用程序中嵌入报告设计器…...

【Hello Linux】Linux环境下写的第一个程序 -- 进度条

作者&#xff1a;小萌新 专栏&#xff1a;Linux 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;写出Linux中的第一个小程序 进度条 进度条小程序行缓冲区概念\r 和 \n进度条代码和演示行缓冲区概念 我们首先用两段代码来感受下行缓…...

【基础】性能测试,从0到实战(手把手教,非常实用)

一、性能基础 什么是性能测试--->本质? 基于协议来模拟用户发送的请求&#xff08;业务模拟&#xff09;&#xff0c;对服务器形成一定负载。关注点&#xff1a;时间性能、空间性能与界面无关 性能测试分类 性能测试&#xff08;狭义&#xff09; 性能测试方法是通过模…...

07-Java异常分类以及处理机制

1.异常概念 Java标准库内建了一些通用的异常&#xff0c;这些类以Throwable为顶层父类。Throwable又派生出Error类和Exception类。 1.错误&#xff1a;是程序无法处理的错误&#xff0c;表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关&#xff0c;而表示…...

用到的C++的相关知识-----未完待续

文章目录前言一、vector函数的使用1.1 构造向量二、常用函数2.1 矩阵输出函数2.2 向量输出函数2.3 矩阵的使用2.4三、new的用法3.1 内存的四种分区3.2 new的作用3.33.4四、4.14.24.34.4总结前言 只是为方便学习&#xff0c;不做其他用途 一、vector函数的使用 有关的文章 C v…...

JavaScript刷LeetCode拿offer-贪心算法

前言 学习算法的时候&#xff0c;总会有一些让人生畏的名词&#xff0c;比方动态规划&#xff0c;贪心算法 等&#xff0c;听着就很难&#xff1b;而这一 part 就是为了攻破之前一直没有系统学习的 贪心算法&#xff1b; 有一说一&#xff0c;做了这些贪心题&#xff0c;其实…...

selenium

下载并安装selenium 安装&#xff1a;cmd中执行 pip install -i https://pypi.douban.com/simple selenium执行完成后 pip show selenium 可查看安装是否成功安装浏览器驱动&#xff0c;查看当前浏览器的版本选择合适的驱动并下载 chrome的链接&#xff1a;https://chromedrive…...

SpringMVC的视图

转发视图ThymeleafView若使用的视图技术为Thymeleaf&#xff0c;在SpringMVC的配置文件中配置了Thymeleaf的视图解析器&#xff0c;由此视图解析器解析之后所得到的是ThymeleafView。解析&#xff1a;当控制器方法中所设置的视图名称没有任何前缀时&#xff0c;此时的视图名称会…...

做照片用的视频模板下载网站/百度推广营销方案

最近&#xff0c;不少读者托我找一个能实际练手的测试项目。开始&#xff0c;我觉得这是很简单的一件事&#xff0c;但当我付诸行动时&#xff0c;却发现&#xff0c;要找到一个对新手友好的练手项目&#xff0c;着实困难。 我翻了不下一百个web网页&#xff0c;包括之前推荐练…...

在别的公司做的网站可以转走吗/北京网络优化推广公司

一、viewport宽度 起源&#xff1a;PC端的网站要显示在移动端有什么问题&#xff1f; 如果把移动端的可是区域设置到&#xff08;320-768&#xff09;的话&#xff0c;大部分网站都会因为太窄而显示错乱所以浏览器默认把viewport【这个viewport指的是layout viewport】设置为一…...

网站建设有关的软件/最新国际新闻

http://my.oschina.net/havoc/blog/204958?p 首先说不使用插件的方法 WINDOWS eclipse配置 Run-->External Tools-->External Tools Configurations… new 一个 program&#xff08;比如名字叫 open_file&#xff09; location 里面填 :C:/WINDOWS/explorer.exe …...

wordpress支持系统/网站建设流程是什么

实网测试&#xff0c;可以理解为在用户实际网络环境资源进行测试的行为。为何需要实网测试呢&#xff1f; 单机的应用软件越来越少&#xff0c;当下的应用软件都需要涉及与服务器之间的交互&#xff0c;尤其是当前火热的云服务应用软件。 目前比较流行的网络视频播放软件&…...

o2o电子商务网站开发与运营/亚马逊seo什么意思

TCP(Transmission Control Protocol) 传输控制协议 三次握手 TCP是主机对主机层的传输控制协议&#xff0c;提供可靠的连接服务&#xff0c;采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(…...

泰安人才网公司/昆明网站seo优化

可以通过添加负边距来防止图像具有未定义的模糊边缘,但是在CSS转换期间,这会失败.在添加或删除过滤器模糊类时,如何保持CSS过渡期间定义的图像边缘&#xff1f;测试中&#xff1a;> Firefox 37&#xff1a;效果很棒&#xff01;> Chrome 42&#xff1a;图像和边框所在的位…...