打印
[通用8051核FLASH系列]

【HC89S003P套件试用】5、外部中断INT2测试

[复制链接]
786|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tlled|  楼主 | 2019-3-17 17:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 芯圣电子官方QQ 于 2023-7-24 15:04 编辑

    上一篇使用外部中断1做了测试,HC89S003P还有其他14个外部中断可以使用,2-7共用一个中断地址,8-15共用一个中断地址,下面使用INT2来测试下外部中断

    一、手册里相关的寄存器设置

     1.1、芯片引脚
        INT2使用的引脚是P0.2。
   
    1.2、外部中断电平选择寄存器选择
   
    1.3、外部中断2使能
   
    1.4、外部中断标志位,进入中断后要清除此标志位
   

    二、程序部分


//main.c
#define ALLOCATE_EXTERN

#include "config.h"

//系统初始化
void SystemInit(void)
{
        /************************************系统初始化****************************************/
        WDTCCR = 0x00;                                                //关闭看门狗
        while((CLKCON&0x20)!=0x20);                        //等待内部高频RC起振
        CLKSWR = 0x51;                                                //选择内部高频时钟为主时钟,内部高频RC2分频,Fosc=16MHz
        while((CLKSWR&0xC0)!=0x40);                        //等待内部高频切换完成
        CLKDIV = 0x01;                                                //Fosc1分频得到Fcpu,Fcpu=16MHz
}

void main(void)
{
//        uint i;
        SystemInit();                //系统初始化
        Init_Port();                //端口初始化
        //EintInit();                        //外部中断初始化
        INT2_7_Init();        //外部中断2-7初始化
        //CCO_Init();                //CCO输出
        
        while(1)
        {
        }
}


#include "config.h"

//外部中断初始化
void EintInit(void)
{
        //外部中断0设置
        PITS0 =PITS0&0xf3;                                
        PITS0 |=0x04;                                                //INT1下将沿中断
        INT01_PINS = 0x00;                        //INT1选择P01端口                                
        EX1=1;                                                                        //打开INT1中断
        EA = 1;                                                                        //打开总中断
}

//外部中断1入口
void Eint1()interrupt INT1_VECTOR
{
        PINTF0 &= ~0x02;                        //清除INT1中断标志位
        P0_0 =~P0_0;
}


//外部中断2_7中断初始化
void INT2_7_Init(void)
{
        PITS0  &= 0xcf;                                                                        
        PITS0  |= 0x30;                                                                        //INT2上下升沿中断
        PINTE0 |= 0x04;                                                                        //使能INT2
        IE1 |= 0x40;                                                                                //打开INT2-7中断
        EA = 1;                                                                                                        //打开总中断
}

//外部中断2-7入口
void INT2_7() interrupt INT2_7_VECTOR
{
                if(PINTF0&0x04)
                {
                        PINTF0 &= ~0x04;                        //清除INT2中断标志位
                        P0_0 =~P0_0;
                }        
}

    程序源码: HC89S003F4_TEST-INT2.rar (89.12 KB)

    三、执行结果

    P0.2上升和下降沿进入中断,触发LED反转,这里测试了INT2,其他的中断使用和这个方法一样 。



沙发
零三翟邢止胃| | 2019-3-18 09:44 | 只看该作者
赞一个啊!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

125

主题

691

帖子

6

粉丝