TC0与TC1的功能和使用方法是一样的,所以这里只介绍TC0

与定时器TC0相关的寄存器共有5个;TC0M,TC0C,INTRQ,INTEN,TC0R

一、TC0M模式寄存器

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

TC0M

TC0ENB

TC0rate2

TC0rate1

TC0rate0

TC0CKS

ALOAD0

TC0OUT

PWM0OUT

读/写

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

复位

0

0

0

0

0

0

0

0

Bit0;PWM0OUT;pwm输出控制位

0=禁止pwm0输出

1=使能pwm0输出,占空比由TC0OUT和ALOAD0决定

Bit1;TC0OUT;仅当PWM0OUT =0时有效

0=禁止,p54作为普通IO口使用

1=使能,p54输出TC0OUT信号

Bit2;ALOAD0,自动装载控制。仅当PWM0OUT = 0 时有效。

0 = 禁止 TC0自动装载;
1 = 使能 TC0 自动装载。

Bit3;TC0CKS:TC0 时钟信号控制位。
0 = 内部时钟(Fcpu或 Fosc);
1 = 外部时钟,由 P0.0/INT0输入。

Bit6~bit4;T0rate2~T0rate0;T0分频选择位

T0时钟由CPU时钟分频而来,分频比如下;

T0rate2~T0rate0

分频比

000

fCPU/256

001

fCPU/125

010

fCPU/64

011

fCPU/32

100

fCPU/16

101

fCPU/8

110

fCPU/4

111

fCPU/2

Bit7;T0ENB;T0使能位,

0=不使能

1=使能

注:若 TC0CKS=1,则TC0 用作外部事件计数器,此时不需要考虑TC0RATE 的设置,P0.0 口无中断信号(P00IRQ=0)

二、TC0C计数寄存器

TC0是8位的计数器,计数范围为0-255,到255+1就溢出,

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

TC0C

TC0C7

TC0C6

TC0C5

TC0C4

TC0C3

TC0C2

TC0C1

TC0C0

读/写

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

复位

0

0

0

0

0

0

0

0

当TC0时钟来源不同时,TC0C的计数范围也不一样,当TC0M寄存器中TC0CKS0= 0=计数脉冲来源为内部时钟(Fcpu或 Fosc),计数范围由PWM0OUT、TC0OUT和ALOAD0决定。当TC0CKS0=1 =为外部计数模式,由 P0.0/INT0输入。计数范围为0-256;

TC0CKS0

PWM0OUT

TC0OUT

ALOAD0

TC0C范围

计数多少次溢出

0

0

x

x

00H-0FFH

256

1

0

0

00H-0FFH

256

1

0

1

00H-3FH

64

1

1

0

00H-1FH

32

1

1

1

00H-0FH

16

1

--

--

--

00H-0FFH

256

TC0C初值=256-(T0溢出间隔时间*时钟速度)

例;TC0C定时10ms,fCPU=1m,TC0rate=010=fCPU/64,那么

TC0C初值=256-(T0溢出间隔时间*时钟速度)

=256-(10ms*(fcpu/64))

=64H

三、TC0R自动重装寄存器

TC0 的自动装载功能由 TC0M的 ALOAD0位控制。当 TC0C溢出时, TC0R的值自动装入 TC0C中。这样在使用的过程中就不需要在中断中重新赋值。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

TC0R

TC0R7

TC0R6

TC0R5

TC0R4

TC0R3

TC0R2

TC0R1

TC0R0

读/写

R/W

R/W

R/W

R/W

R/W

R/W

R/W

R/W

复位

0

0

0

0

0

0

0

0

TC0R初值=256-(T0溢出间隔时间*时钟速度),计算方法和TC0C一样。

四、中断请求寄存器INTRQ

五、中断请求使能寄存器INTEN

名称

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

复位

INTRQ

ADCIRQ

TC1IRQ

TC0IRQ

T0IRQ

SIOIRQ

P02IRQ

P01IRQ

P00IRQ

00000000

INTEN

ADCIEN

TC1IEN

TC0IEN

T0IEN

SIOIEN

P02IEN

P01IEN

P00IEN

00000000

置位寄存器INTEN的相应位可以使能相应的中断。

当中断发生时,寄存器INTRQ相应的位会被置1,这个中断标志位需要在中断中软件清零。TC0C溢出时,如果使能了TC0中断使能,则会产生TC0中断,TC0IRQ会被置1.

例;在cpu=1M情况下,T0中断定时10ms。

#include<sn8p2612.h>

main()

{

FTC0IEN=0;//配置中断的时候最好先关闭相应中断

TC0M=0X24;//分频 fCPU/64,使能自动重装载

TC0R=0X64;//重装值

TC0C=0X64;//10ms初值

FTC0IEN=1;//开定时器T0中断

FGIE=1;//开总中断

while(1);

}

//所有中断共用一个入口,所以要在中断中查询相应的标志位的判断是哪个中断

__interrupt T0INT(void)

{

if(FTC0IRQ=0) //T0中断查询

{

FTC0IRQ=0; //标志位手动清零

//中断处理函数,该干嘛干嘛去!

}

}

例;TC0作为外部脉冲计数器

#include<sn8p2612.h>

int TC0_OVER_COUNT=0; //中断溢出次数,溢出一次为256个脉冲

main()

