MC9S12G128 IOC(输入捕获)配置

本文详细介绍了MC9S12G128的两种IOC(输入捕获)模式:自动累加(仅限IOC7)和中断手动计数(适用于所有IOC引脚)。通过配置PACTL、TCTL、TIOS和TSCR1寄存器,实现了捕获输入信号并处理中断。在自动累加模式下,读取PACNT寄存器获取累加值;而在中断模式下,通过设置中断服务函数处理捕获事件。
摘要由CSDN通过智能技术生成

MC9S12G128  的IOC有两种模式,

第一种是使用定时器累加的方式对捕获输入(只有ioc7可以实现这个功能),

第二种是对应引脚一有捕获就立即产生中断手动记数(所有的ioc引脚都可以实现这个功能)


第一种 自动累加(只有ioc7可以实现这个功能)

static void IOC_Init(void)
{   
    PACTL=0X50;// 使能累加器让
    TCTL3=0x80;TCTL4=0x00;//设定引脚捕捉何种类型的情况,有上升沿下降沿,还有一起。
    TIE_C7I  =0;//禁止ioc7中断
    TIOS_IOS7 =0;//设定ioc7为输入捕获
    TSCR1_TEN=1;//打开定时器模块 

设定完毕后只要去读取PACNT寄存器就可以得到累加器里面的值。

第二种 中断手动记数(所有的ioc引脚都可以实现这个功能)

void IOC_Init(void)
{  
  TSCR1_TEN=0;//关闭定时器模块
  TIOS_IOS6 =0;//设置ioc6为输入
  TCTL3_EDG6A = 0;//设置ioc6为输入捕获
  TCTL3_EDG6B = 1;//设置ioc6为输入捕获  
  TIE_C6I=1;///使能中断
  TSCR1_TEN=1;//打开定时器模块  
}  


#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt VectorNumber_Vtimch6 OSC_ISR(void)
{
   DisableInterrupts; 
  
     TFLG1_C6F=1;//清除中断标志位。
    
    
    EnableInterrupts;
}
#pragma CODE_SEG DEFAULT


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值