亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
利用單片機中斷方式控制按鍵次數不同時亮燈不同,但按鍵后燈都不亮。哪里錯了?
[打印本頁]
作者:
一人心0511
時間:
2018-5-6 16:02
標題:
利用單片機中斷方式控制按鍵次數不同時亮燈不同,但按鍵后燈都不亮。哪里錯了?
#include "reg51.h"
sbit led1=P2^4;
sbit led2=P2^5;
sbit led3=P2^6;
sbit led4=P2^7;
sbit k1=P2^0;
sbit k2=P2^1;
sbit k4=P3^3;
unsigned char presskeynum=0;
void delay(unsigned int i)
{
unsigned int j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void key()
{
if(presskeynum==1)
{
if(k1==0)
{
delay(30);
led1=0;
}
if(k2==0)
{
delay(30);
led2=0;
}
}
if(presskeynum==2)
{
if(k1==0)
{
delay(10);
led3=0;
}
if(k2==0)
{
delay(10);
led4=0;
}
}
}
void Int0INit()
{
IT0=1;
EX0=1;
EA=1;
}
void main()
{
led1=1;
led2=1;
led3=1;
led4=1;
Int0INit();
while(1);
}
void Int0() interrupt 0
{
delay(10);
if(k4==0)
{
presskeynum++;
if(presskeynum==3)
presskeynum=0;
else key();
}
}
作者:
一人心0511
時間:
2018-5-6 17:37
剛發現k4的引腳寫錯了,應該是P3^2,并不是這的錯
作者:
HC6800-ES-V2.0
時間:
2018-5-7 09:19
程序的邏輯有大問題,還有小問題!!!!!
第一:邏輯大問題是:中斷服務函數void Int0() interrupt 0中的那個條件語句
if(presskeynum==3)
presskeynum=0;
else key();
我們來看看邏輯:你的想法——按下k4,產生中斷,然后去掃描獨立按鍵,產生不同現象。——想法對,程序邏輯錯了!!!!!
你想啊,按下k4產生中斷后,到掃描獨立按鍵,程序要多少時間?你的操作要用多少時間?——你的程序是連續執行的。
所以,沒有任何反應,很正常——時間上搞不及嘛。——是不是大大的邏輯問題?!
所以,我修改為這樣:中斷服務函數中的 else key();語句刪除,將 key()放在主循環中
while(1)//注意,你程序中這里有分號,一定一定要刪除
{
key();
}
我在我的板子上,已經調試成功!
第二:小問題——你的外部中斷服務函數中,沒有清除中斷標志——只能按一次k4產生一次中斷,以后就不會再有新的外部中斷產生了——外部中斷服務函數最后一條語句,一定要加上清除中斷標志語句IE0=0;
好了,程序功能實現了。
你再好好想想嘛!
作者:
一人心0511
時間:
2018-5-7 09:57
HC6800-ES-V2.0 發表于 2018-5-7 09:19
程序的邏輯有大問題,還有小問題!!!!!
第一:邏輯大問題是:中斷服務函數void Int0() interrupt 0中 ...
非常感謝,主要是剛學這,不太懂
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1