ps2keyboard demo code for 8052
2024-10-01 21:20:08
#pragma code symbols debug objectextend #include <reg51.h> /* special function register declarations */ /* for the intended 8051 derivative */ #include <stdio.h> /* prototype declarations for I/O functions */ #define BYTE unsigned char #define WORD unsigned int #define LONG unsigned long #define dword unsigned long #define DWORD unsigned long #define byte unsigned char #define word unsigned int #define XBYTE ((unsigned char volatile xdata *) 0) #define XWORD ((unsigned int volatile xdata *) 0) #define NES 0x6000 data union{ LONG l; BYTE b[]; }lShift; data BYTE bCnt; /****************/ /* main program */ /****************/ void main (void) { /* execution starts here after stack init */ #define KEY_BREAK 0x1f800 #define BCNT_VALUE 0 //BYTE code abBitHi[] ={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //BYTE code KeyTable[][2]={} data BYTE bKey=0xff, bC, bKeyTmp; //data WORD wKb; //data long lBrk; data union{ LONG l; BYTE b[]; }lTmp; bit fParity, fP; TCON=0x01; //bit0: 1/0 falling edge/low level triggered external interrupts IP=0x01; //bit0:Externl interrupt 0 Priority control bit IE=0x81; //bit0:Enable External interrupt 0 control bit //bit7:All control bit XBYTE[NES]=0x00; ///if (bCnt>=BCNT_VALUE) { ){ T0=~T0; bCnt=BCNT_VALUE; lTmp.l=lShift.l; ] & ] & 0xfc)==0x80)) || ((lTmp.b[]==]<=0x10))) { //fBrk=1; bKey &= 0x7f; } ] & 0xa0)==0x80) && //stop bit=1, data bit7=0 ((lTmp.b[] & 0x20)==0x00) ){ //start bit==0 bit0 , data bit7==0 ] & ; //parity bit bit9 ; lTmp.l<<=; bKeyTmp=lTmp.b[]; fParity=; ; bC<=; bC++){ ] & ) fParity=~fParity; lTmp.b[]<<=; } if (fP==fParity) { //fOk=1; //bKey=KeyTable[bKeyTmp]; bKey=bKeyTmp | 0x80; } } P1=bKey; XBYTE[NES]=bKey; } ////else bCnt++; //while (1) } //void main (void) { bit fT0; fT0=INT1; lShift.l>>=; ] |= 0x80; ///bCnt=0; } /* link hello.obj XDATA(0) IDATA(80H) RAMSIZE(256) SYMBOLS */
最新文章
- 使用Code::blocks在windows下写网络程序
- iOS8 UIAlertController弹出框中添加视图(例如日期选择器等等)
- input标签写CSS时需要注意的几点(先收藏)
- iOS tableview 静态表布局纪录
- 菜鸟学习Ado.net笔记一:Ado.net学习之SqlHelper类
- 《STL源代码剖析》---stl_alloc.h阅读笔记
- HTML浅识
- 浅谈Base64编码
- 1601: [Usaco2008 Oct]灌水
- 前端插件之Bootstrap Switch 选择框开关控制
- 23 服务的启动Demo2
- SSM-Spring-11:Spring中使用代理工厂Bean实现aop的四种增强
- @Transactional的正确打开方式
- 洛谷P2512 糖果传递
- 第二十节:详细讲解String和StringBuffer和StringBuilder的使用
- InputStream只能读取一次的解决办法 C# byte[] 和Stream转换
- 〖前端开发〗HTML/CSS基础知识学习笔记
- WSAAsyncSelect模型中,FD_WRITE事件什么时候触发?
- 第三百七十九节,Django+Xadmin打造上线标准的在线教育平台—xadmin的安装
- CRUD组件的高阶使用
热门文章
- PowerShell 简单模式识别 1
- IntelliJ IDEA: maven &; jetty 开发 java web
- 第36讲 activityForResult
- 利用dedecms给近三天(或当天)发布的文章显示红色日期或加上new字或new小图片
- Thrift的安装和简单演示样例
- Map.EntrySet的使用方法
- Javascript进阶篇——(DOM—节点---插入、删除和替换元素、创建元素、创建文本节点)—笔记整理
- QTP描述性编程中往WebEdit控件输入文字问题
- silverlight+wcf 项目 silverlight获得web程序的参数
- txt 分割程序