|
感觉STC15F系列单片机官方给的参考程序有错,大家评评理
STC15F2K,参考资 料是定时器2至定时器4都是16位自动装载,小弟看了他们官方软件给的参考程序,
定时器2#define T1MS (65536-FOSC/1000) //1T模式
与定时器4的#define T38_4KHz (256-18432000/38400/2) //1T
定时器2是定时1MS,定时器4是38.4K脉冲,但是,觉得定时器4是16位的,怎么官方的工程师用256去减呢,应该是65536才对,而且,两个定时器都是16位,却前后矛盾,请大家来评评理
/本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译
//假定测试芯片的工作频率为18.432MHz
#include "reg51.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;
//-----------------------------------------------
#define FOSC 18432000L
#define T1MS (65536-FOSC/1000) //1T模式
//#define T1MS (65536-FOSC/12/1000) //12T模式
sfr IE2 = 0xaf; //中断使能寄存器2
sfr AUXR = 0x8e; //辅助寄存器
sfr T2H = 0xD6; //定时器2高8位
sfr T2L = 0xD7; //定时器2低8位
sbit P10 = P1^0;
//-----------------------------------------------
//中断服务程序
void t2int() interrupt 12 //中断入口
{
P10 = !P10; //将测试口取反
// IE2 &= ~0x04; //若需要手动清除中断标志,可先关闭中断,此时系统会自动清除内部的中断标志
// IE2 |= 0x04; //然后再开中断即可
}
//-----------------------------------------------
/* main program */
void main()
{
AUXR |= 0x04; //定时器2为1T模式
// AUXR &= ~0x04; //定时器2为12T模式
T2L = T1MS; //初始化计时值
T2H = T1MS >> 8;
AUXR |= 0x10; //定时器2开始计时
IE2 |= 0x04; //开定时器2中断
EA = 1;
while (1);
}
/本示例在Keil开发环境下请选择Intel的8058芯片型号进行编译
//假定测试芯片的工作频率为18.432MHz
#include "reg51.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;
//-----------------------------------------------
#define FOSC 18432000L
#define T38_4KHz (256-18432000/38400/2) //1T
//#define T38_4KHz (256-18432000/12/38400/2) //12T
sfr IE2 = 0xAF; //中断使能寄存器2
sfr T4T3M = 0xD1; //定时器3和定时器4控制寄存器
sfr T4H = 0xD2; //定时器4高8位
sfr T4L = 0xD3; //定时器4低8位
sfr T3H = 0xD4; //定时器3高8位
sfr T3L = 0xD5; //定时器3低8位
sbit P10 = P1^0;
//-----------------------------------------------
//中断服务程序
void t3int() interrupt 19 //中断入口
{
P10 = !P10; //将测试口取反
// IE2 &= ~0x20; //若需要手动清除中断标志,可先关闭中断,此时系统会自动清除内部的中断标志
// IE2 |= 0x20; //然后再开中断即可
}
//-----------------------------------------------
void main()
{
T4T3M |= 0x02; //定时器3为1T模式
// T4T3M &= ~0x02; //定时器3为12T模式
T3L = T38_4KHz; //初始化计时值
T3H = T38_4KHz >> 8;
T4T3M |= 0x08; //定时器3开始计时
IE2 |= 0x20; //开定时器3中断
EA = 1;
while (1);
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|