定时/计数器 TC1

作周期定时

定时周期10ms,非自动重装

        EQU_FCPU_DIV_64         EQU         00100000B        ; 010--->Fcpu/64EQU_CTCX_10MS           EQU         100              ; 此处赋值 100 ,看下文介绍CALL_INIT_TC1:B0BCLR          FTC1IEN             ; 禁止TC0 中断B0BCLR          FTC1ENB             ; 禁止TC0 定时器B0BCLR          FGIE                ; 关闭全局中断(在 STKP 寄存器)CLR             TC1M                ; 清 TC1MMOV             A,#EQU_FCPU_DIV_64  ; CLK_DIV_64OR              TC1M,A              ; Set TC0 Clock=fcpu/64MOV             A,#CTCX_10MS        ; MOV             TC1C,A              ; TC1间隔Cycle=10.0msB0BCLR          FTC1IRQ             ; 清TC1中断请求标志B0BSET          FTC1IEN             ; 使能TC1中断B0BSET          FTC1ENB             ; 开启TC0 定时器B0BSET          FGIE                ; 使能全局中断RET/*---------------------------------中断服务函数-------------------------------------------*/
CALL_INTTC1_Handel:                    B0BCLR           FTC1IRQ            ; 清中断标志位MOV             A,#CTCX_10MSB0MOV           TC1C,A             ; 手动重装技术值...

TC1C 初始值的计算公式如下:
TC1C 初始值 = N - (TC1 中断间隔时间 * TC1 时钟 rate)
TC1C 初始值:需要求的值,即定义的 EQU_CTCX_10MS;
N值:N 为 TC1 二进制计数范围。各模式下参数的设定如下表所示,此处PWM1 = 0,所以 N = 256:

TC1 中断间隔时间:即定义的中断间隔时间 10ms;
TC1 时钟rate:EQU_FCPU_DIV_64 EQU 00100000B ; 010—>Fcpu/64

因为选项中定义系统时钟如下:

 .Code_Option    High_Clk    IHRC_16M        ; Internal 16M RC Oscillator.Code_Option    Fcpu        #7              ; Fcpu = Fosc/16

所以,TC0 时钟 rate= Fosc/16/64 = 16M / 16 /64 = 15625
TC0C 初始值 = 256 - (0.01S -15625) = 99.75 ≈ 100

作PWM输出

        EQU_FCPU_DIV_64         EQU         00100000B        ; 010--->Fcpu/64INIT_TC0PWM:MOV             A,#0x00B0MOV           TC0M,A              ; 清TC0M,复位TC0MOV             A,#FCPU_DIV_64B0MOV           TC0M,A              ; 设置TC0RATE[2:0],即PWM周期MOV             A,#00000000B        ; OR              TC0M,A              ; ALOAD0 = 0 和TC0OUT = 0,PWM分辨率 =  1/256MOV             A,#0x00B0MOV           TC0R,A              ; 设置TC0R寄存器获得PWM占空比CLR             TC0C                ; 清TC0CB0BSET          FTC0ENB             ; 使能TC0 定时器B0BSET          FPWM0OUT            ; 使能PWMRET

1、PWM周期:TC0Rate[2:0]控制 PWM 的周期
EQU_FCPU_DIV_64 EQU 00100000B ; 010—>Fcpu/64


因为选项中定义系统时钟如下:

 .Code_Option    High_Clk    IHRC_16M        ; Internal 16M RC Oscillator.Code_Option    Fcpu        #7              ; Fcpu = Fosc/16

PWM周期 = Fosc/16/64 = 16M / 16 /64 = 15625 Hz
2、PWM分辨率:ALOAD0 和TC0OUT 决定 PWM 的分辨率,当 ALOAD0、TC0OUT = 00 时,PWM 的分辨率为 1/256;ALOAD0、TC0OUT = 01 时,PWM 的分辨率为 1/64;ALOAD0、TC0OUT = 10 时,PWM 的分辨率为1/32;ALOAD0、TC0OUT = 11 时,PWM 的分辨率为 1/16。

3、PWM占空比:TC0R 寄存器决定 PWM 的占空比(脉冲高电平的长度),取值范围 00H~FFH。开启 TC0 定时器且定时器溢出后,TC0C 的初始值为 0。TC0C开始计时,PWM输出高电平,当 TC0C=TC0R 时,PWM 输出低电平;TC0 溢出时(TC0C 的值从 0FFH 到 00H),整个PWM 周期完成,并进入下一个周期。TC0 溢出时,PWM 的一个周期完成。在 PWM 输出的过程由程序更改 PWM 的占空比,则在下一个周期开始输出新的占空比的 PWM 信号。

改变占空比:在需要改变占空比的地方加上该语句

                    MOV             A,PWMTCXR        ; PWMTCXR 占空比值MOV             TC0R,A

