编码器程序

试验目的:通过连续记录输入信号的两个上升沿,用该程序可以计算出输入信号的频率;同时,利用脉冲累加器可以记录输入脉冲数。

#include /* common defines and macros */

#include /* derivative information */

#pragma LINK_INFO DERIVATIVE "mc9s12dp256b"

int count=0;

float f;

double f1=2000000,first=0,second=0,n,N;

void main(void)

{

DisableInterrupts; //禁止全局中断

TSCR2=0X82; //计时器系统控制寄存器 0X80计时器溢出中断使能 0x02计数

器预分频为四分频

PACTL=0X20; //脉冲累加器A 控制寄存器 0X20脉冲累加器溢出中断允许位 TIOS=0XFE; //IC/OC 选择寄存器 0xfe 设定pt0输入捕捉口

TCTL4=0X01; //控制寄存器 0X01输入捕捉边沿设为仅捕捉上升沿

ICSYS=0X0A; //输入系统控制寄存器 标志设置方式控制位 0x80为1表示在所

有其他的输入捕捉情况下,PTn 引脚发生的有效外部事件将置

位中断标志,0x02 IC及PAC 保持寄存器。锁存方式由控制位

LATQ 设定,当位LATQ=1时,向寄存器MCCTL($26)中

的ICLAT 位写1,将导致捕捉寄存器和脉冲累加器将其中

数值转移到各自的保持寄存器。

PBCTL_PBEN=0X00;

ICPAR=0X01; //脉冲累加器B 控制寄存器 0x00 脉冲累加器B 禁止 //输入脉冲累加器控制寄存器 0x01 PA0EN=1 表示对应的8位

//脉冲累加器通道0使能

TIE=0X01; //计时器中断使能寄存器 0x01 输入捕捉/输出比较0中断使能 TSCR1=0X80; //计时器系统控制寄存器1 0x80 表示定时器使能,正常工作 EnableInterrupts; //使能全局中断

for(;;)

{; }

}

#pragma CODE_SEG __NEAR_SEG NON_BANKED

interrupt void CH0IC(void)

{

/****************************删掉***************************************

first= TC0H; // IC 保持寄存器 这些寄存器用于为相应的捕捉寄存器提供锁存功能 second=TC0; // IC/OC寄存器 每个IC 或OC 通道都设置有一个16位的寄存器,

对//于IC 通道,当通道的边沿探测器检测到由EDGnA ,EDGnB 指定的

//条件时,//将自由定时器的值捕捉到寄存器TC

n=count*65535+second-first;

f=f1/n;

*************************************************************************/ N=PA0H; //脉冲累加器保持寄存器 用于为Pan 提供锁存功能

TFLG1=0X01; //0x01 IC/OC通道中断请求标志 为1表示IC/OC通道已经出现动作

count=0;

}

interrupt void TOI(void) {

count++;

TFLG2_TOF=1; } //定时器溢出标志 当16位自由定时器从FFFF 回滚到0000时,该位置位,将80写入到TFLAG2将自动清除该位。

试验目的:通过连续记录输入信号的两个上升沿,用该程序可以计算出输入信号的频率;同时,利用脉冲累加器可以记录输入脉冲数。

#include /* common defines and macros */

#include /* derivative information */

#pragma LINK_INFO DERIVATIVE "mc9s12dp256b"

int count=0;

float f;

double f1=2000000,first=0,second=0,n,N;

void main(void)

{

DisableInterrupts; //禁止全局中断

TSCR2=0X82; //计时器系统控制寄存器 0X80计时器溢出中断使能 0x02计数

器预分频为四分频

PACTL=0X20; //脉冲累加器A 控制寄存器 0X20脉冲累加器溢出中断允许位 TIOS=0XFE; //IC/OC 选择寄存器 0xfe 设定pt0输入捕捉口

TCTL4=0X01; //控制寄存器 0X01输入捕捉边沿设为仅捕捉上升沿

ICSYS=0X0A; //输入系统控制寄存器 标志设置方式控制位 0x80为1表示在所

有其他的输入捕捉情况下,PTn 引脚发生的有效外部事件将置

位中断标志,0x02 IC及PAC 保持寄存器。锁存方式由控制位

LATQ 设定,当位LATQ=1时,向寄存器MCCTL($26)中

的ICLAT 位写1,将导致捕捉寄存器和脉冲累加器将其中

数值转移到各自的保持寄存器。

PBCTL_PBEN=0X00;

ICPAR=0X01; //脉冲累加器B 控制寄存器 0x00 脉冲累加器B 禁止 //输入脉冲累加器控制寄存器 0x01 PA0EN=1 表示对应的8位

//脉冲累加器通道0使能

TIE=0X01; //计时器中断使能寄存器 0x01 输入捕捉/输出比较0中断使能 TSCR1=0X80; //计时器系统控制寄存器1 0x80 表示定时器使能,正常工作 EnableInterrupts; //使能全局中断

for(;;)

{; }

}

