找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3513|回复: 7
打印 上一主题 下一主题
收起左侧

我把定时器程序写成一个函数的时候,为什么就不能运行了

[复制链接]
跳转到指定楼层
楼主
ID:65770 发表于 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;       
                        }

                 }
        }          
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:69679 发表于 2014-12-20 08:15 来自手机 | 只看该作者
要开总中断和定时器,

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:69679 发表于 2014-12-20 08:17 来自手机 | 只看该作者
最好把定时器的初始化写成一个函数,再把定时器要处理的内容写成一个函数
回复

使用道具 举报

地板
ID:70653 发表于 2014-12-20 11:29 | 只看该作者
要开定时器中断和总中断的

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

5#
ID:65770 发表于 2014-12-21 09:36 | 只看该作者
来自火星的蜗牛 发表于 2014-12-20 11:29
要开定时器中断和总中断的

高手  请给个程 序
回复

使用道具 举报

6#
ID:65770 发表于 2014-12-21 09:36 | 只看该作者
海哥沧海一笑 发表于 2014-12-20 08:17
最好把定时器的初始化写成一个函数,再把定时器要处理的内容写成一个函数

高手  请给个程 序
回复

使用道具 举报

7#
ID:69679 发表于 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);///等待中断
}

评分

参与人数 1威望 +15 黑币 +30 收起 理由
dgahz + 15 + 30 很给力!

查看全部评分

回复

使用道具 举报

8#
ID:142111 发表于 2016-10-9 23:03 | 只看该作者
你的总中断和定时器没开;建议写成TMOD |=0x01; 保证每个定时器独立工作
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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