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函数的第一行,放在其他行就会报错?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。