标题: 我把定时器程序写成一个函数的时候,为什么就不能运行了 [打印本页]

作者: 董亚伟    时间: 2014-12-20 00:31
标题: 我把定时器程序写成一个函数的时候,为什么就不能运行了
void delay()
{
        int u;
        TMOD = 0x01;
        TH0 = 0x3C;
        TL0 = 0xb0;
        TR0 = 1;
       
        while(1)
        {
                if(TF0 == 1)
                {
                        TF0 = 0;
                        TH0 = 0x3C;
                        TL0 = 0xb0;
                        u++;
                        if(u>=20)
                        {
                                u=0;       
                        }

                 }
        }          
}


作者: 海哥沧海一笑    时间: 2014-12-20 08:15
要开总中断和定时器,
作者: 海哥沧海一笑    时间: 2014-12-20 08:17
最好把定时器的初始化写成一个函数,再把定时器要处理的内容写成一个函数
作者: 来自火星的蜗牛    时间: 2014-12-20 11:29
要开定时器中断和总中断的
作者: 董亚伟    时间: 2014-12-21 09:36
来自火星的蜗牛 发表于 2014-12-20 11:29
要开定时器中断和总中断的

高手  请给个程 序
作者: 董亚伟    时间: 2014-12-21 09:36
海哥沧海一笑 发表于 2014-12-20 08:17
最好把定时器的初始化写成一个函数,再把定时器要处理的内容写成一个函数

高手  请给个程 序
作者: 海哥沧海一笑    时间: 2014-12-21 15:26
董亚伟 发表于 2014-12-21 09:36
高手  请给个程 序

#include<reg52.h>
#define uchar unsigned char
uchar a;
void time_0init()////定时器0初始化
{
TMOD=0X01;
TH0=0X3C;
TL0=0XB0;
EA=1; ///开总中断
ET0=1;///开定时器0中断
TR0=1;/// 启动定时器0  
}
void time0() interrupt 1 ///定时器0服务函数
{
TH0=0X3C;
TL0=0XB0;
a++;
if(a==20) ////20圈1s时间
{
  a=0;
  P1=~P1;;;;;///定时器0要处理的内容
}
}
void main()
{
time_0init();
while(1);///等待中断
}


作者: Tangtaotao    时间: 2016-10-9 23:03
你的总中断和定时器没开;建议写成TMOD |=0x01; 保证每个定时器独立工作




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