MC9S12G128 外部中断 按键中断

前几天我一直在学习其他的的单片机和跟测试组走流程,一直没空认真专研一下我第一次进公司的这块板子。当时只是专研了一些基础功能,我就以为我掌握得差不多了。但是昨天老大说的话才真是当头一棒,这块单片机的功能可不仅仅是中断、按键、定时器等。那些难的SPI、旋钮的识别、延迟函数、片区擦除、看门狗、CAN总线等,LCD点阵显示等。我才发现这么多东西要学,这块板子都未掌握就想着其他单片机,是不是有点好高骛远了。闲扯了这么多,就是总结一下,贵精不贵多。

上代码:

void EXIT_INIT(){
    DDRJ_DDRJ2 = 0;            //输入模式
    PERJ_PERJ2 = 1;            //设置PP2口设备启用
    PPSJ_PPSJ2 = 0;            //设置为上拉,下降沿触发 这里需要注意一下,这个按键是否有上拉或者下拉,要查看寄存器手册
    PIEJ_PIEJ2 = 1;             //设置中断使能
}
 #pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt VectorNumber_Vportj void IRQ_ISR(void)       
{ 
  DisableInterrupts;                  //关闭中断  
                  
  PIFJ_PIFJ2 = 1;                     //清除PP0的中断标志位
  
  PTP = 0xFF;                      //关闭LED
                                    //延时以至于可以观察到效果
  EnableInterrupts;                   //打开中断
} 

 #pragma CODE_SEG DEFAULT

void main(void) {
  /* put your own code here */
  DDRP =   0XFF; //P组小灯设置为输出
  //中断初始化
  EXIT_INIT();
  EnableInterrupts;


  for(;;) {
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */

寄存器解读

① DDRJ_DDRJ2

本次使用的按键是J2,所以要将J2设置为输入模式

②PERJ_PERJ2 端口J拉动设备启用寄存器

输入时启用拉动装置

该位控制相关端口输入引脚上的拉动设备是否激活。如果使用引脚作为输出,则该位无效。

1拉动设备已启用

0拉动设备已禁用

综上所述,我们应该启用该引脚上的按键设备,激活上拉设备,(设备是否为上拉由寄存器PPSJ决定或者芯片引脚说明图)

③PPSJ_PPSJ2 端口J极性选择寄存器

上拉和下拉的选择主要靠寄存器手册进行查看

1 选择下拉电阻;上升沿触发

0 选择上拉电阻;下降沿触发

④PIEJ_PIEJ2 中断使能

⑤PIFJ_PIFJ2 标志位清空

如果设置了相关的中断启用位,则会发生中断

将逻辑“1”写入相应的位字段将清除

特别说明一下,这个J组的中断向量就是 :VectorNumber_Vportj

如果你是使用CodeWarrior的图形化编程生成的中断是不一样的,他进行二次封装,直接在配置文件中生成你定义的中断,我之前看的时候就是没找到他是怎么使用系统的中断向量的,好像是直接使用汇编生成的吧。我也有点不确定。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值