keil流水灯c语言程序两个一起亮,我用keil c51编了一个流水灯程序,编译无误却只有第一和第二个灯亮了,最后停在第一个灯处不动...
滿意答案
zJ張儉
2014.02.09
采納率:43%????等級:12
已幫助:10469人
你有幾個錯誤:
1 你的定時器沒有重裝,導致第一次中斷和后面的中斷時間不一樣,第一次時間短,后面的時間一直是以65536個周期中斷的.
2 你在中斷函數里用了 for 循環,for循環是一下子就執行完了的,而不是你想象的每中斷一次才執行一次.
for(a=0;a<8;a++)
{
P1=(P1<<1)+1; //----這一句,使得你的第二個燈亮,其實第三,四,五個都亮了,但是因為你的
//----For循環太快了,你看不出來
};
if(a==8) //---執行完for之后,a肯定等于8,所以執行下面的,結果就是第一個燈亮
P1=0xfe;
3 我給你改正的,程序:功能是先是第一個燈亮,再是第一個燈滅,亮2,然后2滅,亮3.....
void time1() interrupt 3
{
tt++;
if(tt==10)
{
tt = 0; //---這句表示中斷10次換一個燈,不可少
//----如果沒有這句tt = 0,則成了中斷256次才換一個燈
P1 =~(1<
//---最好要自己思考,想明白
aa++;
aa &= 0x07;
}
//----別忘記裝入初值,你這個應該是10ms中斷,然后是100ms換一次燈
//-----如果你不裝初值,就成了 65.536ms中斷一次,再加上你前面不加上 tt = 0;
//------就成了16秒才換一次燈
TH1=0xd8;
TL1=0xf0;
}
10分享舉報
總結
以上是生活随笔為你收集整理的keil流水灯c语言程序两个一起亮,我用keil c51编了一个流水灯程序,编译无误却只有第一和第二个灯亮了,最后停在第一个灯处不动...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机专业接本应用心理学,专接本接应用心
- 下一篇: java vector list,Jav