欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
請問我這段單片機開關控制繼電器代碼有什么問題?
[打印本頁]
作者:
dengtianyun1997
時間:
2018-6-19 17:26
標題:
請問我這段單片機開關控制繼電器代碼有什么問題?
P1.4接繼電器的控制口,控制繼電器的開關
P0.0接開關K1
按下開關后定時2秒后在給P1.4輸入低電平,選通繼電器。
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit rely=P1^4;
sbit k1=P0^0;
void InitTimer1(void)
{
TMOD = 0x10;//定時2.5ms
TH1 = 0xFC;
TL1 = 0x18;
TR1 = 0;
}
void delay(u16 i)
{
while(i--);
}
void keyscan()
{
u8 m=0;
if(m==0)
{
if(k1==0)
{
delay(1000);
if(k1==0)
{
TR1=1;
m=1;
}
while(!k1);
}
}
else
{
if(k1==0)
{
delay(1000);
if(k1==0)
{
rely=1;
m=0;
}
while(!k1);
}
}
}
void process()
{
u8 j=0;
if(TF1==1)
{
TF0=0;
TH0=0XFC;
TL0=0X18;//定時1ms
j++;
if(j==2000) //1s
{
j=0;
rely=0;
}
}
}
void main()
{
while(1)
{
keyscan();
process();
}
}
作者:
angmall
時間:
2018-6-19 23:21
#include<reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit rely=P1^4;
sbit k1=P0^0;
u8 m=0; //要用全局變量
//u8 j=0; //有問題 u8 是0-255
u16 j=0; //要用全局變量
void InitTimer1(void) //定時器初始化函數
{
TMOD = 0x10;//定時2.5ms
TH1 = 0xFC;
TL1 = 0x18;
TR1 = 0; //關定時器1定時器開關
}
void delay(u16 i)
{
while(i--);
}
void keyscan()
{
//u8 m=0; //有問題 要用全局變量
if(m==0)
{
if(k1==0)
{
delay(1000);
if(k1==0)
{
TR1=1; //打開定時器1定時器開關
m=1;
}
while(!k1);
}
}
else
{
if(k1==0)
{
delay(1000);
if(k1==0)
{
rely=1;
m=0;
}
while(!k1);
}
}
}
void process() //使用軟件查詢方式 定時計數器1
{
//u8 j=0; //有問題 要用全局變量
if(TF1==1) // 定時器1溢出標志位
{
TF0=0;
TH0=0XFC;
TL0=0X18;//定時1ms
j++;
if(j==2000) //1s
{
j=0;
rely=0;
}
}
}
void main()
{
InitTimer1(); // 有問題 沒有執行定時器初始化函數
while(1)
{
keyscan();
process();
}
}
復制代碼
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1