[活动专区] 【赛元95F】之三:TIMER3

[复制链接]
847|1
 楼主| lisingch 发表于 2020-4-1 20:40 | 显示全部楼层 |阅读模式
本帖最后由 lisingch 于 2020-4-1 20:43 编辑

      本次实验基于SC95F8617内部的定时器3产生100ms计时输出至P50端口,并利用逻辑分析仪对输出信号进行捕捉、观察。直观感受SC95F8617内建振荡频率可调的高精度高频振荡器“HRC”。
一、实验资源
1、SC95F8617 demo板;
2、SC-LINK;
3、Keil C51 V9.60;
4、逻辑分析仪及配套软件Logic 1.1.15;

二、相关资源简介
1、系统时钟
2020-04-01_201149.png
      SC95F8617内建振荡频率可调的高精度高频振荡器,出厂时被精确地调校至32MHz(5V/25℃),压漂(2.0V~5.5V)以及(-40℃~105℃)的温漂会在 ±2% 以内,精度还是挺高的。应用中还可通过“Code  Option”进行1/2/4/8进行分频,非常灵活。

2、定时器
2020-04-01_202124.png
SC95F8617的定时器资源非常丰富,除了TIMER0/1外 还有TIMER2/3/4 。这其中的TIMER3/4只有一种16位自动重载模式。因为TIMER2/3/4共用了同一组地址(C8H-CDH)的控制寄存器,使用中要通过TXINX[2:0]进行指定。

三、程序实现
TIMER配置:
  1. //定时器3使用MCU内建高精度高频振荡器HRC
  2. void Timer3_Config(void)
  3. {
  4.         TXINX = 0X03;                                                      //TimerX寄存器组指向Timer3

  5.         TXMOD = 0X80;                                                                 //Timer3时钟频率为FSYS=32MHz
  6.         THX = (65535-32000) / 256;    //1ms
  7.         TLX = (65535-32000) % 256;
  8.         RCAPXH = (65535-32000) / 256;
  9.         RCAPXL = (65535-32000) % 256;
  10.         TRX = 1;                                                                //启动Timer3
  11.         
  12.         IE1 = 0X40;                                                                                //ET3=0 使能T中断
  13.         
  14.         EA = 1;                                                                                                //开总中

  15. }

TIMER3中断服务:
  1. void Timer3_INT() interrupt 13  //Timer3中断服务函数
  2. {
  3.         static unsigned char T3_Cont = 0;
  4.         
  5.         TXINX = 0X03;              //进入Timer3中断服务函数首先将TimerX寄存器组指向Timer3
  6.         TFX = 0;                              //清除Timer3中断标志位
  7.         T3_Cont++;
  8.         if(T3_Cont >= 100)
  9.         {
  10.                 T3_Cont = 0;
  11.                 P50 = ~P50;
  12.         }
  13. }

主函数:
  1. void main(void)
  2. {
  3.         P5CON = 0xff;                          //设置P5为强推挽输出模式
  4.         
  5.         Timer3_Config();
  6.         
  7.         while(1)
  8.         {

  9.         }
  10. }

四、实验结果
2020-03-31_160012.png

五、总结
      SC95F8617的定时器资源丰富,操作方便,配合内置高精度高频振荡器可满足用户高标准的需求。

598330983 发表于 2020-4-5 19:15 | 显示全部楼层
这个芯片定时器挺多的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

15005

帖子

19

粉丝
快速回复 在线客服 返回列表 返回顶部