找回密码
 立即注册

QQ登录

只需一步,快速开始

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

各位大神帮忙看看,这个程序对不对

[复制链接]
跳转到指定楼层
楼主
ID:94827 发表于 2015-12-20 20:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
#define u8 unsigned char
#define u16 unsigned int
sbit led=P1^0;
u8 time,num;

void timer() interrupt 0
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        time++;
}

void delay(u16 num)
{
        u16 x;
        for(x=num;x>0;x--)
        {
                if(time==2)
                {
                        time=0;
                }
        }
}

void main()
{
        time=0;
        TMOD=0x01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        EA=1;
        ET0=1;
        TR0=1;
        led=0;
        while(1)
        {
                delay(5);
                led=~led;
        }
}

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

使用道具 举报

沙发
ID:1 发表于 2015-12-20 21:01 | 只看该作者
- 0 个错误, 0 个警告。程序没有问题
回复

使用道具 举报

板凳
ID:94827 发表于 2015-12-20 21:15 | 只看该作者
额,我的意思是这个程序能不能作为延时程序来用,因为我仿真的结果不对,而我也找不出原因
回复

使用道具 举报

地板
ID:99728 发表于 2015-12-20 21:38 | 只看该作者
对啦  全部都对呢
回复

使用道具 举报

5#
ID:99748 发表于 2015-12-21 09:59 | 只看该作者
是对的啊
回复

使用道具 举报

6#
ID:94827 发表于 2015-12-21 10:46 | 只看该作者
问题是我用PROTUES仿真,那个延时500MS就不是500MS,延时的时间不对
回复

使用道具 举报

7#
ID:97249 发表于 2015-12-21 12:02 | 只看该作者
sxszpeng 发表于 2015-12-21 10:46
问题是我用PROTUES仿真,那个延时500MS就不是500MS,延时的时间不对

你这延时的是50MS,而且不能用定时器0,TR0只能延时8.192MS
回复

使用道具 举报

8#
ID:99815 发表于 2015-12-21 15:10 | 只看该作者
最好搞个板子,不要用仿真,,,
回复

使用道具 举报

9#
ID:17340 发表于 2015-12-21 15:29 | 只看该作者
对的,仿真是有延时的注意,仿真只能证明是可运行的。
回复

使用道具 举报

10#
ID:79544 发表于 2015-12-21 22:12 | 只看该作者
延时函数里加定时器,没用过。学习啦
回复

使用道具 举报

11#
ID:100123 发表于 2015-12-23 13:25 | 只看该作者
你的系统时钟频率不一样,延时的时间就不一样啊
回复

使用道具 举报

12#
ID:79544 发表于 2015-12-24 12:27 | 只看该作者
中断号不对,T0的中断号应该是1
回复

使用道具 举报

13#
ID:94827 发表于 2015-12-24 20:57 | 只看该作者
恩,对的,中断号是1,系统时钟是12MHZ
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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