📄 ps2jiaozheng_naoling.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 + -