智能车制作
标题:
菜鸟求助关于ECT的中断优先级问题
[打印本页]
作者:
飞思卡尔835
时间:
2011-9-28 21:30
标题:
菜鸟求助关于ECT的中断优先级问题
请问各位大侠 下面的程序到底是怎么执行的 有中断的优先级吗?哪个优先级更高呀!
程序是这样的
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#pragma LINK_INFO DERIVATIVE "mc9s12xdg128"
int count=0;
float f;
double f1=2000000,first=0,second=0,n,N;
void main(void)
{
DisableInterrupts;//关闭中断
TSCR2=0x82;//定时器控制寄存器2 定时器溢出中断允许 禁止复位 计数器自由计数 4分频
PACTL=0x20;//16位脉冲累加器A控制寄存器 脉冲累加器模式寄存器置1(PAMOD) PAEN=1时候
//两个八位的脉冲累加寄存器组成16 PAMOD寄存器设置的是这个16累加器的工作模式
TIOS=0xfe;//通道选择寄存器 除了0通道设置为输入捕捉 其他通道全部使能为输出比较
TCTL4=0x01;//通道0仅在上升沿捕捉
ICSYS=0x0a;//控制系统控制寄存器 通道不结合 BUFEN=1 输入捕捉和脉冲累加寄存器有效
//TFMOD=1 如果是队列模式
PBCTL_PBEN=0x00;//16位脉冲累加器B控制寄存器 16位脉冲累加寄存器禁止使用
ICPAR=0x01;//脉冲累加器控制寄存器 只有在PBEN清零的时候
//8位脉冲累加器PAc1和PAC2才有作用 如果PAEB被置位则脉冲累加器不起作用
TIE=0x01;//定时器中断允许寄存器 相应位被置1则允许相应通道产生硬件中断
//此处设置0通道为1允许硬件中断
TSCR1=0x80;//定时器控制寄存器1 TEN=1 定时器正常工作
EnableInterrupts;
for(;;)
{;} //无限循环 停下来
}
#pragma CODE_SEG_NEAR_SEG NON_BANKED
interrupt void CH0IC(void) //检测两个高电平之间的时间 记录算出频率
{
first=TC0H;//IC保持寄存器 这些寄存器用于为相应的捕捉寄存器
//TC0-TC3提供锁存功能
second=TC0;//每个通道都有一个这样的16位寄存器 这个为0通道的寄存器
//对于 IC(输入捕捉)通道,
//当通道的边沿探测器检测到由 EDGnA、EDGnB指定的条件时,
//将自由定时器(说明里面存的是有效信号过来是的时间)的
//值捕捉到寄存器 TCn,随后程序可以读取和处理
n=count*65535+second-first;
f=f1/n;
N=PA0H;//脉冲累加器保持寄存器
TFLG1=0x01;
count=0;
}
interrupt void TOI(void)
{
count++;
TFLG2_TOF=1;
}
各位大侠帮帮满 刚接触单片机
作者:
飞思卡尔835
时间:
2011-9-28 21:30
大家都来看看呀
作者:
飞思卡尔835
时间:
2011-9-28 21:31
自己先顶一下 高手赶紧来啊 谢谢了啊
作者:
wanglichao
时间:
2011-9-28 21:48
这里貌似只启动了定时器通道0,不存在所谓的优先级问题吧
作者:
飞思卡尔835
时间:
2011-9-29 08:14
那怎么有两个中断呀?那怎么执行呢?望高手指点,谢谢了!
作者:
飞思卡尔835
时间:
2011-9-29 08:16
TOI和CHOIC是什么寄存器 怎么找不到呢?
作者:
飞思卡尔835
时间:
2011-9-29 09:48
刚刚搞明白了,TOI和CHOIC不是寄存器 是自己糊涂了 可是这个程序到底要怎么执行呢?还是不太明白呀!斑竹大侠来帮帮忙呀!新手不胜感激呀!
作者:
我の小车
时间:
2011-10-10 14:50
作者:
芸纤飘羽
时间:
2011-10-10 14:53
慢慢弄把】
作者:
飞思卡尔835
时间:
2011-10-10 21:05
N=PA0H;//脉冲累加器保持寄存器
TFLG1=0x01;
怎么理解呀?
作者:
飞思卡尔835
时间:
2011-10-17 18:10
作者:
禾火心
时间:
2011-11-24 14:27
我也想知道啊!有高手的一并指导一下啊
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2