单片机一键长按与短按按键实现的c程序有问题,实在不知道是哪里有问题,请帮助修改一下,谢谢!

功能如下:长按2秒灯全亮(我用的开发板),短按实现流水灯。

程序如下:

#include

#include

#define uchar unsigned char

#define uint unsigned int

uint num,flag,gb,ga;

uchar aa=0xfe;

sbit key1=P3^7;

void delayms(uint);

void delayms(uint x)                     //延时函数

{

uint i,j;

for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

void init()                                  //初始化函数

{

TMOD=0x01;                          //设置定时器0为工作方式1

TH0=(65536-1000)/256;            //装初值1ms一次中断

TL0=(65536-1000)%256;

EA=1;

ET0=1;

}

void keyscan()

{

if (key1==0)                                   //按键去抖

delayms(10);

if (key1==0)                                   //有按键按下则启动定时器

{

TR0=1;

gb=1;}

if((!key1==0)&&(gb==1))

{TR0=0;                                       //按键弹起则关闭定时器

ga=1;}                          //ga,gb分别表示按键按下和弹起过程有效标志位

if(num>2000)                                    //长按有效

{ flag=1;num=0;}

while(flag==1)

{   P1=0;                                       //灯全亮

if(key1==0)                               //有按键按下则退出长按程序

flag=3;

}

if((num<2000)&&(ga==1))                  //短按有效

{flag=2;num=0;}

while(flag==2)                                //流水灯循环亮

{ P1=aa;

delayms(500);

aa=_crol_(aa,1);

if(key1==0)                                  //有按键按下则退出短按程序

flag=3;}

}

void main()

{

init();

while(1)

{

keyscan();

}

}

void T0_time() interrupt 1

{

TH0=(65535-1000)/256;

TL0=(65535-1000)%256;

num++;

}

单片机 c语言 按键长按短按,求助:单片机一键长按与短按按键实现的c程序有问题...相关推荐

  1. 单片机c语言必背代码_最适合单片机编程的高级语言,除了C语言,别无选择!...

    单片机为什么还在用C语言编程?答案是:C语言是最适合单片机编程的高级语言. 这个问题的意思应该是:现在有很多很好用的高级语言,如java,python,VC等等,为什么这些语言不能用来编写单片机程序呢 ...

  2. 51单片机c语言宏定义是什么意思,51单片机的C语言宏定义应用.doc

    1.预编译处理是单片机C语言程序设计中经常用到的一种方法.通过一些预处理命令可以为C语言本身提供许多功能和符号的扩充,增强C语言程序的灵活性和方便性. 常用的预处理命令有:宏定义.文件包含.条件编译等 ...

  3. 单片机c语言有没有跳转指令,51单片机跳转指令

    @ 无条件转移bai指令(共4条) LJMP addr16 : PC〈-du- addr16 AJMP addr11 : PC〈-- PC+2 , PC10-0〈-- addr11 SJMP rel ...

  4. 单片机c语言常用的语句有几条,单片机C语言常用语句详解

    <单片机C语言常用语句详解>由会员分享,可在线阅读,更多相关<单片机C语言常用语句详解(22页珍藏版)>请在人人文库网上搜索. 1.C51编程中常见语句的总结.首先,C51定义 ...

  5. 单片机c语言程序设计中可以不分大小写,单片机考试复习题及答案

    选择题 1.主频为12MHz的单片机他的机器周期为(c). A.1/12微秒 B.0.5微秒 C.1微秒 D.2微秒 2.MCS-51系列单片机是属于(C)体系结构. A.冯诺依曼 B.普林斯顿 C. ...

  6. atmega16单片机c语言程序设计经典实例pdf,《AVR单片机C语言程序设计实例精粹》.pdf...

    AutodeskAsiaPteLtd主编的<AutodeskRevitStructure2012应用宝典>是对AutodeskRevitStructure2012进行全面介绍的权威用书.全 ...

  7. 单片机c语言每隔1m闪烁一次,单片机c语言闪烁灯程序

    1.闪烁灯 1.实验任务 如图所示:在端口上接一个发光二极管L1,使L1 在不停地一亮 灭,一亮一灭的时间间隔为秒. 2.电路原理图 图系统板上硬件连线把"单片机系统"区域中的端口 ...

  8. 51单片机c语言数字输入输出,第五章 51单片机C语言程序--输入输出接口.pdf

    四川师范大学成都学院 51单片机原理及应用 单片机输入/输出口(I/O口) 主讲教师:刘强 四川师范大学成都学院电子竞赛培训实验中心(刘强) 明德.博学.求实.创新 复习1.单片机的外观 AT89C5 ...

  9. 单片机C语言拉高1位,第二讲 单片机C语言之12864液晶显示

    前面一讲我们焊接了C51的最小系统.这讲里我们将继续焊接上液晶显示相关电路,并分别实现用12864显示一个汉字,字符串,数字,浮点数以及可调节的电子时钟. 概念 点阵式液晶显示模块(LCD)广泛应用于 ...

  10. 51单片机c语言测距,超声波HM55B测距(STC10F08单片机C程序)

    名称:超声波测距 作者:Acebit本文引用地址:http://www.eepw.com.cn/article/201611/320529.htm 信息:STC10F08单片机,晶振11.0592MH ...

最新文章

  1. 如何评价小马智行投后估值60亿美元?无人车的追涨杀跌已经开始
  2. 南邮宽字节(sql_gbk)注入
  3. python discuz搜索api_Python + Bottle + 谷歌搜索Api 实现简单搜索引擎
  4. 【kafka系列】centos7系统安装kafka
  5. 北风设计模式课程---创建模式、结构模式、行为模式的区别
  6. yolov5-detect.py解析与重写
  7. ubuntu开机自动关闭独显,使用集成显卡
  8. 中文命名实体识别总结
  9. python的debug为什么点第一行直接运行结束了_Python 代码调试工具 pdb 快速入门
  10. LeetCode刷题指南
  11. SDM660 xbl阶段使能I2C 设备实现
  12. vc++指定区域截屏
  13. 《初等数论》:最大公因数与最小公倍数
  14. Ubuntu配置GoldenDict词典翻译-划线翻译
  15. XXOO 传说90黑阔论坛
  16. php 实现curl下载,如何利用phpcurl实现多进程下载文件类
  17. 数据库监控设计-DBA-专属
  18. 如何使用html代码给文字加边框?
  19. Java之自动拆装箱及享元模式应用
  20. 青春末路,独自行走(转)

热门文章

  1. jquery判断页面、图片是否加载完成
  2. 120.数据缓存cache的基本概念
  3. C++程序设计之可调用对象与标准库function
  4. Matlab中的CVX工具包安装
  5. android 超链接事件,Android实现捕获TextView超链接的方法
  6. android如何添加gif,Android加载Gif和ImageView的通用解决方案:android-gif-drawable(1)...
  7. 050_学习的CSS属性
  8. Android源代码介绍,Android-Log源码详解
  9. 大学计算机网络技术考试题,2017年大学生计算机考试的试题
  10. android webview静态方法,android – 将静态HTML加载到Webview中