⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ps2jiaozheng_naoling.c

📁 红外控制万年历
💻 C
字号:

sbit ps2_key_data = P3^4;
sbit ps2_key_clk  = P3^2;                 //时钟线接入中断口

unsigned char data ps2_intnum=0;
unsigned char data ps2_linshi=0;          //中间运算需要
unsigned char ps2_keyv=0;                 //键值
unsigned char ps2_flag = 0;               //标识是否发送完一个字符
unsigned char ps2_jiaozheng[7];           //
unsigned char ps2_cishu;       


ps2_interrupt_ini()
{

   IT1 = 1;                               //设外部中断0为下降沿触发
   EX0=1;                                 //开中断0
   EA = 1;                                //开总中断
}

void ps2_interrupt(void) interrupt 0 
{

   if ((ps2_intnum>0) && (ps2_intnum <9))  //前8位数据为对应的按键编码
     {
         ps2_keyv=ps2_keyv>> 1;            //因键盘数据是低>>高,结合上一句所以右移一位
         if (ps2_key_data==1)              //当键盘数据线为1 时
           {
		      ps2_keyv =ps2_keyv | 0x80;   //存储一位
           } 
                                           //中断次数加一(中断一次接收一位数据)
	  }
   ps2_intnum++;
   if (ps2_intnum > 10)                    //中断11 次后数据发送完毕
     {
         ps2_intnum = 0;                   //当中断11 次后表示一帧数据收完,清变量准备下一次接收
         ps2_flag = 1;                     //标识有字符输入完了
	     ps2_linshi=ps2_keyv;              //取出按键编码,用于下面的运算
     }
  if(ps2_flag == 1)                        //
     {
	   ps2_flag=0;                         //准备下一次接收
	   switch ( ps2_linshi )               //为空格键时,键值与显示字符的对应关系
          { 

            case 0x38: 
			        time_daoji_enable=~time_daoji_enable;    //a,倒计时开/关
					break; 
            case 0x64: 
			       time_naoling_enable=~time_naoling_enable; //b,闹铃开/关
					break; 
	     }
	 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -