📄 ps2_key._c
字号:
/****************************************Copyright (c)**************************************************
** ADEmbed Development Co.,LTD.
** http://www.adembed.com
**--------------File Info-------------------------------------------------------------------------------
** File name: ps2_key.c
** Last modified Date: 2008-12-13
** Last Version: 1.0
** Descriptions: ps2 test.
**
**------------------------------------------------------------------------------------------------------
** Created by: junbolu
** Created date: 2008-12-13
** Version: 1.0
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
**ICC-AVR application builder : 2008-12-13
**Target : M16
**Crystal: 7.3728Mhz
**SCK ---- INT1
**DATA ---- PD3
**描述:读取PS2键盘编码,没有经过任何处理直接通过串口
**
**
**涉及知识点:
**
**
**
*******************************************************************************************************/
#include<iom16v.h>
#include<macros.h>
#define BAUD 9600
#define BARR (7372800/(16*BAUD)-1)
volatile unsigned char keycode=0;
volatile unsigned char step=0;
volatile char flag=0;
void port_init(void)
{
DDRD = 0Xe7;
PORTD = 0XFF;
}
void UART_init( void )
{
UBRRH = (unsigned char)(BARR>>8);
UBRRL = (unsigned char)BARR;
UCSRB = (1<<RXEN)|(1<<TXEN);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}
void uart_transmit(unsigned char data)
{
while(!(UCSRA&(1<<UDRE)));
UDR = data;
}
#pragma interrupt_handler int1_scr:3
void int1_scr(void)
{
step++;
if(step==1)
{
if((PIND&0X10)==1)
{
step = 0;
}
}
else if((step>=2)&&(step<=9))
{
keycode>>=1;
if((PIND&0X10)==0)
{
keycode|=0x00;
}
else
{
keycode|=0x80;
}
}
else if(step == 11)
{
flag = 1;
step = 0;
}
}
void main(void)
{
CLI(); //disable all interrupts
port_init();
UART_init();
MCUCR = 0x08;
GICR = 0x80;
SEI();
while(1)
{
if(flag ==1)
{
uart_transmit(keycode);
keycode = 0;
flag = 0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -