用户手册-开发板10、ps2键盘_第1页
用户手册-开发板10、ps2键盘_第2页
用户手册-开发板10、ps2键盘_第3页
用户手册-开发板10、ps2键盘_第4页
用户手册-开发板10、ps2键盘_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PS2键PS2键盘是非常常用一中输入设备,广泛运用于大型电子设备中。在小型设备中PS2键盘也被广泛的使用,这个程序就是一个PS2的键盘程序,把PS2的按键码转换成相应的ASCII码。*#include<intrinsics.h>#include<stdio.h>#include<iolpc2103.h>#include"KU.h"//OSC#define //Coreclk#define //Perclk#define //Timertickper#defineTICK_PER_SEC #defineTIM_PER_S(Val)(PCCLK/Val)#defineMAX_TICK_PER #defineMIN_TICK_PER //TimerDeltaperiod#define #define #defineFosc#define (FOSC* (1~32),且#defineFcco (Fcclk*4) 16倍,范围为156MHz~320MHz#defineFpclk (Fcclk/4)*1 4倍#define #define #define #define #defineKey_Data #define #defineU8unsignedchar#defineU16unsignedshort#defineU32unsignedintstaticU8Key_UP=0,BF=staticU8KeyV=0; //接收键盘数据变量通码变量接受连续通码变量staticU8IntNum=0;//中数次数中断控制变量缓冲区数组缓冲区指针staticU8key=0; staticU8voiddelay(U32{while(--} voidUART0_Init(){U16U0LCR=0x83; //DLAB=1,可设置波特率Fdiv=(Fpclk/16)/UART_BPS; //设置波特率U0DLM=Fdiv/256;U0DLL=Fdiv%256;U0LCR=0x03;} voidUART0_PutChar(U32data){U0THR // //} UART0_PutString(char*str){{}}FunctionName:Parameters:Return:#pragma armvoidirq_handler{unsignedintvector;vector=VICVectAddr; //Gerrupt_function=(void(*)())vector;if(interrupt_function!=NULL){ //Callvectoredinterrupt}{ //Clearinterruptin}}FunctionName:Parameters:Return:Description:KeySPEEDinterruptvoidKey2IntHandler{//clearinterruptflagEXTINT=1;if((IOSET&LED1CON)==IOSET IOCLR= if((IntNum>0)&&(IntNum<9)){KeyV=KeyV>>1; ) }while //PS/2CLK{IntNum BF=1; Decode()则所Decode中所调用的所有函数要为再入函数} }FunctionName:Parameters:Return:Description:InitvoidKeysInit{//SettoEXTInterruptPINSEL1_bit.P0_16=1;//SerruptedgetosensitivemodeEXTMODE=0x5;//FallingEdgeEXTPOLAR=0;//Set//AssigntoIRQ//SetVICVectAddr0=(unsignedint)Key2IntHandler;tl0_bit.NUMBER=VIC_EINT0;tl0_bit.ENABLED=1;EXTINT=0x5;//Enableinterrupts}void{/**/PLLCON=1;#if((Fcclk/4)/Fpclk)==APBDIV=#if((Fcclk/4)/Fpclk)==VPBDIV=#if((Fcclk/4)/Fpclk)==VPBDIV=#if(Fcco/Fcclk)==PLLCFG=((Fcclk/Fosc)-1)|(0<<#if(Fcco/Fcclk)==PLLCFG=((Fcclk/Fosc)-1)|(1<<#if(Fcco/Fcclk)==PLLCFG=((Fcclk/Fosc)-1)|(2<<#if(Fcco/Fcclk)==PLLCFG=((Fcclk/Fosc)-1)|(3<<PLLFEED=0xaa;PLLFEED=PLLCON=3;PLLFEED=0xaa;PLLFEED=//Memorymapinitflashmemoryismapedon0address#ifdefFLASH}void{//InitPINSEL0=PINSEL1=PINSEL0 ////DisablefastIO//SetpinsconnecttoLEDsasoutputsIODIR=LED1CON;//AllLEDsoff}voidDecode(unsignedcharScanCode注意:如SHIFT+G为12H34HF0H34HF0H12H,也就是说shift的通码+G的通码+shift的断码+G的断码{U8KeyV BF=if //当键盘{switch{case //0xF0,Key_UP1Key_UP=1;case0x12: //SHIFTShift=1;case0x59: //SHIFTShift=1; { key=} {key=}}}{Key_UP=switchScanCodeG34HF0H34

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论