#pragma CODE_SEG __NEAR_SEG NON_BANKED

interrupt void CH0IC(void)

{

/****************************删掉***************************************

first= TC0H; // IC 保持寄存器 这些寄存器用于为相应的捕捉寄存器提供锁存功能 second=TC0; // IC/OC寄存器 每个IC 或OC 通道都设置有一个16位的寄存器,

对//于IC 通道,当通道的边沿探测器检测到由EDGnA ,EDGnB 指定的

//条件时,//将自由定时器的值捕捉到寄存器TC

n=count*65535+second-first;

f=f1/n;

*************************************************************************/ N=PA0H; //脉冲累加器保持寄存器 用于为Pan 提供锁存功能

TFLG1=0X01; //0x01 IC/OC通道中断请求标志 为1表示IC/OC通道已经出现动作

count=0;

}

interrupt void TOI(void) {

count++;

TFLG2_TOF=1; } //定时器溢出标志 当16位自由定时器从FFFF 回滚到0000时,该位置位,将80写入到TFLAG2将自动清除该位。


相关文章

  • 光电编码器
  • 1 光电编码器的工作原理 光电编码器(Optical Encoder)俗称"单键飞梭",其外观好像一个电位器,因其外部有一个可以左右旋转同时又可按下的旋钮,很多设备(如显示器.示波器等)用它作为人机交互接口.下面以美国G ...查看


  • 台湾新代数控系统新代控制器警报说明文件V2.2
  • 新代控制器警报说明文件 版 本:V2.2 作 者:黄炯尧 修订日期:2006/05/17 版本更新记录 项次 1 2 3 MOT –020 MOT-001 OP COR 增加部份COR 说明 更改内容纪录 更改日期 2005/04/01 2 ...查看


  • UTM107松下伺服电机闭环控制卡
  • UTM107万能材料试验机伺服电机频率控制卡与测试软件 闭回路模糊控制 控制更精准 控制指令内建与控制卡 控制速度更快更平稳 调试更简单 定速度.定位移.定荷重.定荷重速率.定应力速率.定应力.定应变速率.定应变.应力速率→应变速率加之多种 ...查看


  • 213卷积码编码和译码
  • No.15 (2,1,3)卷积码的编码及译码 摘要: 本报告对于(2,1,3)卷积码原理部分的论述主要参照啜刚教材和课件,编程仿真部分绝对原创,所有的程序都是在Codeblocks 8.02环境下用C语言编写的,编译运行都正常.完成了卷积码 ...查看


  • 通信工程设计
  • AMI编译码程序设计 一.预备知识 1. quartus II软件的使用方法. 2. verilog语言知识. 3. 通信原理课本中关于AMI编译码部分的知识. 二.实验目的 1. 验证二次开发例程,了解用FPGA实现AMI编译码的方法. ...查看


  • 交流异步电动机转速闭环控制系统设计论文
  • 2016届毕业设计说明书(论文) 交流异步电动机转速闭环控制系统设计 院 . 部:电气与信息工程学院 学生姓名: 刘泰波 指导教师:邓宝燕职称工程师 专 业:电气工程及其自动化 班 级:电气1205班 完成时间:2016年5月 摘 要 交流 ...查看


  • 伺服电机编码器零点调试仪的设计
  • 第45卷 2012年第3期3月 MICROMOTORS Vol.45.No.3Mar.2012 伺服电机编码器零点调试仪的设计 张静波,艾 摘 武 (华中科技大学数字制造装备与技术国家重点实验室,武汉430074) 要:介绍了一种可用于多种 ...查看


  • 红外遥控器的设计
  • 摘 要: 红外线遥控是目前使用最广泛的一种通信和遥控手段,电视机遥控器是红外遥控系统中的典 型代表.由于各厂家经常使用专用的遥控芯片,不同的遥控器之间互不兼容,因此给我们的生活带来一些不便.我的设计是使用常用的芯片AT89C52代替专用的遥 ...查看


  • 51单片机检测光电旋转编码器每周实际脉冲数
  • 程序代码 /****************************************************************** ** 文件名: main.c ** 创建人: 飘扬 ** 日 期: 2006.10.04 ** ...查看


  • 西门子高速计数器模块FM350-2使用方法
  • 1需安装FM350-2补丁后, 打开STEP7软件的LIBRARY 中的例子程序 打开程序后, 把程序块FC2,FC3,FC4,FC5,UDT1拷贝到你的程序下 生成DB1块,DB1类型要选定为UDT1, 2:硬件组态: 进入下图 点击BG ...查看


热门内容