STC15W4K32S4 系列 T0定时器输出时钟
来源:互联网 发布:淘宝店9.9包邮 编辑:程序博客网 时间:2024/04/28 10:53
T0的时钟输出引脚是在T0CLKO/P3.5。要想在这里输出时钟我们要配置寄存器INT_CLKO(AUXR2),寄存器INT_CLKO如下表:
T0的时钟输出需要设置T0CLKO(B0)位。当其为1时,允许T0定时器对外输出时钟,输出时钟频率 = T0溢出率 / 2。当其为0时,不允许T0定时器对外输出时钟。(T0的溢出率是指每秒T0上溢的次数)。
我们还可以选择,是否让T0以8051的12倍率工作。
当T0x12配置为 1 时,T0以传统8051的12倍运行,即不分频。当T0x12配置为 0 时,T0的速度和传统8051一样,即12分频。
然后就是和传统的8051一样配置TMOD和TCON寄存器。
下面是测试代码:
#include <reg51.h>sfr INT_CLKO = 0x8f; //中断及时钟输出寄存器地址配置sfr AUXR = 0x8e; //辅助特殊功能寄存器配置sbit T0CLKO = P3^5;void main(){ AUXR = 0x80; //T0x12 = 1, 不分频,8051的12倍 TMOD = 0x00; //设置定时器0为模式0,即16位自动重载模式 TH0 = 0xd1; //由于CLK_DIV初始为0x00,那么系统时钟频率 = 主时钟频率 = 11.0592Mhz。大约是12个时钟为1us TL0 = 0x20; //输出频率 = 12000000/(65536 - 53536)/2 = 500Hz (大致) TR0 = 1; //开定时器0 INT_CLKO = 0x01; //允许定时器0在引脚T0CLKO/P3.5处输出时钟 while(1) { };}
测试结果:
结论:感觉确实没有12MHz,但是挺接近的。示波器上显示与500Hz差得应该不是太多吧!
下面我们再试试使对定时器 0 引脚 T0/P3.4的外部时钟进行输出。这里外部时钟使用T3输出的时钟。
T3输出时钟要配置以下寄存器:
如果我们想把T3的时钟输出的话,那么就只需把T3T4M配置为0000,1011,即0x0B。
T3H和T3L的地址如下表:
示例代码如下:
/*STC15W4K32S系列 T0外部时钟输出测试*/#include <reg51.h>sfr INT_CLKO = 0x8f; //中断及时钟输出寄存器地址定义sfr AUXR = 0x8e; //辅助特殊功能寄存器地址定义sfr T4T3M = 0xD1; //T3和T4的控制寄存器地址定义sfr T3H = 0xD4; //T3的初始计数地址高8位地址定义sfr T3L = 0xD5; //T3的初始计数地址低8位地址定义sfr P3M0 = 0xB1; //P3口端口模式寄存器地址定义sfr P3M1 = 0xB2;//sbit T0CLKO = P3^5; //可以不定义,但这个可以提醒程序员这个脚已经用掉了//sbit T3CLKO = P0^4; //同上void main(){ T3H = 0xff; //12MHz/(65536 - 65524) = 1MHz , 溢出率 T3L = 0xf4; //输出频率 = 1MHz/2 = 500KHz T4T3M = 0x0B; //定时器3的相关设置T3R = 1,T3_C/T = 0,T3x12 = 1, T3CLKO = 1 AUXR = 0x80; //定时器0 T0x12 = 1,不分频,8051速度的12倍 TMOD = 0x04; //定时器0设置成为计数模式,从P3^4输入的脉冲计数,16位自动重载 TH0 = 0xfe; TL0 = 0x0c; //时钟频率 = 500KHz/(65536 - 65036)/2 = 500Hz TR0 = 1; //开定时器0 INT_CLKO = 0x01; //T0CLKO = 1允许定时器0输出时钟 while(1) { }}实验结果:
1 0
- STC15W4K32S4 系列 T0定时器输出时钟
- 【KF8V111控制器】定时器T0配置
- 定时器系列—定时器应用(时钟、倒计时、秒表和闹钟)
- t0
- STC15w4K32S系列 主时钟输出示例
- 时钟定时器
- 时钟二:定时器时钟
- ARM裸机编程系列----系统时钟与定时器
- 20120801-51单片机定时器T0的使用1-中断法
- 用定时器T0的中断控制8位LED闪烁
- C51单片机定时器T0,T1的常用基本设置
- STC15/STC15F2K60S2/STC15W4K32S4系列读取超声波测距模块HC-SR04距离串口显示代码
- 硬时钟和定时器
- linux时钟及定时器
- Linux 时钟_定时器
- STM32定时器时钟配置
- Linux 时钟_定时器
- lpc1768 时钟与定时器
- unity3d进程通信利用WM_COPYDATE和HOOK
- PHP学习SELECT postgresql正则表达式 cookie同一站点IP访问和域名访问 T检验
- UITextField
- cell里面 self 和self.contentview的区别
- Python日志模块logging的使用
- STC15W4K32S4 系列 T0定时器输出时钟
- AndFix解析——(下)
- CCIM安装教程
- 数据库模型设计——历史与版本设计
- 打开Android C文件中的LOG
- android ZXing扫描二维码图片变形
- 将模板方法模式应用到kmeans聚类算法
- 快速排序
- java中的类型转换