找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[求助]keil仿真时程序有些段不执行

[复制链接]
跳转到指定楼层
楼主
ID:23509 发表于 2010-5-1 23:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 
最近做了一个小的项目,写了一段程序,编译没有错,但是在用keil进行仿真时,有的程序段直接跳过不执行了,百思不得其解!望哪位高手指点指点! 
附:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit d_q=P1^1;
sbit d_h=P1^0;
sbit d_z=P1^3;
sbit d_y=P1^2;


sbit feng=P2^0;

uchar dot,flag;

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init ()
{
TMOD=0x05;// T0的方式1
TH0=0;
TL0=0;
TR0=1;//计数器0的设置


d_q=0;
d_h=0;
}
main()
{
init ();
while(1)
{
d_q=1;
delay(5);
d_q=0;
delay(7);
dot=TL0;
if(dot>5)
{
TH0=0;
TL0=0;
}
dot=TL0;
if(dot==5)
		{       
 //主要是从这儿开始的
			   TL0=0;
			   d_q=0;
d_h=0;
d_z=0;
d_y=0;
feng=1;
delay(600);
feng=0;
delay(600);
feng=1;
delay(600);
feng=0;
delay(600);
feng=1;
delay(600);
// 后面在中断子程序里面的相同部分也是一样
feng=0;
delay(2000);
d_q=1;
TL0=0;
flag=0;
}
dot=TL0;
if(dot==3&flag==0)
{
flag=1;
feng=1;
delay(600);
feng=0;
delay(4400);
d_q=1;
TL0=0;
}

d_q=1;
delay(8);
d_q=0;

}

}
[此贴子已经被作者于2010-5-4 14:06:49编辑过]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:23509 发表于 2010-5-2 10:15 | 只看该作者
 怎么没人指点呢!哪位高手把这程序拷到keil中调试调试,帮小弟查查问题所在。谢谢
回复

使用道具 举报

板凳
ID:20559 发表于 2010-5-3 21:36 | 只看该作者

你这个程序看起来问题有点大!可能定时器会 跑飞。建议把定时器中断在理解一下吧!

回复

使用道具 举报

地板
ID:23509 发表于 2010-5-4 13:46 | 只看该作者

哦, 这不是原程序, 我只是把它用作的普通计数器 就记一个0—5的数,采用的是查询的方式没采用中断的方式!EA=1,是原程序中的外部中断,忘删了!

回复

使用道具 举报

5#
ID:23509 发表于 2010-5-4 13:47 | 只看该作者
以下是引用247891933hao在2010-5-3 21:36:46的发言:

你这个程序看起来问题有点大!可能定时器会 跑飞。建议把定时器中断在理解一下吧!

哦, 这不是原程序, 我只是把它用作的普通计数器 就记一个0—5的数,采用的是查询的方式没采用中断的方式!EA=1,是原程序中的外部中断,忘删了!

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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