找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[求助]用keil仿真是有些程序段编译执行!

[复制链接]
跳转到指定楼层
楼主
ID:23509 发表于 2010-5-17 21:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 
最近做了一个小的项目,写了一段程序,编译没有错,但是在用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;

}

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

使用道具 举报

沙发
ID:24010 发表于 2010-5-22 18:57 | 只看该作者

你的意思是用定时器的计数值来控制引脚输入输出的时序吗?

这种想法太天真了,你的定时器与你执行一句代码的时间是同一数量级,可与Delay()却有很大的差别。你在语句中加入Delay()显然会对TL0造成不可估计的影响啊,根本无法确定程序执行到指定位置的TL0值,所以用这个来控制太不可能了。

有问题一起探讨吧,QQ: 616743429

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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