欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機同時檢測兩個端口,并且延時輸出?
[打印本頁]
作者:
貴菁521
時間:
2022-9-2 23:09
標題:
單片機同時檢測兩個端口,并且延時輸出?
有四個IO,1入1出,2入2出,當1入有信號時,1出然后延時幾秒,在此過程中當2入有信號時也2出然后延時幾秒。求指導
在此過程中彼此互不干擾
作者:
wulin
時間:
2022-9-3 07:20
用初學者能看懂的方式寫個示例
/*****************************************************
IN_1、IN_2低電平觸發,OUT1、OUT2輸出高電平并經延時后
恢復低電平,兩路控制獨立工作,互不關聯
觸發電平寬度與延時時間無關,延時輸出期間重復觸發無效
*****************************************************/
#include <reg51.h>//頭文件
//端口定義
sbit IN_1=P1^0;
sbit IN_2=P1^1;
sbit OUT1=P2^0;
sbit OUT2=P2^1;
//變量聲明
unsigned int time_1=0,time_2=0;//定時時間變量
bit sign_1=0,sign_2;//觸發信號狀態標志位變量
//主函數
void main(void)
{
//初始化端口
IN_1=1;
IN_2=1;
OUT1=0;
OUT2=0;
//初始化定時器
TMOD = 0x01;
TH0 = 0xFC;//12MHz 1ms
TL0 = 0x18;
EA = 1;
ET0 = 1;
TR0 = 1;
//主循環
while(1)
{
if(!IN_1)
{
if(!sign_1 && time_1==0)
{
sign_1=1;
time_1=2000;//預置時間2s
OUT1=1;
}
}
else sign_1=0;
if(!IN_2)
{
if(!sign_2 && time_2==0)
{
sign_2=1;
time_2=5000;//預置時間5s
OUT2=2;
}
}
else sign_2=0;
}
}
//定時器0中斷服務函數
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0xFC;
TL0 = 0x18;
if(time_1>0)//1通道延時
{
time_1--;
if(time_1==0)
OUT1=0;
}
if(time_2>0)//2通道延時
{
time_2--;
if(time_2==0)
OUT2=0;
}
}
復制代碼
作者:
yzwzfyz
時間:
2022-9-3 08:11
不存在難度,因為原本就需要延時。程序在延時的過程中可以做做多事,判斷兩個輸入,自然不成問題。
不知樓主困在哪里了。輪流進行判讀,或一次讀入,輪流判斷都可以,然后再延時輸出。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1