精华内容
下载资源
问答
  • 51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器...
  • 折腾了一上午,没有人带只能自己摸索了...........位序号D0D1D2D3D4D5D6D7说明外部中断0定时/计数0外部中断1定时/计数1串行口中断定时/计数2(52单片机)无效位全局中断位位符号(写程序时直接引用)EX0ET0EX1ET1E...

    折腾了一上午,没有人带只能自己摸索了........

    接法:JP10接J12;JP8接JP16;P3^2接GND;P2^0接LED;

    只有打开全局开关,其它各位的开关才可以开启。

    所有开关赋值为1则开,赋值为0则关。

    位序号

    D0

    D1

    D2

    D3

    D4

    D5

    D6

    D7

    说明

    外部中断0

    定时/计数0

    外部中断1

    定时/计数1

    串行口中断

    定时/计数2

    (52单片机)

    无效位

    全局中断位

    位符号(写程序时直接引用)

    EX0

    ET0

    EX1

    ET1

    ES

    ET2

    --

    EA

    位地址

    A8H

    A9H

    AAH

    ABH

    ACH

    ADH

    --

    AFH

    EA:总允许位

    ES:串口中断允许位

    ET1:定时计数器1中断允许位

    EX1:外部中断1中断允许位

    ET0:定时计数器0中断允许位

    EX0:外部中断0中断允许位

    52单片机中的6个中断源和单片机端口的关系:

    1外部中断0的中断申请线INT0就是P3口的P3.2口线

    2外部中断1的中断申请线INT1就是P3口的P3.3口线

    3计数器0的外部计数输入端为单片机P3口的P3.4口线(定时器0为内部中断)

    4计数器1的外部计数输入端为单片机P3口的P3.5口线(定时器1为内部中断)

    5串行口中断(分为串行口接受中断RXD即单片机P3口的P3.0口线;串行口发送中断TXD即单片机P3口的P3.1口线

    6计数器2的外部计数输入端为单片机P1口的P1.0口线 (定时器2为内部中断)

    a1cf76cb9b7d36575ea8b7afe1219705.png

    TCON

    TCON(Timer Control Register)定时器/计数器控制寄存器

    TCON在特殊功能寄存器中,字节地址为88H,由于有位地址,十分便于进行位操作。

    TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。

    TCON的格式如下图所示。其中,TF1,TR1,TF0和TR0位用于定时器/计数器;IE1,IT1,IE0和IT0位用于中断系统。

    各位定义如下:

    TF1:定时器1溢出标志位。当定时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。

    TR1:定时器1运行控制位。由软件清“0”关闭定时器1。当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1。

    TF0:定时器0溢出标志。其功能及操作情况同TF1。

    TR0:定时器0运行控制位。其功能及操作情况同TR1。

    IE1:外部中断1请求标志位。

    IT1:外部中断1触发方式选择位。当IT1=0,为低电平触发方式;当IT1=1,为下降沿触发方式。

    IE0:外部中断0请求标志位。

    IT0:外部中断0触发方式选择位。 当IT0=0,为低电平触发方式;当IT0=1,为下降沿触发方式。

    TCON中低4位与中断有关。由于TCON是可以位寻址的,因而如果只清溢出或启动定时器工作,可以用位操作命令。例如:执行“CLR TF0”后则清定时器0的溢出;执行“SETB TR1”后可启动定时器1开始工作(当然前面还要设置方式定)。

    code:

    //电平触发

    #include

    #include

    #define uint unsigned int

    #define uchar unsigned char

    sbit D1=P2^0;

    uchar num;

    uchar wnum=0x00;

    uchar code dbit[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段选,选择要显示的数字

    //uchar code wnum[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};//八位数码管

    void delay(uint z)

    {

    uint x,y;

    for(x=z;x>0;x--)

    {

    for(y=0;y<113;y++)

    {

    }

    }

    }

    void main()

    {

    P1=wnum;

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

    EX0=1;//打开外部中断0,P3.2选通

    IT0=0;//选择电平触发方式

    while(1)

    {

    for(num=0;num<10;num++)

    {

    P0=dbit[num];

    delay(500);

    }

    }

    }

    void duan() interrupt 0

    {

    D1=1;

    delay(500);

    D1=0;

    delay(500);

    }

    //边沿触发方式

    #include

    #include

    #define uint unsigned int

    #define uchar unsigned char

    sbit D1=P2^0;

    uchar num;

    uchar wnum=0x00;

    uchar code dbit[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//段选,选择要显示的数字

    //uchar code wnum[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F};//八位数码管

    void delay(uint z)

    {

    uint x,y;

    for(x=z;x>0;x--)

    {

    for(y=0;y<113;y++)

    {

    }

    }

    }

    void main()

    {

    P1=wnum;

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

    EX0=1;//打开外部中断0,P3.2选通

    IT0=1;//选择边沿触发方式

    while(1)

    {

    for(num=0;num<10;num++)

    {

    P0=dbit[num];

    delay(500);

    }

    }

    }

    void duan() interrupt 0

    {

    D1=1;

    delay(500);

    D1=0;

    delay(500);

    }

    展开全文
  • 外部中断0电平触发

    千次阅读 2017-03-31 19:23:10
    #includereg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义    main()  {   P1=0x55; //P1口初始值  ... //外部中断0开   IT0=0; //电平触发   while(1) 
    1. #include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义  
    2.   
    3. main()  
    4. {  
    5.   P1=0x55;       //P1口初始值  
    6.   EA=1;          //全局中断开  
    7.   EX0=1;         //外部中断0开  
    8.   IT0=0;         //电平触发  
    9.   while(1)  
    10.   {  
    11.                  //在此添加其他程序  
    12.   }  
    13. }  
    14.   
    15. void ISR_Key(void) interrupt 0 using 1  
    16. {  
    17.  P1=~P1;     //进入中断程序执行程序,  
    18. //此时可以通过 EA=0指令暂时关掉中断      
    19. }  
    展开全文
  • 51单片机之外部中断应用实例(电平触发、边沿触发)

    万次阅读 多人点赞 2019-05-15 15:10:32
    硬件:STC89C52RC 开发工具:Keil uVision4 前言:8051是一款很经典的、历史悠久的单片机,作为一款入门级的...下面详细讲述外部中断功能的使用。 外部中断:单片机提供的系统紧急事件的输入控制。事件触发的方式...
    • 硬件:STC89C52RC
    • 开发工具:Keil uVision4

    前言:8051是一款很经典的、历史悠久的单片机,作为一款入门级的单片机8051受到很多初学者的欢迎。89c52是8051系列的成员之一,拥有8K字节程序存储空间,512字节随机数据存储空间;I/O口控制端口、中断功能、定时器及串行接口。下面详细讲述外部中断功能的使用。

    外部中断:单片机提供的系统紧急事件的输入控制。事件触发的方式包括输入信号的下降沿触发、低电平触发。当触发中断后,单片机会跳到某一个固定的地址去执行中断服务程序。

    外部中断信号由INT0、INT1引脚传送进来,如图所示:

    有关中断处理的相关控制寄存器如下:

    • 计时计数器控制寄存器 TCON
    • 中断允许控制寄存器 IE
    • 中断优先权寄存器 IP

    寄存器并不算多,配置起来也不复杂。先对各个寄存器进行说明:

    TCON寄存器:

    “T”开头的是计数/定时器相关位,“I”开头的是外部中断相关位,我们需要看的是后者:

    IE寄存器:

    IP寄存器:

    CPU接到中断信号发生时会停止当前的工作跳转到中断服务程序。那么当CPU同时接到多个中断信号时,该怎么选择?当CPU正在中断函数时又接受到另一个中断信号,该怎么处理?

    关于中断的优先级有一下原则:
    1、CPU同时接收到几个中断时,首先响应优先级最高的中断请求,低优先的进入队列等待;
    2、正在进行的中断过程不能被新的同级或低优先级的中断请求所中断;
    3、正在进行的低优先级中断服务,能被高优先级中断请求中断;

    那么,IP寄存器的某一中断配置为1就成为高优先级。每一个中断在IP里面只占一位配置位(IP.x=0或OP.x=1),也就是说系统里只存在两种优先级,要么是高优先级,要么是低优先级。

    如果,任何中断都不配置IP寄存器的优先级,也等同于系统上电时,默认的优先级顺序如下:

    外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断

    关于外部中断的寄存器已经了解清楚了,接下来看代码设计:

    外部中断0(下降沿触发)

    /*-----------------------------------------------
      功能:外部中断0边沿触发
      现象:首先将P3.2口通过上拉电阻接到电源,保证在空闲时P3.2处于高电平;
           当外部中断信号输出口P3.2接到GND时,产生了一个下降沿信号,接到P0.0
           口的LED灯反转;若此后P3.2持续接到GND,LED只反转一次,这与电平触发
           有区别。
    ------------------------------------------------*/
    
    #include<reg52.h> 
    
    sbit LED=P0^0; //定义LED端口
    
    void DelayMs(unsigned char t)     //大致延时1mS
    {
     unsigned short T=500;
     while(t--)
     {
         while(--T);
     }
    }
    void INT0_init(void) //外部中断0初始化
    {
      LED=1;       //LED口初始值
      EA=1;          //全局中断开
      EX0=1;         //外部中断0开
      IT0=1;         //边沿触发
    }
    
    main()
    {
      INT0_init();
      while(1){
         //主循环
      }
    }
    
    //中断服务程序  interrupt 0 指明是外部中断0的中断函数
    /*
    interrupt 0  指明是外部中断0;
    interrupt 1  指明是定时器中断0; 
    interrupt 2  指明是外部中断1;
    interrupt 3  指明是定时器中断1;
    interrupt 4  指明是串行口中断;
    */
    void ISR_Key(void) interrupt 0 using 1
    {
     if(!INT0){
        DelayMs(10);       //防抖动
        if(!INT0){         
         LED=!LED;         //按下触发一次,LED取反一次
        }
     }
    }
    

    外部中断0(电平触发)

    /*-----------------------------------------------
      功能:外部中断0电平触发
      现象:首先将P3.2口通过上拉电阻接到电源,保证在空闲时P3.2处于高电平;
           当外部中断信号输出口P3.2接到GND时,产生了一个低电平信号,接到P0.0
           口的LED灯反转;若此后P3.2持续接到GND,LED会反复反转,这与边沿触
           发有区别。
    ------------------------------------------------*/
    
    #include<reg52.h> 
    
    sbit LED=P0^0; //定义LED端口
    
    void DelayMs(unsigned char t)     //大致延时1mS
    {
     unsigned short T=500;
     while(t--)
     {
         while(--T);
     }
    }
    void INT0_init(void) //外部中断0初始化
    {
      LED=1;       //LED口初始值
      EA=1;          //全局中断开
      EX0=1;         //外部中断0开
      IT0=0;         //电平触发
    }
    
    main()
    {
      INT0_init();
      while(1){
         //主循环
      }
    }
    
    //中断服务程序  interrupt 0 指明是外部中断0的中断函数
    /*
    interrupt 0  指明是外部中断0;
    interrupt 1  指明是定时器中断0; 
    interrupt 2  指明是外部中断1;
    interrupt 3  指明是定时器中断1;
    interrupt 4  指明是串行口中断;
    */
    void ISR_Key(void) interrupt 0 using 1
    {
      if(!INT0){
        DelayMs(20);       //防抖动
        if(!INT0){         
         LED=!LED;         //按下触发一次,LED取反一次
        }
     }
    }

    外部中断1(下降沿触发)

    /*-----------------------------------------------
      功能:外部中断1边沿触发
      现象:首先将P3.3口通过上拉电阻接到电源,保证在空闲时P3.3处于高电平;
           当外部中断信号输出口P3.3接到GND时,产生了一个下降沿信号,接到P0.0
           口的LED灯反转;若此后P3.3持续接到GND,LED只反转一次,这与电平触发
           有区别。
    ------------------------------------------------*/
    
    #include<reg52.h> 
    
    sbit LED=P0^0; //定义LED端口
    void DelayMs(unsigned char t)     //大致延时1mS
    {
     unsigned short T=500;
     while(t--)
     {
         while(--T);
     }
    }
    void INT1_init(void) //外部中断0初始化
    {
      LED=1;       //LED口初始值
      EA=1;          //全局中断开
      EX1=1;         //外部中断1开
      IT1=1;         //边沿触发
    }
    
    main()
    {
      INT1_init();
      while(1){
         //主循环
      }
    }
    
    /*
    interrupt 0  指明是外部中断0;
    interrupt 1  指明是定时器中断0; 
    interrupt 2  指明是外部中断1;
    interrupt 3  指明是定时器中断1;
    interrupt 4  指明是串行口中断;
    */
    void ISR_Key(void) interrupt 2 using 1
    {
     if(!INT1){
        DelayMs(10);       //防抖动
        if(!INT1){         
         LED=!LED;         //按下触发一次,LED取反一次
        }
     }
    }
    
    #endif

    外部中断1(电平触发)

    /*-----------------------------------------------
      功能:外部中断1电平触发
      现象:首先将P3.3口通过上拉电阻接到电源,保证在空闲时P3.3处于高电平;
           当外部中断信号输出口P3.3接到GND时,产生了一个低电平信号,接到P0.0
           口的LED灯反转;若此后P3.3持续接到GND,LED会反复反转,这与边沿触
           发有区别。
    ------------------------------------------------*/
    
    #include<reg52.h> 
    
    sbit LED=P0^0; //定义LED端口
    void DelayMs(unsigned char t)     //大致延时1mS
    {
     unsigned short T=500;
     while(t--)
     {
         while(--T);
     }
    }
    void INT1_init(void) //外部中断1初始化
    {
      LED=1;       //LED口初始值
      EA=1;          //全局中断开
      EX1=1;         //外部中断1开
      IT1=0;         //电平触发
    }
    
    main()
    {
      INT1_init();
      while(1){
         //主循环
      }
    }
    
    /*
    interrupt 0  指明是外部中断0;
    interrupt 1  指明是定时器中断0; 
    interrupt 2  指明是外部中断1;
    interrupt 3  指明是定时器中断1;
    interrupt 4  指明是串行口中断;
    */
    void ISR_Key(void) interrupt 2 using 1
    {
     if(!INT1){
        DelayMs(10);       //防抖动
        if(!INT1){         
         LED=!LED;         //按下触发一次,LED取反一次
        }
     }
    }
    

    以上四种模式,代码都是大同小异,比较一下就知道哪些是关键点了。

    注意点:

    • 上面的程序已经是测试过没有问题的,如果出现led不反转,那么检测一下电路,有一些集成了很多元件的开发板里面电路复杂,几个外围元件可能共用一个IO口,容易被干扰,以至于达不到想要的效果。最好还是买一个最小系统的单片机,所有IO独立出来。
    • 在选择“电平触发”模式下,因为低电平的持续时间比较长(虽然只是按一下,对于单片机来说已经持续很长),会出现反复进入中断,导致LED不会反转,解决方法就是在进入第一次中断后,先把该中断关闭掉并且用while循环,直到中断信号引脚退出低电平状态再打开中断并退出while循环,这么做缺点就是会阻塞在中断里面,可能导致主函数里面的程序不能及时运行。
    • 上面的代码比较简单,需要根据实验出现的问题进一步优化。
    • 外部中断还可以应用到检测波形的周期、占空比、频率以及红外接收处理,有兴趣可以试一下。

    仅供参考,错误之处以及不足之处还望多多指教。

    展开全文
  • 外部中断的边缘触发和电平触发

    千次阅读 2016-11-24 12:45:47
    MCS-51单片机中的边缘触发是指当输入引脚电平由高到低发生跳变时,才引起中断。而电平触发是指只要外部...这类中断方式下,需要在中断服务程序中设置指令,清除外部中断低电平状态,使之变为高电平。  边缘触发方式

            MCS-51单片机中的边缘触发是指当输入引脚电平由高到低发生跳变时,才引起中断。而电平触发是指只要外部引脚为低电平就引起中断。

            在电平触发方式下,当外部引脚的低电平在中断服务返回前没有被拉高时(即撤除中断请求状态),会引起反复的不需要的中断,造成程序执行的错误。这类中断方式下,需要在中断服务程序中设置指令,清除外部中断的低电平状态,使之变为高电平。

            边缘触发方式下,只有当中断输入引脚有由高电平向低电平的跳变才产生中断。因此,在这种方式下,即使在中断返回后中断输入引脚还为低电平也不会引起再次中断。在构建中断系统中,采用这种中断方式的较多。

    展开全文
  • 外部中断可以分为电平触发和边缘触发两种,那么这两种中断有什么区别,我们今天讲解下 1什么是中断 CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理...
  •  如果是低电平触发,那么在低电平时间内中断一直有效;因此如果在电平没有恢复之前中断程序就已经执行完成从而退出,那么会在退出后又再次进入中断;但只要中断没有退出是不会重复触发的。所以,电平触发方式适合于...
  •  如果是低电平触发,那么在低电平时间内中断一直有效;因此如果在电平没有恢复之前中断程序就已经执行完成从而退出,那么会在退出后又再次进入中断;但只要中断没有退出是不会重复触发的。所以,电平触发方式适合于...
  • 51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器...
  • Linux中断的沿触发和电平触发

    千次阅读 2013-09-29 14:28:18
    Linux中断的沿触发和电平触发   初始化中断向量表时,有一个重要的操作就是set_irq_handler。这个函数参数一般handle_edge_irq或者handle_level_irq。对于边缘中断,使用handle_edge_irq作参数;对于电平中断,...
  • 目前STM32广泛用于各种平台,功能强大,使用简单。...STM32外部中断触发方式都是边沿触发,如下: EXTI_Trigger_Rising = 0x08, EXTI_Trigger_Falling = 0x0C, EXTI_Trigger_Rising_Falling...
  • 上一篇的最后一个例子中有用到函数,其实一直出现在例子中的 main()也算是一个函数,只不过它比较特殊,编译时以它做程序的开始段。有了函数 C 语言就有了模块化的优 点,一般功能较多的程序,会在编写程序时把每...
  • 以高电平触发和上升沿触发的两种中断说明。 当高电平时,产生中断,进入ISR,处理完之后,如果仍然还有高电平,会继续进入ISR。 上升沿出发,为了能够让NVIC可以检测到这个中断,对该上升沿的时隙也是有要求的,...
  • stm32中断电平触发的解决办法

    千次阅读 2016-04-04 14:42:39
    这几天在用stm32读取FPGA中FIFO里的数据,遇到了不少的问题。...网上也看了看,有人为电平触发中断没有什么意义,没必要用。也有人的想法相反。接下来我就不废话了,直接开始讲我遇到的这个问题以及怎么解
  • STM32外部中断触发

    千次阅读 2020-10-21 16:50:49
    最近在做一个关于USB PD快充的项目,在使用外部中断的时候遇到了一个奇怪的问题,一使能中断就直接触发外部中断,进去了中断服务函数。 引脚配置是高电平,上拉;也量了引脚的电平,是一个持续的高电平,并没有...
  • STM8 IO外部中断设置问题(使用库函数...在之后的程序里面,设置打开IO口外部中断,并设置触发电平,代码如下:(坑在这里,注意!!!) GPIO_Init(PORT_BLE_STA, PIN_BLE_STA, GPIO_Mode_In_PU_IT);//上拉,开中...
  • 8051外部中断0解析

    千次阅读 2019-07-23 10:23:44
    程序实现功能: 在实验板上左下方有一个黑色的独立按键(K3), 当我们按下它时, ...当进入中断处理函数执行时, 若P32引脚的电平为低电平, 则说明K3按键已按下; 若P32引脚的电平高电平, 说明K3按键已抬起. "低电平触...
  • 单片机中断的解释.ppt

    2021-05-21 15:17:56
    中断 CPU和外设并行工作,当外设数据准备好( 或有某种突发事件发生)时向CPU提出请求,CPU暂停正在执行的程序转而该外设服务(或处 理紧急事件),处理完毕再回到原断点继续执行原程序。 中断源 引起中断的原因,中断...
  • STM8S003单片机上,用按键口做为外部中断触发,实现按键按下LED指示灯翻转效果。
  • 边沿触发和电平触发的区别当然不一样了电平触发是在高或低电平保持的时间内触发,而边沿触发是由高到低或由低到高这一瞬间触发追问:我总觉得都是在电平某一值是而触发的。那边沿触发到底解决了电平触发哪点没有...
  • 用C编程,设置两个外部中断(INT0和INT1)按键,优先级IP=0x04,即把外部中断1设置为高级优先级,外部中断0为低级优先级,使外部中断1嵌套在外部中断0中。 要求:中断触发方式为下降沿触发,按键有消抖功能 仿真 ...
  • 外部中断一、ARM Cortex-M3 的中断体系二、代码思路函数接口1.引脚选择使用哪个中断2.配置外部中断3.中断优先级配置4.获取外部中断状态5.清空外部中断标志位中断优先级1.概述2.抢占优先级与响应优先级区别 一、ARM...
  • 下降沿中断低电平中断

    千次阅读 2013-08-01 16:44:58
    如果是低电平触发,那么在低电平时间内中断一直有效;因此如果在电平没有恢复之前中断程序就已经执行完成从而退出,那么会在退出后又再次进入中断;但只要中断没有退出是不会重复触发的。所以,电平触发方式适合于...
  • 编写程序学习外部中断电平触发方式。无中断时发光让发光二极管从左到右依次点亮,有外部中断请求时,4位数码管从0000开始加1显示(加到9999后复位0000),同时蜂鸣器报警。 程序: #include<reg51.h> #...
  • C51单片机外部中断触发方式

    千次阅读 2020-06-23 15:30:25
    ○ CPU响应中断后,会硬件将IE清0(IE=0),但是不会取消掉外部中断引脚的低电平,因此需要硬件加软件清除低电平(p133) 2. 下降沿触发方式 ○ CPU采样外部中断的引脚电平 ○ 如果上一个机器周期电平高,下...
  • 51单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器...
  • 代码部分 void main() ... //=0为低电平触发,=1为下降沿触发 EX1=1; //外部中断允许位 while(1) { led1=0; } } void int1() interrupt 0 { led=~led1; } 解释: 1.外部中断
  • INT0外部中断0,由P32端口线引入,低电平或下降沿触发中断。 INT1—外部中断1,由P33端口线引入,低电平或下降沿触发中断。 T0—定时器/计数器0中断,由T0计数器计满回零引起。 T1—定时器/计数器1中断,由T1...
  • 边沿触发与电平触发的区别

    万次阅读 2018-09-14 17:54:34
    1、边沿触发 边沿触发包括上升沿触发和下降沿触发,边沿触发检测的是电平变化,高电平转低电平或低电平转高电平时,触发一次中断。 边沿沿触发是锁存中断信号的,由D...电平触发分为高电平触发和低电平触发;电...
  • 换句话说,要使电平触发的中断被CPU响应并执行,必须保证外部中断源口线的低电平维持到中断被执行为止。因此当CPU正在执行同级中断或更高级中断期间,产生的外部中断源(产生低电平)如果在该中断执行完毕之前撤销...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,704
精华内容 3,481
关键字:

外部中断0设置为低电平触发