找回密码
 立即注册

QQ登录

只需一步,快速开始

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

这个单片机程序的执行的过程?请尽量说详细些。

[复制链接]
跳转到指定楼层
楼主
ID:277539 发表于 2018-1-18 21:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
typedef unsigned char u8;
void delay_1s();
void main()
{
        EA=1;
        ET1=1;
        TMOD=0x10;
        while(1)
        {
                        P1=0xfe;
                        delay_1s();
                        P1=0x7f;
                        delay_1s();
        }
}
void delay_1s()
{
        u8 i;
        for(i=0;i<2000;i++)
        {
                TH1=(65536-50000)/256;
                TL1=(65536-50000)%256;
                TR1=1;
                while(!TF1);
        }
}
void int_0()interrupt 3
{
        P1=0xf7;
}

有什么错误请指出来,谢谢!

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

使用道具 举报

沙发
ID:213173 发表于 2018-1-19 08:43 | 只看该作者
你没有说明你想达到什么目的,单从main函数内容看你是用100秒的长延时控制两个端口交替输出低电平,但由于开了中断,你想得到的延时实现不了。程序会死在while(!TF1);,另外u8 i;的赋值范围只能是0~255,你按2000计算,永远也跳不出for循环。
回复

使用道具 举报

板凳
ID:164602 发表于 2018-1-19 08:53 | 只看该作者
你的程序,我详细看了,并且在我的板子上,还试过。
是不是程序卡在什么地方了?
错误在20行:for(i=0;i<2000;i++)
你的i变量,定义为U8,即最大只有255,而你用了2000,当然就死在这里了。
我将它改为100,就好了。或者你把它定义为unsigned int也行,这个我没试,要等100多秒,时间太长。
回复

使用道具 举报

地板
ID:46065 发表于 2018-1-19 11:23 | 只看该作者
P1=0xfe, P1=0x7f;交替运行,每次中断后P1=0xf7;
看不出程序干什么用的!
回复

使用道具 举报

5#
ID:123289 发表于 2018-1-19 12:18 | 只看该作者
无错!打100分,鼓励你一下。
错误是相对于标准才有的,无标准就无所谓错误了。
回复

使用道具 举报

6#
ID:7485 发表于 2018-1-19 20:09 | 只看该作者
不知道你的程序的功能。但就程序而言,重装初值后TF1必须清零。
                TH1=(65536-50000)/256;
                TL1=(65536-50000)%256;
                TF1=0;
                TR1=1;
                while(!TF1);
回复

使用道具 举报

7#
ID:277882 发表于 2018-1-19 21:59 | 只看该作者
那位老铁,重装初值以后好像不用置零吧,他不是机器自动就置零的嘛?另外,你这个!TF1真的有毒,TF1置1的时候不是就应该进入中断程序了吗?等从中断程序出来TF1又是零了。我看啊,你要是想隔一秒的话,不如把程序直接写在中断程序里面,或者写一个标志位也可以的嘛,检测标志位,等程序运行过了再清除也挺好。

评分

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

查看全部评分

回复

使用道具 举报

8#
ID:277539 发表于 2018-1-19 23:13 | 只看该作者
问题已解决,谢谢大家!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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