欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
我把單片機main函數標紅的代碼放在KeyPros函數里再從主函數調用現象不對
[打印本頁]
作者:
15361932382
時間:
2022-4-1 13:19
標題:
我把單片機main函數標紅的代碼放在KeyPros函數里再從主函數調用現象不對
//問題:我把main函數標紅的代碼放在KeyPros函數里再從主函數調用現象不對,現象為按k1蜂鳴器響,按k2蜂鳴器不響,再按k1時蜂鳴器不響(正確現象是想要響),main函數標紅的代碼直接放在main現象正確
單片機源程序如下:
/*
實驗說明:
此程序兼容了有源和無源蜂鳴器
實驗接線:
獨立按鍵模塊-->單片機管腳
K1-->P31
K2-->P30
蜂鳴器模塊-->單片機管腳
BEEP-->P15
實驗現象:
按下K1鍵,蜂鳴器發出聲音,按下K2鍵,蜂鳴器停止發聲
*/
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
sbit k1=P3^1;
sbit k2=P3^0;
sbit beep=P1^5;
u8 start;
/*******************************************************************************
* 函 數 名 : delay
* 函數功能 : 延時函數,i=1時,大約延時10us
*******************************************************************************/
void delay(u16 i)
{
while(i--);
}
void KeyJudge() //判斷k1按下和k2按下
{
if(k1 == 0)
{
delay(10);
if(k1 == 0)
{
while(k1 == 1);
delay(10);
while(k1 == 1);
start = 1;
}
}
if(k2 == 0)
{
delay(10);
if(k2 == 0)
{
while(k2 == 1);
delay(10);
while(k2 == 1);
start = 0;
}
}
}
void KeyPros()
{
if(start == 1)
{
beep = ~beep;
delay(1000);
}
else
{
beep = 1;
}
}
void main()
{
while(1)
{
KeyJudge();
if(start == 1)
{
beep = ~beep;
delay(1000);
}
else
{
beep = 1;
}
// KeyPros();
}
}
作者:
15361932382
時間:
2022-4-1 13:19
//問題:我把main函數標紅的代碼放在KeyPros函數里再從主函數調用現象不對,現象為按k1蜂鳴器響,按k2蜂鳴器不響,再按k1時蜂鳴器不響(正確現象是想要響),main函數標紅的代碼直接放在main現象正確
作者:
15361932382
時間:
2022-4-1 13:20
把main函數標紅的代碼放在KeyPros函數里再從主函數調用KeyPros函數為什么現象回不一樣
作者:
略略略來啦
時間:
2022-4-1 15:39
你試一下將K1=1;K2=1;beep =1;放在main函數里,while(1)函數之前
作者:
glinfei
時間:
2022-4-1 16:19
while(k1 == 1); //應該是0才對,后邊的也要改成0
作者:
15361932382
時間:
2022-4-1 16:24
glinfei 發表于 2022-4-1 16:19
while(k1 == 1); //應該是0才對,后邊的也要改成0
可以了,謝謝大佬,估計是抖動的問題
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1