搜索
bottom↓
回复: 4

感觉STC15F系列单片机官方给的参考程序有错,大家评评理

[复制链接]

出0入0汤圆

发表于 2015-1-27 15:07:06 | 显示全部楼层 |阅读模式
感觉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周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入112汤圆

发表于 2015-1-27 21:47:50 | 显示全部楼层
本帖最后由 xunke 于 2015-1-28 11:20 编辑

STC-ISP V6.82E软件中“PCA实现16位定时器”的范例程序也有问题,不知怎么回事程序没试过就拿来做范例,真是搞笑,截图如下:


应该改成如下:


增加第42、43行中断就正常了
还有第46、47行不能缺 顺序也不反
我用的MCU是STC15W408AS

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2015-1-28 00:41:17 | 显示全部楼层
xunke 发表于 2015-1-27 21:47
STC-ISP V6.82E软件中PCA实现16位定时器的范例程序也有问题,不知怎么回事程序没试过就来做范例,截图如下 ...

今天我问客服,他那边回复说是工程师的编程习惯。。。有问题居然说成习惯了~

出0入0汤圆

发表于 2015-1-28 03:48:07 来自手机 | 显示全部楼层
虽然不怎么熟悉单片机编程(照抄居多),但看到256这个数字,就知道是8位的字节。16位是由2个8位组成的。所以,虽然不怎么清楚是否有问题,但如果是我的话,肯定在单片机上烧录一下来运行验证。象我这种水平的肯定不敢贸然跳出来装大神。

出0入0汤圆

 楼主| 发表于 2015-1-28 08:51:20 | 显示全部楼层
xpxp 发表于 2015-1-28 03:48
虽然不怎么熟悉单片机编程(照抄居多),但看到256这个数字,就知道是8位的字节。16位是由2个8位组成的。所 ...

没有装大神,也不是大神,同样的定时器,同样的功能,一个是65536,一个是256,是逻辑错误了,因为样品还没有到,无法验证,但是,以正常逻辑推算,这样就很矛盾了,因为这几个定时器是固定16位自动装载的
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 00:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表