帮小弟 解释一下这个程序 各位大侠
时间: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读数,直到这两个变量相等,待读的数就读完了
支持
支持