标题: STC8a8k单片机定时器程序问题 [打印本页]

作者: hmgqljz111    时间: 2019-10-12 16:47
标题: STC8a8k单片机定时器程序问题
为何测出来的小型是500US的上高,500US的低。

#include <stc8.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit led=P1^1;

void init()
     {
           P1M0=0X00;
           P1M1=0X00;
           AUXR&=0X7F;//12T模式
           TMOD&=0Xf0;//定时器0模式0 16位自动装填
           TH0=(65535-1000)/256;
           TL0=(65535-1000)%256;
           TR0=1;
           ET0=1;
           EA=1;
           led=1;
         }
void main()
     {
           init();
           while(1);
              
         }
void TM0_1SR() interrupt 1
    {

          led=~led;
        }



作者: angmall    时间: 2019-10-13 14:21
STC8A默认使用内部振荡器24MHz


作者: wulin    时间: 2019-10-13 14:36
从楼主的文字表述根本看不出想问什么问题,从程序看是一个500Hz,占空比50%的矩形波发生器。

作者: hmgqljz111    时间: 2019-10-13 16:18
wulin 发表于 2019-10-13 14:36
从楼主的文字表述根本看不出想问什么问题,从程序看是一个500Hz,占空比50%的矩形波发生器。

为什么是500HZ,我不是设定的1MS翻一次吗
作者: hmgqljz111    时间: 2019-10-13 16:19
wulin 发表于 2019-10-13 14:36
从楼主的文字表述根本看不出想问什么问题,从程序看是一个500Hz,占空比50%的矩形波发生器。

哈哈。是没问题。就是觉得这个初值应该是1MS翻转一次。但是示波器和不一样。
作者: wulin    时间: 2019-10-13 22:26
hmgqljz111 发表于 2019-10-13 16:19
哈哈。是没问题。就是觉得这个初值应该是1MS翻转一次。但是示波器和不一样。

1ms翻转一次,周期就是2ms,频率就是500HZ。楼主的定时器设置虽然是1ms,但这是在12M时钟为前提的。如果在示波器看脉宽500us那一定是主时钟频率翻倍为24M了。
作者: aking991    时间: 2019-10-14 08:53
一种是定时器设置,一种是定时器设置没和单片机晶振同类,比如你设置的1MS设计是按12M设置,可实际烧录时晶振设置是用24M的,这样的就会造成定时时间减半,仅供参考




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1