{

unsigned int All_Count=0; //计数总值

FTC0IEN=0; //配置中断的时候最好先关闭相应中断

TC0M=0X08; //对外部脉冲计数

FTC0IEN=1; //开定时器T0中断

FGIE=1; //开总中断

while(1)

{

All_Count=TC0_OVER_COUNT*256+TC0C; //计算外部脉冲总值

}

}

//所有中断共用一个入口,所以要在中断中查询相应的标志位的判断是哪个中断

__interrupt T0INT(void)

{

if(FTC0IRQ=0) //TC0中断查询

{

FTC0IRQ=0; //标志位手动清零

TC0_OVER_COUNT++;

}

}

4、SONIX单片机TC0、TC1基本定时与计数功能相关推荐

  1. 5、SONIX单片机TC0、TC1的pwm输出

    TC0与TC1的功能和使用方法是一样的,所以这里只介绍TC0 与定时器TC0的pwm功能相关的寄存器共有3个;TC0M,TC0C,TC0R 一.TC0M模式寄存器 Bit7 Bit6 Bit5 Bit ...

  2. 单片机基础知识之定时计数器和寄存器

    目录 一.定时计数器 二.什么是寄存器 三.定时器如何定时10毫秒 四.定时器编程前寄存器配置计划 五.编程定时器控制LED每隔一秒亮灭 六.AUXR特殊功能寄存器时钟的电磁辐射 一.定时计数器 1. ...

  3. 【003】基于51单片机的宠物自动定时、喂食系统的proteus仿真设计

    一.压缩包资料(私信获取) (1). 包含基于51单片机的宠物自动定时.喂食系统的proteus仿真设计一份: (2).包含基于51单片机的宠物自动定时.喂食系统keil源代码工程文件一份: (3). ...

  4. 2、SONIX单片机IO口基本操作

    IO口基本操作,sonix单片机每个IO口都有两个钳位保护二极管 一.IO口方向设置寄存器PnM,n代表0-5组IO口 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 ...

  5. 单片机-定时/计数器原理功能介绍

    在单片机应用系统中,我们会需要有定时控制的功能,如定时输出,定时检测,定时扫描等. 这就是单片机中定时/计数器的功能所在,我们在此详细介绍一下计时/计数器的原理功能. 一.定时/计数器的功能原理: 定 ...

  6. 基于单片机智能水杯 保温杯 定时提醒喝水 温度控制的设计与实现

    功能介绍 以51单片机作为主控系统: LCD1602液晶显示当前水温,定时提醒,水量变化 DS18B20检测当前水体温度: 水位传感器检测当前水位: 继电器驱动加热片进行水温加热: 定时提醒喝水,蜂鸣 ...

  7. 关于用51单片机内部定时器实现时钟和闹钟功能的概述

    关于用51单片机内部定时器实现时钟和闹钟功能的概述 仅个人观点,欢迎大家相互学习和讨论 STC89C52单片机,内部配置了三个定时器,T0\T1\T2,其中T2定时器我们几乎不用,或者说很少用到.我们 ...

  8. vb串口 任意波特率_C#与单片机串口通讯,实现简单的计数功能

    串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件.一般完成这种功能的电路,我们称为串行接口电路. 串口通信( ...

  9. 定时/计数器(定时和计数的功能)、定时器中断

    定时/计数器实现功能: (1)定时功能: 定时/计数器说明(最高单次计时时间是71毫秒=65535*1.085us,1.085us是机器周期): 使用51定时/计数器步骤: 定时/计算器控制寄存器: ...

最新文章

  1. 2022王道操作系统名词解释概念题
  2. 在Window Embedded CE(Wince)下使用OpenNETCF进行路由表的开发
  3. Linux下使用NTFS格式移动硬盘
  4. Django中用Jquery实现不刷新页面进行身份验证和计算器功能
  5. freemaker模板引擎使用详解
  6. shell字段拼接日期_shell 脚本字符串拼接
  7. html:(18):文本输入框,密码输入框,文本域
  8. oracle手工收集awr报告_oracle手工生成AWR报告方法记录-阿里云开发者社区
  9. Sentence-LDA的介绍及程序
  10. 分小组 java_蓝桥杯-分小组-java
  11. 详解 Blockchain Cuties (区块链萌宠)
  12. Docker 日常指令
  13. c语言课程性质,c语言课程的特性
  14. 【离散数学】单射、满射和双射的定义、区别
  15. 联通loid认证_光纤LOID 认证 需要填写的用户名是什么?有人说不...
  16. SpringBoot在controller返回一个HTML页面
  17. TiDB at ZaloPay Infrastructure Lesson Learned
  18. 2007年9月01日 - FE足球队成都之行
  19. http协议(转http://www.cnblogs.com/guguli/p/4758937.html)
  20. ubuntu16.04 安装VScode

热门文章

  1. mybatisplus mapper扫描逻辑
  2. libreoffice安装教程_【Linux】Centos7安装LibreOffice
  3. 哈希(Hash)的详细介绍
  4. 团体程序设计天梯赛-练习集(10分)
  5. 为了忘却的纪念,也为了纪念已经忘却的那些
  6. 三大背包问题c++(秀儿,你坐下好吗?)
  7. python坐标轴刻度设置_Python 对坐标轴的设置
  8. 看完3d打印机类型及优缺点,再决定选哪款stratasys3D打印机
  9. 算法笔记-问题 A: 重心在哪里
  10. 老友记第二季3集背诵句