智能车制作

标题: XS128代码: 输入捕捉中断输出2ms频宽负脉冲2次,间隔18ms(转发) [打印本页]

作者: demon    时间: 2012-10-13 12:37
标题: XS128代码: 输入捕捉中断输出2ms频宽负脉冲2次,间隔18ms(转发)
作者:zwxclark

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#include "mc9s12xs128.h"

//延时模块
void delayms(int ms)
{
  int a;  
  for(a=0;a<ms;a++)
{
while(TCNT==0x0000);
while(TCNT==0x0000);
while(TCNT==0x0000);
}
}

//输入捕捉通道0初始化函数
void ECT0_INIT()  
{
TSCR1=0X80;      //开启总定时器中断
TSCR2=0X00;      //关闭溢出中断且64分频
TIOS_IOS0=0;     //定通道0为输入捕捉,1为输出比较IOC0
TCTL4=0X01;      //上升沿捕捉  0x02为下降沿捕捉
TIE_C0I=1;       //通道0中断使能
TFLG1_C0F=1;     //标志位清零
}   

//中断程序:
#pragma CODE_SEG __NEAR_SEG NON_BANKED  //分配内存空间
void interrupt 8 timer_onput()          //输入捕捉通道0的中断向量为8
{

  TFLG1_C0F=1;   //标志位清零
  asm sei;       //关总中断

  PTM = 0x0e;    //e=1110点亮D0
  delayms(641); //延时20ms
  PTM = 0x0f;
  delayms(5769); //延时20ms
  PTM = 0x0e;    //e=1110点亮D0
  delayms(641); //延时20ms
  PTM = 0x0f;
  //PTM = 0x0d;    //d=1101点亮D1
  //delayms(6410);

  //PTM = 0x0b;    //b=1011点亮D2
  //delayms(6410);

  //PTM = 0x07;    //7=0111点亮D3
  //delayms(6410);

  TIE_C0I=0;     // 禁止通道0中断使能,使中断只响应一次
  asm cli;       //开总中断

}

//主函数
void main(void) {

  DDRM |=0x0f;
  PTM  |=0x0f;   //初始全亮
  ECT0_INIT();
  EnableInterrupts;
  for(;;) {

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

  /* please make sure that you never leave main */
}




作者: 嘸敵,尒骉垯    时间: 2012-11-24 18:51
为什么没人回帖呢?
作者: 嘸敵,尒骉垯    时间: 2012-11-24 18:51
难道给我个机会坐沙发。。。
作者: baiyunhuibaiyun    时间: 2013-3-2 22:34





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2