久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
求助大神一個用兩個按鍵控制的程序
[打印本頁]
作者:
學徒工--靜
時間:
2017-12-12 06:50
標題:
求助大神一個用兩個按鍵控制的程序
程序是這樣控制的兩個按鍵,按第一個按鍵選擇1~9顯示在一位數碼管上,也就是加1,單位為加一秒,選擇幾就是想定時幾秒。選擇好定時秒數后按第二個按鍵就是啟動選擇的定時秒數,例如:第一個按鍵選擇顯示6,按第二個按鍵后打開輸出IO口定時6秒關閉,只要不按第一個按鍵選擇顯示秒數,按第二個按鍵可以一直循環執行選擇的定時秒數,求各位大神賜教,謝謝
作者:
wulin
時間:
2017-12-13 09:57
不知道你用的什么MCU和外圍電路,只能按51給你寫了程序,端口定義根據實際電路自行修改。
#include <AT89X52.H>
#define uchar unsigned char
#define uint unsigned int
sbit OUT=P1^0; //輸出
sbit key1=P3^4; //鍵1
sbit key2=P3^5; //鍵2
sbit dula=P2^6; //段選
sbit wela=P2^7; //位選
uchar code table[]={ //共陰數碼管0~f
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar Cnt50ms=0,Cnt1s=0;
uchar Time=0;
bit flag=0;
void Timer0Init();
void keycan();
void display();
void Countdown();
void main()
{
Timer0Init(); //初始化定時器
while(1)
{
keycan(); //按鍵掃描
display(); //顯示
Countdown();//倒計時
}
}
void Timer0Init() //50毫秒@12.000MHz
{
TMOD= 0x01; //設置定時器模式
TL0 = 0xB0; //設置定時初值
TH0 = 0x3C; //設置定時初值
// TF0 = 0; //清除TF0標志
// TR0 = 1; //定時器0開始計時
EA=1; //開總中斷
ET0=1; //開T0中斷
}
void keycan()
{
static bit key1_sign=0,key2_sign=0; //按鍵自鎖標志
static uchar count1=0,count2=0; //消抖計數變量
if(!key1) //檢測按鍵1如果按下為0
{
if((key1_sign==0)&&(flag==0)) //按鍵自鎖標志為0
{
count1++; //消抖計數
if(count1>=250) //消抖延時
{
key1_sign=1; //按鍵自鎖標志置1
Cnt50ms=0;
Time++; //定時時間變量+1
if(Time>=10)
Time=0;
}
}
}
else
{
key1_sign=0; //按鍵自鎖標志清0
count1=0; //消抖計數清0
}
if(!key2) //檢測按鍵2如果按下為0
{
if(key2_sign==0) //按鍵自鎖標志為0
{
count2++; //消抖計數
if(count2>=250) //消抖延時
{
key2_sign=1; //按鍵自鎖標志置1
Cnt1s=Time; //傳遞定時時間
if(Cnt1s>0)
{
OUT = 0; //低電平輸出
flag= 1; //禁止key1操作
TR0 = 1; //開啟定時器
}
}
}
}
else
{
key2_sign=0; //按鍵自鎖標志清0
count2=0; //消抖計數清0
}
}
void display()
{
if(flag==0)
P0=table[Time]; //顯示定時時間
else
P0=table[Cnt1s]|0x80;//加點表示倒計時工作中
dula=1;
dula=0;
P0=0x7e; //6位數碼管只使用第1位
wela=1;
wela=0;
}
void Countdown() //倒計時
{
if(flag==1)
{
if(Cnt1s==0)
{
TR0 = 0; //關閉定時器
OUT = 1; //停止輸出
flag= 0; //允許key1操作
}
}
}
void Timer0() interrupt 1
{
TL0 = 0xB0; //設置定時重裝值
TH0 = 0x3C; //設置定時重裝值
Cnt50ms++;
if(Cnt50ms>=20)//1秒
{
Cnt50ms=0;
Cnt1s--;
}
}
作者:
lhq_2010
時間:
2017-12-13 11:51
向大神學習了
作者:
學徒工--靜
時間:
2017-12-24 08:23
wulin 發表于 2017-12-13 09:57
不知道你用的什么MCU和外圍電路,只能按51給你寫了程序,端口定義根據實際電路自行修改。
#include
#def ...
謝謝您非常感謝,我會好好學習的
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
精品久久精品
|
伊人天堂网
|
国产精品自拍av
|
97精品超碰一区二区三区
|
亚洲精品一区二区二区
|
色约约视频
|
欧美www在线
|
久久这里只有精品首页
|
欧美13videosex性极品
|
亚洲欧美综合
|
欧美日本韩国一区二区三区
|
久久国产日韩欧美
|
精品中文字幕在线
|
日本三级网站在线观看
|
午夜精品一区二区三区三上悠亚
|
中国一级特黄毛片大片
|
中文字幕 国产精品
|
国产探花在线精品一区二区
|
国产精品久久欧美久久一区
|
欧美中文在线
|
一区二区三区在线免费观看
|
有码在线
|
免费精品视频
|
www.色五月.com
|
久久久久国产精品午夜一区
|
日韩欧美在线观看
|
久久91
|
天天干天天谢
|
99精品在线观看
|
性一区
|
久久久精选
|
波多野结衣一区二区三区在线观看
|
亚洲va欧美va人人爽午夜
|
成人免费在线观看视频
|
欧美日韩精品一区
|
日韩欧美第一页
|
久久久久亚洲
|
亚洲天堂久久
|
亚洲一区影院
|
精品伊人
|
成人av网站在线观看
|