松翰单片机之外设的使用相关推荐

  1. 松翰单片机keil环境芯片包

    松翰单片机keil环境芯片包(SN8F5700系列):安装时与Keil安装位置相同可以直接使用. 安装后依次点击可查看芯片包具体型号: 芯片包下载链接:阿里云盘分享https://www.aliyun ...

  2. FS2712A单片机可替换松翰SN8P2711

    FS2712A单片机可以替代松翰SN8P2711B型号,程序直接转换使用,不需要修改PCB,因此FS2712A的成本更低,让微薄的利润再增添一笔,FS单片机更加节省成本! FS2712A是以EPROM ...

  3. FS2711单片机可替换松翰SN8P2711

    FS2711单片机可以替代松翰SN8P2711B型号,程序直接转换使用,不需要修改PCB,因此FS2711的成本更低,让微薄的利润再增添一笔,FS单片机更加节省成本! FS2711 是以EPROM作為 ...

  4. 松翰SN8F5703单片机WDT例程

    松翰5703例程-WDT //-------------------------------------------------------------------------- //Filename ...

  5. 替代松翰sn8p2711,153系列主控IC

    8P153/8P2711/8S003F3P6/32F103CBT6/32F103C8T6/32F103RBT6/32F103R8T6原厂封装欢迎来人来电咨询洽谈张生151.1803*6667 现货单片 ...

  6. 松翰松翰c语言编程指导,松翰C程序检单例程代码下载

    标签: 松翰C程序检单例程 #include "define.h" #include "sn8p2501b.h" //--------------------- ...

  7. 单片机与外设模块数据传输不成功各种原因分析总结

       单片机与外设模块数据传输不成功各种原因分析总结 下面会不断总结在工作中遇到的问题分享给大家: 1.波特率:花了半天时间检查接线.模块.电压.电流等等,都排除了原因,最终发现原来模块的波特率是11 ...

  8. sonix c语言 pdf,松翰c语言(项目)例程(Sonix C language routines (project)).doc

    松翰c语言(项目)例程(Sonix C language routines (project)) 松翰c语言(项目)例程(Sonix C language routines (project)) So ...

  9. 凌阳SPCA2688 4K摄像头/松翰1080P H.264 摄像头/瑞昱WDR(宽动态)USB摄像头模组

    SPCA2688    4K2K/8M高端USB2.0网络摄像头模组     支持定制开发联系17666       接下行                                       ...

  10. 华大单片机m4内核的滴答定时器_微处理器、单片机及其外设,处理还是控制?...

    每项新应用设计都需要一个单片机或微处理器.当在两者之间选择其一时,需要考虑一些因素.以下是微处理器.单片机以及异构架构的概述. 考虑选择微处理器(MPU)或者单片机(MCU)时,应用类型通常是关键因素 ...

最新文章

  1. php禁止组合热键,cad组合快捷键命令有哪些
  2. pip源更换为清华源_kali2020更换国内的源
  3. mysql 配置多个数据库连接_总结MySQL修改最大连接数的两个方式
  4. 微处理器 微型计算机系统,作业答案11微处理器微型计算机和微型计算机系统三者之间.DOC...
  5. 软件开发模型_QT开发(二十三)——软件开发流程
  6. ansible操作远程服务器报Error: ansible requires the stdlib json or simplejson module, neither was found!...
  7. 基于Dialog的MFC程序在启动时隐藏为托盘程序(三)
  8. Java基础知识强化84:System类之exit()方法和currentTimeMillis()方法
  9. 设计模式面对面之单例模式
  10. MongoDB数据库可视化工具
  11. 2022最新短信验证码平台汇总
  12. 2022年7月22日,记录我的第一篇博客
  13. 智能音箱的五大核心技术
  14. 大型支付系统后台对账系统的控制和管理
  15. Shader 如何表现攻击范围
  16. C++之solmyr小品文
  17. 《走着走着就散了,回忆都淡了》
  18. 什么是光纤?光纤有什么用途?(分布式光纤测温DTS+振动DAS+应变BOTDA)
  19. Python每日一练——第3天:三种猜数字小游戏
  20. 【论文翻译】聚类算法研究

热门文章

  1. Vue · 导航守卫:beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave
  2. 轩小陌的Python笔记-day09 文件操作相关
  3. 如何将图片做成内外边框HTML,如何用html给图片加边框
  4. kindle自定义屏保之自定义字帖
  5. 色度抽样(4:2:0)到底是什么意思?
  6. PTA(类和对象)用java写 7-2 定义商品类,封装成员变量,输出对象
  7. 听说现在消防控制室都要求中级消防设施操作员了?这个工作前景怎么样?
  8. 免费的HTTP代理IP服务器地址
  9. Micropython——看门狗定时器(WDT类)
  10. 阿里云MVP精选2018年终盘点:大咖专访+最佳实践,丰富干货等你来!