8051单片机抢答器C程序
}
/**************************************************************************
* MAX7219_ShutdownStart()
*
* 描述: 进入 shutdown 模式
* Arguments : none
* Returns : none
***************************************************************************/
void MAX7219_ShutdownStart (void)
{
MAX7219_Write(REG_SHUTDOWN, 0);
}
/**************************************************************************
* MAX7219_ShutdownStop()
*
* 描述: 退出 shutdown 模式
* Arguments : none
* Returns : none
***************************************************************************/
void MAX7219_ShutdownStop (void)
{
MAX7219_Write(REG_SHUTDOWN, 1);
}
/**************************************************************************
* MAX7219_Init()
*
* Description: MAX7219初始化模块; 应该先于其他MAX7219函数而被调用
* Arguments : none
* Returns : none
***************************************************************************/
void MAX7219_Init (void)
{
DA
CLK=1;
LOAD=1;
MAX7219_Write(REG_SCAN_LIMIT,1);//这里设置的是扫描两个数码管
MAX7219_Write(REG_DECODE, 0x00);
MAX7219_SetBrightness(INTENSITY_MAX);//设置最大亮度显示
MAX7219_DisplayTestStart();
MAX7219_DisplayTestStop();
MAX7219_ShutdownStop();
MAX7219_Clear();
}
/**************************************************************************
* Delay_100us()
*
* 描述: 延时100us,主要用在消除开关抖动时
* Arguments : none
* Returns : none
***************************************************************************/
void Delay10ms(void)
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
/**************************************************************************
* GetHostStartKey()
*
* Description: 取得主持人开始按键的键值
* Arguments : none
* Returns : 1-->主持人按键; 0-->主持人未按键
***************************************************************************/
Bool GetHostStartKey (void)
{
if (HOST_START ==1)
return 0;
else
Delay10ms ();//如果发现主持人按键接通,要先延时100us,防止抖动
if (HOST_START==1)
return 0;
else
return 1;//延时时候还是接通,则判断为该键确实按下
}
/**************************************************************************
* GetHostCancelKey()
*
* Description: 取得主持人取消按键的键值
* Arguments : none
* Returns : 1-->主持人按键; 0-->主持人未按键
***************************************************************************/
Bool GetHostCancelKey (void)
{
if (HOST_CANCEL ==1)
return 0;
else
Delay10ms ();//如果发现主持人按键接通,要先延时100us,防止抖动
if (HOST_CANCEL ==1)
return 0;
else
return 1;//延时时候还是接通,则判断为该键确实按下
}
/**************************************************************************
* GetCounter
*
* Description: 取得预先设置的倒计时时间
* Arguments : none
* Returns : none
***************************************************************************/
void GetCounter(void)
{
beginNum=1;//在所有开关都没有拨动的时候倒计时为1秒,比设置为0秒要好
intrCounter=20;//每一秒对应的中断次数为20次
if (SWITCH1_3==1)
{
beginNum+=3;
}
if (SWITCH2_2==1)
{
beginNum+=2;
}
if (SWITCH3_2==1)
{
beginNum+=2;
}
if (SWITCH4_1==1)
{
beginNum+=1;
}//以上判断语句为判断拨码开关状态
intrCounter=20*beginNum;//计算总扫描次数
}
/**************************************************************************
* GetPressed
*
* Description: 从P1口连接抢答端的四位来判断抢答情况
* Arguments : Byte KeyState-->P1 state
* Returns : 抢答端的号码 ; 0-->没人抢答
***************************************************************************/
Byte GetPressed(Byte KeyState)
{
Byte key;//记录抢答端的号码
KeyState&=0x0f;//取P1口的低四位
switch (KeyState)
{
case 0x0f: key=0;break;//全高,无人抢答
case 0x0e: key=1;break;//只有P1.1,key1抢答
case 0x0d: key=2;break;//只有P1.2,key2抢答
case 0x0b: key=3;break;//只有P1.3,key3抢答
case 0x07: key=4;bre
8051单片机抢答 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)