手把手教你写S12XS128程序(25)--Timer模块应用实例2

发布者:温暖拥抱最新更新时间:2021-08-17 来源: eefocus关键字:S12XS128  工作方式 手机看文章 扫描二维码
随时随地手机看文章

输出比较(OC)编程步骤:


初始化函数


TIOS---选择工作方式为OC


TCx---通道x的OC寄存器赋初值,经过N秒后进入第一次中断


TCTLx---设置对应位输入捕捉的方式(x=1、2,高四位是1,低四位是2)


TSCRx---控制寄存器设置,包括工作使能、确定工作方式(x=1)、中断允许、预分频


TIE---中断使能


中断函数


清除标志位---TFLG1


重新赋初值TCx


【例程4】

//---------------------------------------------------------------------------//


//功能说明:利用PT0的输出比较功能,定时进入中断


//          利用PORTB显示定时的时间


//程序设计:电子设计吧


//设计时间:2010.01.15


//---------------------------------------------------------------------------//


#include       /* common defines and macros */


#include      /* derivative information */


#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"


 


//利用定时器输出比较功能产生定时中断


//----------------------变量定义----------------------//


static unsigned int waittime = 0;


 


//---------------------时钟初始化-------------------//


void PLL_Init(void)      //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)


{                     //锁相环时钟=2*16*(2+1)/(1+1)=48MHz


  REFDV=1;            //总线时钟=48/2=24MHz


  SYNR=2;


  while(!(CRGFLG&0x08));


  CLKSEL=0x80;


}


//--------------------定时器初始化------------------//


void ECT0_Init(void)


{


  TIOS=0x01;    //定时器通道0设置为输出比较 


  TC0=0x00ee;   //赋初值,当TCNT从0计数到此值时第一次进入中断


  TCTL2=0x02;  //其他七路与定时器断开   执行的动作时:0通道输出清零


  TSCR2=0x86   //溢出中断禁止   24M/64=2.67微秒,计一个数用2.67微秒


  TSCR1=0x80;  //使能定时器


  TIE=0x01;     //通道0输出比较中断允许


}


//-----------------------主函数------------------------//


void main(void) 


{


  PLL_Init();


  ECT0_Init();


  DisableInterrupts;


  DDRB=0xff;


  PORTB=0x00;


  for(;;) 


  {


    EnableInterrupts;


  } 


}


//-----------------------中断函数处理-------------------//


#pragma CODE_SEG NON_BANKED


void interrupt 8 Timer0_ISR(void) //8为定时器通道0的中断标号


{


  unsigned int m;


  TFLG1_C0F=1;//清中断标志位


  DisableInterrupts; 


  m=TCNT;


  TC0=m+37500; //37500*2.67us=10ms定时时间


  waittime++;


  if(waittime>=255) 


  {


    waittime=0; 


  }


  PORTB=waittime;


}


关键字:S12XS128  工作方式 引用地址:手把手教你写S12XS128程序(25)--Timer模块应用实例2

上一篇:PB口驱动的LED以每秒一次的频率循环闪烁
下一篇:手把手教你写S12XS128程序(17)--Timer模块介绍1

推荐阅读最新更新时间:2024-11-05 15:26

激光导航移动机器人工作方式大揭秘
伴随移动机器人(AGV)产业快速发展,导航移动机器人以其自主、灵活、高效、精准的优势成为市场上最受欢迎的移动机器人产品,并在工业制造、医疗教育、商用服务等诸多领域广泛应用。在移动互联网及各大新媒体平台的作用下,激光导航移动机器人产品逐渐走进大众视野,成为人们生活中的屡见不鲜的“新物种”。但是对绝大多数的普通大众而言,激光导航移动机器人是如何工作的,好似成为了新的世界未解之谜,让大家百思不得其解。 今天,小编就带大家来揭开这个“未解之谜”。 激光导航移动机器人要想完成作业任务,首先得解决这三个基本问题:“我在哪儿?”、“我要到哪里去?”、“我应该怎样去?”。而要解决这三个问题就需要对移动机器人进行定位、建立地图及路径规划。
[机器人]
趣解CAN总线的工作方式
  现实中,如果两个人同时说话,怎样来决定谁先说呢?有时候是嗓门最大的先说,而这基本上也是控制器局域网 (CAN) 总线的工作方式。   在一条CAN总线中,所有收发器发出消息的优先级(从最低有效位 (LSB) 到最高有效位 (MSB));最高优先级的消息将被发送。特别是对于CAN来说,如果两个收发器同时发送,他们都“张开嘴” 说一个“0”(逻辑高电平);数值越低,这条消息的重要性越高。换句话说,如果两个收发器都在“喊”,首先“闭嘴”的收发器必须等到另外一个收发器完成发送之后才能说话。整个过程被称为仲裁,更确切的说是非破坏性仲裁。   在设计通信系统时,你可以随意使用很多稳健的语言。其中的一些表达方式比较成熟并且意思明
