找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5028|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

[求助]用keil仿真是有些程序段編譯執(zhí)行!

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:23509 發(fā)表于 2010-5-17 21:12 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
 
最近做了一個(gè)小的項(xiàng)目,寫(xiě)了一段程序,編譯沒(méi)有錯(cuò),但是在用keil進(jìn)行仿真時(shí),有的程序段直接跳過(guò)不執(zhí)行了,百思不得其解!望哪位高手指點(diǎn)指點(diǎn)! 
附:
#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;//計(jì)數(shù)器0的設(shè)置


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)
		{       
 //主要是從這兒開(kāi)始的
			   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空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:24010 發(fā)表于 2010-5-22 18:57 | 只看該作者

你的意思是用定時(shí)器的計(jì)數(shù)值來(lái)控制引腳輸入輸出的時(shí)序嗎?

這種想法太天真了,你的定時(shí)器與你執(zhí)行一句代碼的時(shí)間是同一數(shù)量級(jí),可與Delay()卻有很大的差別。你在語(yǔ)句中加入Delay()顯然會(huì)對(duì)TL0造成不可估計(jì)的影響啊,根本無(wú)法確定程序執(zhí)行到指定位置的TL0值,所以用這個(gè)來(lái)控制太不可能了。

有問(wèn)題一起探討吧,QQ: 616743429

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表