您的位置:首页 > 健康 > 美食 > 网站用什么技术实现_微信小程序制作流程及费用_百度旗下推广平台有哪些_中国十大品牌营销策划公司

网站用什么技术实现_微信小程序制作流程及费用_百度旗下推广平台有哪些_中国十大品牌营销策划公司

2025/2/23 22:59:43 来源:https://blog.csdn.net/liyanfei123456/article/details/143428894  浏览:    关键词:网站用什么技术实现_微信小程序制作流程及费用_百度旗下推广平台有哪些_中国十大品牌营销策划公司
网站用什么技术实现_微信小程序制作流程及费用_百度旗下推广平台有哪些_中国十大品牌营销策划公司

/******************************************************************************

;  *       @型号                 : MC32F7361

;  *       @创建日期             : 2021.12.21

;  *       @公司/作者            : SINOMCU-FAE

;  *       @晟矽微技术支持       : 2048615934

;  *       @晟矽微官网           : http://www.sinomcu.com/

;  *       @版权                 : 2021 SINOMCU公司版权所有.

;  *----------------------摘要描述---------------------------------

;  *             外部中断

;  *             INT0 外部中断  P11下降沿触发,P14翻转一次

;  *             INT1 外部中断  P12上升沿触发,P10翻转一次                                               

******************************************************************************/

#include "user.h"

/************************************************

;  *    @函数名          : CLR_RAM

;  *    @说明            : 清RAM

;  *    @输入参数        :

;  *    @返回参数        :

;  ***********************************************/

void CLR_RAM(void)

{

    for (FSR0 = 0; FSR0 < 0xff; FSR0 ++)

    {

        INDF0 = 0x00;

    }

    FSR0 = 0xFF;

    INDF0 = 0x00;

}

/************************************************

;  *    @函数名            : IO_Init

;  *    @说明              : IO初始化

;  *    @输入参数          :

;  *    @返回参数          :

;  ***********************************************/

void IO_Init(void)

{

    IOP0 = 0x00;                       //io口数据位

    OEP0 = 0x3F;                       //io口方向 1:out  0:in

    PUP0 = 0x00;                       //io口上拉电阻   1:enable  0:disable

    PDP0 = 0x00;                       //io口下拉电阻   1:enable  0:disable

    P0ADCR = 0x00;                     //io类型选择  1:模拟输入  0:通用io

    IOP1 = 0x00;                       //io口数据位

    OEP1 = 0xF9;                       //io口方向 1:out  0:in

    PUP1 = 0x00;                       //io口上拉电阻   1:enable  0:disable

    PDP1 = 0x00;                       //io口下拉电阻   1:enable  0:disable

    P1ADCR = 0x00;                     //io类型选择  1:模拟输入  0:通用io

    IOP2 = 0x00;                       //io口数据位

    OEP2 = 0x0F;                       //io口方向 1:out  0:in

    PUP2 = 0x00;                       //io口上拉电阻   1:enable  0:disable

    PDP2 = 0x00;                       //io口下拉电阻   1:enable  0:disablea

    PMOD = 0x00;                       //P00、P01、P13 io端口值从寄存器读,推挽输出

    DRVCR = 0x80;                      //普通驱动

}

/************************************************

;  *    @函数名            : INT_Init

;  *    @说明              : 外部中断初始化

;  *    @输入参数          :

;  *    @返回参数          :

;  ***********************************************/

void INT_Init(void)

{

/*************INT0**************/  

//上面的表格可以看到MCR寄存器的BIT0和BIT1是设置INT0的中断触发方式,这里设置的是01,所以INT0为下降沿触发,BIT2和BIT3是设置INT1的触发方式,这里没有置位,那就是初始值,上面也说明了初始值都是0,所以INT1的触发方式就是上升沿触发。

   MCR |= DEF_SET_BIT0;                    //INI0下降沿触发

    

//这里要说明 一下,INT0对应的是P11口,INT1对应的是P12口,这个是芯片型号已经确定的,不可以更改。所以下面就是对P11的操作,将P11口设置为输入内部上拉,这样在没有外部输入的情况下,系统检查到的是高电平,然后设置为输入状态,这样就完成了配置。当外部有拉低的时候,就会把这个脚从高拉到低的过程,就是我们所说的下降沿。系统就可以检测到外部这个中断,然后进入到中断处理程序。

PUP1 |= DEF_SET_BIT1;                   //上拉

    OEP1 &= DEF_CLR_BIT1;                   //in

//INT0IF是中断标志位,产生中断的时候置1,需要手动清除,所以看到我们的中断处理程序就是通过这个标志位,来判断是否参数了INT0的中断。INT0IE是中断是能位,就先开关一样,要用先要把开关打开,不用就关闭这个功能,关闭了你配置其他的也用不了,就像插头开关都关了,上面接电饭煲是不可能煮饭或者煲汤的。

    INT0IF = 0;

    INT0IE = 1;                             //外部中断使能

    /*************INT1**************/  

    MCR &= ~(DEF_SET_BIT2 | DEF_SET_BIT3);  //INI1上升沿触发

    PDP1 |= DEF_SET_BIT2;                   //下拉

    OEP1 &= DEF_CLR_BIT2;                   //in

    INT1IF = 0;

    INT1IE = 1;                             //外部中断使能

}

/************************************************

;  *    @函数名            : Sys_Init

;  *    @说明              : 系统初始化

;  *    @输入参数          :

;  *    @返回参数          :

;  ***********************************************/

void Sys_Init(void)

{

    GIE = 0;

    CLR_RAM();

    IO_Init();

    INT_Init();

    GIE = 1;

}

/************************************************

;  *    @函数名            : main

;  *    @说明              : 主程序

;  *    @输入参数          :

;  *    @返回参数          :

;  ***********************************************/

void main(void)

{

    Sys_Init();

    while (1)

    {

    }

}

/************************************************

;  *    @函数名            : interrupt

;  *    @说明              : 中断函数

;  *    @输入参数          :

;  *    @返回参数          :

;  ***********************************************/

void int_isr(void) __interrupt

{

__asm

    movra _abuf

    swapar _PFLAG

    movra _statusbuf

__endasm;

    //=======外部中断0=================

    if (INT0IF & INT0IE)

    {

        INT0IF = 0;

        P14D =! P14D;

    }

    //=======外部中断1=================

    if (INT1IF & INT1IE)

    {

        INT1IF = 0;

        P10D =! P10D;

    }

__asm

    swapar _statusbuf

    movra _PFLAG

    swapr _abuf

    swapar _abuf

__endasm;

}

/**************************** end of file *********************************************/

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com