標(biāo)題:
單片機(jī)計(jì)數(shù)輸出不穩(wěn)定
[打印本頁]
作者:
bachana
時間:
2019-3-7 17:11
標(biāo)題:
單片機(jī)計(jì)數(shù)輸出不穩(wěn)定
請各位大神幫忙看下,為什么這個程序在運(yùn)行的時候,預(yù)計(jì)截?cái)嗟奈恢每偸亲儞Q,即計(jì)數(shù)完成周期不定(預(yù)計(jì)11步,實(shí)際在第8、9、10都可能會提前計(jì)數(shù))請大神幫忙看下程序是不是哪邊不完善
#include <REGX52.H>
sbit k1=P3^0;
sbit LED1=P0^1;
unsigned char count=0;
unsigned char flag=0;
unsigned char cs=0;
void delay(unsigned char i)//延時i個機(jī)器周期,有誤差
{
while(i--);
}
void tim0() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
cs++;//每50ms加1
}
void main()
{
TMOD=0x01;//設(shè)置定時器0工作方式1
TH0=0x3c;
TL0=0xb0;//50ms
TR0=1;
ET0=1;//開定時器0
EA=1;//開中斷
//設(shè)置定時器0工作方式1,50ms進(jìn)一次
while(1)
{
if(k1==0)//判斷按鍵按下
{
delay(500);//延時防抖
if(k1==0)flag=1;//標(biāo)志位置1
}
if(k1==1&&flag==1)//判斷按鍵松開
{
delay(500);//延時防抖
if(k1==1)
{
flag=0;count++;//標(biāo)志位置0,次數(shù)+1
if(count==1)
{
cs=0;//清空時間標(biāo)志位
while(cs!=10);//等待500ms
LED1=0;
}
if(count==2)
{
cs=0;//清空時間標(biāo)志位
while(cs!=10);//等待750s
LED1=1;
}
if(count==3)
{
cs=0;//清空時間標(biāo)志位
LED1=1;
}
if(count==4)
{
cs=0;//清空時間標(biāo)志位
LED1=1;
}
if(count==5)
{
cs=0;//清空時間標(biāo)志位
LED1=1;
}
if(count==6)
{
cs=0;//清空時間標(biāo)志位
LED1=1;
}
if(count==7)
{
cs=0;//清空時間標(biāo)志位
LED1=1;
}
if(count==8)
{
cs=0;//清空時間標(biāo)志位
LED1=1;
}
if(count==9)
{
cs=0;//清空時間標(biāo)志位
LED1=1;
}
if(count==10)
{
cs=0;//清空時間標(biāo)志位
LED1=1;
}
if(count==11)
{
cs=0;//清空時間標(biāo)志位
while(cs!=10);//等待0.5s
LED1=1;
count=0;//重新計(jì)數(shù)
}
}
}
}
}
作者:
wulin
時間:
2019-3-7 21:18
看不出樓主想要實(shí)現(xiàn)什么功能,莫非是為了按11次按鍵LED1閃一下?那也不必寫這么多條語句。
作者:
zhengchong60
時間:
2019-3-7 22:33
看不出樓主想要實(shí)現(xiàn)什么功能,想好了思路再重編
作者:
bachana
時間:
2019-3-8 08:24
wulin 發(fā)表于 2019-3-7 21:18
看不出樓主想要實(shí)現(xiàn)什么功能,莫非是為了按11次按鍵LED1閃一下?那也不必寫這么多條語句!
對的 是需要按鍵11次亮燈1次 但是不知道程序有什么問題 在輸出的時候次數(shù)上總是不定 !
作者:
yzwzfyz
時間:
2019-3-8 08:29
自己不把意圖說清楚,先要別人花時間猜。
作者:
HC6800-ES-V2.0
時間:
2019-3-8 08:56
大既搞懂你的意圖了。
第一:if太多,掃描鍵盤時間達(dá)長,不能連續(xù)按鍵。我快速地按鍵,計(jì)數(shù)會很多燈才滅。
第二:你在數(shù)次數(shù)時,第一次和第11次燈的狀態(tài)一樣,會不會數(shù)錯了?
我改成前10次都是一個狀態(tài)亮,只有第11次是滅,慢慢按鍵,一次一次地,就可以到11次燈滅。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1