中易网

如何用按键调整单片机的延时时间

答案:1  悬赏:0  
解决时间 2021-01-25 07:57
如何用按键调整单片机的延时时间
最佳答案
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar key1,key2,key3; //定义三个按键的代号
uchar a,i,temp,temp1; //定义主体函数所用变量
uint x,y,z; //定义延时函数所用三个变量
void delay1(uint); //定义延时函数1
void delay2(uint); //定义流水灯大间隔所用延时函数
void keyscan(); //定义键盘扫描函数
void main()
{ TMOD=0x01; //为了保证及时扫描到键盘变动,只好开启中断了
TH0=(65536-500)/256;//中断0.5ms开启一次
TL0=(65536-500)%256;
EA=1;
ET0=1;
a=0xfe;
i=0;
temp1=1;
while(1)
{

P1=a;
temp=a<<1;
a=a>>7;
a=temp|a;
i=i+1;
delay1(100);
if(i==8)
{
i=0;
delay2(temp1);
}
}
}
void delay1(uint z)
{

for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void delay2(uint temp1)
{

for(x=temp1;x>0;x--)
for(y=1100;y>0;y--);
}
void keyscan()
{
if(key1==0)
{
delay1(10); //键盘消抖
if(key1==0)
{
temp1=10;
while(!key1); //等待按键释放
}
}
if(key2==0)
{
delay1(10); //键盘消抖
if(key1==0)
{
temp1=20;
while(!key2); //等待按键释放
}
}
if(key3==0)
{
delay1(10); //键盘消抖
if(key3==0)
{
temp1=30;
while(!key3); //等待按键释放
}
}
}
void T0_time() interrupt 1
{
TH0=(65536-500)/256; //重装初值
TL0=(65536-500)%256;
keyscan();

}
我的proteus坏了,不能模拟,现手写的,如果有问题可以再告诉我,我的QQ378773957,用的ATMEL51单片机
三个按所在的IO口我没有进行位定义,你在开头位定义一下应该就可以可以了
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
山旮旮土特产NO.2地址在什么地方,我要处理点
大便有食物残渣怎么回事
花之语花坊地址在什么地方,我要处理点事
两梯两户好还是一梯一户好
摔一跤,膝盖疼是为什么
民航物流合作协议
房山去哪交违章罚款
孕期检查的是孕酮过低怎么办?
农村盖房大门能和邻居家大门对齐吗
家用取暖燃气壁挂炉主机部分使用两年后是否需
TIFFANY在中国那些地方有专卖店?
鼻塞流鼻涕怎么办
请问如何做好一名淘宝客服?
微笑也美丽作文怎么写
补牙 用的光固化材料 价格都有哪些?都什么材
推荐资讯
1-20T/H纯水设备保养计划书
小学作文怎么能写好?
我家的卫星电视不好 电脑用哪个网络电视软件
孩子好动怎么办???
贵溪旅馆地址好找么,我有些事要过去
oppor9怎么把电话本从sim卡上导出
济南成人如何长高,在那里
漫步者音箱防尘罩怎么拆
唐家庄村地址有知道的么?有点事想过去
钦字几画五行属什么的字跟钦字笔画相同属金的
(1一0.7)x=0.621
A+BSinθ+CSinθ+D=0是什么方程
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?