微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 帮小弟 解释一下这个程序 各位大侠

帮小弟 解释一下这个程序 各位大侠

时间:10-02 整理:3721RD 点击:
  • #include “key.h”
  • #define KeyBufSize 16 //定义按键缓冲队列字节数
  • unsigned char KeyBuf[ KeyBufSize ]; //定义一个无符号字符数组作为按键缓冲队列。该队列为先进
  • //先出,循环存取,下标从0到 KeyBufSize-1
  • unsigned char KeyBufWp=0; //作为数组下标变量,记录存入位置
  • unsigned char KeyBufRp=0; //作为数组下标变量,记录读出位置
  • //如果存入位置与读出位置相同,则表明队列中无按键数据
  • unsigned char keyHit( void )
  • { if( KeyBufWp == KeyBufRp ) return( 0 ); else return( 1 ); }
  • unsigned char keyGet( void )
  • { unsigned char retVal; //暂存读出键值
  • while( keyHit()==0 ); //等待按键,因为函数keyHit()的返回值为 0 表示无按键
  • retVal = KeyBuf[ KeyBufRp ]; //从数组中读出键值
  • if( ++KeyBufRp >= KeyBufSize ) KeyBufRp=0; //读位置加1,超出队列则循环回初始位置
  • return( retVal );
  • }
  • void keyPut( unsigned char ucKeyVal )
  • { KeyBuf[ KeyBufWp ] = ucKeyVal; //键值存入数组
  • if( ++KeyBufWp >= KeyBufSize ) KeyBufWp=0; //存入位置加1,超出队列则循环回初始位置
这个函数里
  • unsigned char KeyBufWp=0; //作为数组下标变量,记录存入位置
  • unsigned char KeyBufRp=0; //作为数组下标变量,记录读出位置
  • //如果存入位置与读出位置相同,则表明队列中无按键数据
    这个怎么解释啊  为 什么说“如果存入位置与读出位置相同,则表明队列中无按键数据
    ”小弟看不明白  各位 大侠帮忙解释一下!

各位大侠 帮帮忙啊

看成一个圆周;最开始这两个变量都为0,当 KeyBufWp加1后, KeyBuRp也加1读数,直到这两个变量相等,待读的数就读完了

支持

支持

上一篇:pic单片机
下一篇:PCA捕获和定时器中断

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top