89C51使用定时器输出方波的问题

2020-02-05 09:12发布

我使用定时器从P1.0口输出周期为1秒的方波,仿真结果如图。并不是“方”的。请教这个是什么原因造成的。

如果是真实电路也同样会出现这样的情况么?


(原文件名:捕获.JPG)

代码如下:

#include <REGX51.H>
#define uchar unsigned char


void main()
{
        uchar a=0;
        TMOD = 0x10;          //定时工作方式1
        TH1 = 0x0b;           // (2^13-X)*2=125000    //6M晶振
        TL1 = 0xdc;
        IE = 0x00;
        TR1 = 1;
       
        while(1)
        {
                 if (TF1 == 1)
                {
                        TH1 = 0x0b;
                        TL1 = 0xdc;
                        TF1 = 0;
                        a++;
                }
                if(a==8)
                {
                         P1_0=~P1_0;
                        a=0;
                }

        }
}



还有一个问题,        uchar a=0;的定义只能在main函数的第一行,放在其他行就会报错?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
wangkangming
1楼-- · 2020-02-05 12:32
做出一个实际的东西试试,仿真与实际相差很大的。
boxindang
2楼-- · 2020-02-05 14:05
实际也是这样的,很奇怪,不明白,频率高了就不会,连信号发生器低频时的方波也是这样
millwood0
3楼-- · 2020-02-05 17:30
请教这个是什么原因造成的。


you don't know how to use a scope.

一周热门 更多>