[嵌入式]
51单片机串行口的工作方式解析
方式0是外接串行移位寄存器方式。工作时,数据从RXD串行地输入/输出,TXD输出移位脉冲,使外部的移位寄存器移位。波特率固定为fosc/12(即,TXD每机器周期输出一个同位脉冲时,RXD接收或发送一位数据)。每当发送或接收完一个字节,硬件置TI=1或RI=1,申请中断,但必须用软件清除中断标志。 实际应用在串行I/O口与并行I/O口之间的转换。 2)方式1 方式1是点对点的通信方式。8位异步串行通信口,TXD为发送端,RXD为接收端。一帧为10位,1位起始位、8位数据位(先低后高)、1位停止位。波特率由T1或T2的溢出率确定。 在发送或接收到一帧数据后,硬件置TI=1或RI=1,向CPU申请中断;但必须用软件清除中断
[单片机]
51单片机串行口的<font color='red'>工作方式</font>解析
51单片机串口工作方式O在扩展并行输出口中的应用
  一、系统工作原理      下图是一款1分钟-24小时定时时间可调的时间控制器,其印制电路板如右图所示。该控制器以AT89C2051单片机为核心,采用12MHz晶振,用内部定时器TO产生5ms时钟信号,由软件处理成分钟、小时段码数据,从串口RXD(P3.0)、TXD(P3.1)经IC2(74HC164)进行串/并转换后,送四位共阳极数码管Ul~U4的a~h端。显示采用动态扫描方式,P14~P1.7分别用作小时十位U1、个位U2,分钟十位U3、个位U4的位选,74HC04用作数码管的位驱动。U2的小数点(h段)用作秒闪。控制器以5s为一个显示周期,前3s显示已走时间,后2s显示剩余时间。显示剩余时间时,发光二极管LED1点亮。S
[单片机]
51单片机串口<font color='red'>工作方式</font>O在扩展并行输出口中的应用
mcs-51单片机T0、T1的四种工作方式功能及定时初始值计算
1、 方式0 当位M1M0=00时。T为13位计数器,THi是高8位,TLi是低5位。 设计数值为N,则计数初值X=2^13-N;2^13=8192=2000H 例1:设fosc=6MHz,要求用T1的方式0定时10ms,求TH1、TL1的初值。 设计数初值为X;由已知条件得:1个机器周期=12/fosc=2us; 10,000us=12/fosc*(2^13-X)us X=2^13-10000/2=8192-5000=3192=0C78H 得:TL1=18H,TH1=63H 2、 方式1 当位M1M0=01时。T为16位计数器,THi是高8位,TLi是低8位。 设计数值为N,则计数初值X=2^16-N;2^16
[单片机]
详解单片机串口通信
串口通信是单片机一个重要的部分,单片机和PC,单片机和单片机之间的通信大都用串口。单片机的串口是全双工异步串口通信方式。通过TXD(P3.1)发送,RXD(P3.0)引脚接收输入。串口传送数据是一帧一帧发送的,它有四种工作方式,同时也可以做并行I/O的扩展。 图上是串口的结构图。 SBUF是数据缓冲寄存器,发送和接收用的是一个地址,但是不用担心冲突,读只能从接收缓冲区,写只能在发送缓冲区里。 寄存器SCON(SM0 SM1 SM2 REN TB8 RB8 TI RI) SM0和SM1: 工作方式选择(0-3),方式1和方式3使用T1产生波特率,方式0和方式2是固定速率。 SM2 :在方式2和方式3
[单片机]
详解单片机串口通信
MCS-51单片机串行口工作方式与波特率计算举例
1)方式0 方式0是外接串行移位寄存器方式。工作时,数据从RXD串行地输入/输出,TXD输出移位脉冲,使外部的移位寄存器移位。波特率固定为fosc/12(即,TXD每机器周期输出一个同位脉冲时,RXD接收或发送一位数据)。每当发送或接收完一个字节,硬件置TI=1或RI=1,申请中断,但必须用软件清除中断标志。 实际应用在串行I/O口与并行I/O口之间的转换。 2)方式1 方式1是点对点的通信方式。8位异步串行通信口,TXD为发送端,RXD为 接收端。一帧为10位,1位起始位、8位数据位(先低后高)、1位停止位。波特率由T1或T2的溢出率确定。 在发送或接收到一帧数据后,硬件置TI=1或RI=1,向CPU申请中断;但必
[单片机]
《初学者C51自学笔记》之定时器四种工作方式(二)
1、方式0 : 方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。 一共13位,空着的3位忽略不用管,TL0一直加1,直到为11111时再加1会溢出变为00000,则会进1到TH0,就像是满10进1一样,进到TH0为11111111时再加1就会发出请求; X=-N:N是要定时的时间(us),X是初值,也就是输入到里面的时间。 2、方式1 : 计数位数是16位,由TL0作为低8位,TH0 作为高8位,组成了16位加1计数器 。 工作与方式0类似(其实四中工作原理都一样); 3、方式2:
[单片机]
《初学者C51自学笔记》之定时器四种<font color='red'>工作方式</font>(二)
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved