




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度老年服务机构辅导员聘用合同(生活照料)
- 酒吧艺人合同制签约及排期管理协议2025
- 二零二五年度个人抵押消费贷款业务委托协议
- 二零二五年度商业地产场地房屋租赁合作协议
- 2025至2030年中国网球捡球篮数据监测研究报告
- 2025年度股权无偿转让与公司财务重组及债务清偿协议
- 2025年度项目经理内部承包责任制及环境保护合同
- 2025年度新能源汽车按揭贷款合同样本
- 二零二五年度员工持股计划股权激励与薪酬调整合同
- 二零二五年度客运合同中承运人旅客行李损坏赔偿与赔偿责任承诺
- MBR系统运行技术手册
- 稻谷品质测定指标及方法
- 小学四年级上册口算题大全800题(口算天天练)
- 医院医保月结算报表
- 中国农业银行资金证明模板
- 教师如何做小课题研究(李海波)
- 航空煤油 MSDS 安全技术说明书
- 孵化场操作规范(1)
- GB38995-2020婴幼儿用奶瓶和奶嘴
- 中职《普通话》课程标准(共7页)
- 修订韦氏记忆量表(WMS-乙式).doc
评论
0/150
提交评论