智能键盘设计方案_第1页
智能键盘设计方案_第2页
智能键盘设计方案_第3页
智能键盘设计方案_第4页
智能键盘设计方案_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、目录1. 引言22. 智能键盘简介32.2智能键盘开发意义42.3 智能键盘发展趋势43 智能键盘的制作73.1 智能键盘方案的论证及选择73.2智能键盘体74 4X4键盘扫描原理84.1电路及连接84.2基本的扫描原理84.3 延时消抖94.4按键步骤及实现方法95 控制芯片选择105.1 控制芯片的基本功能及其特点106 代码的编辑126.1 代码流程图126.2 IO单独操作函数库136.3 IOA07键盘端口子程序346.4 IOA815键盘端口子程序387论文总结41参考文献42致谢441. 引言 随着社会的发展,科学的进步,人们的生活水平在逐步的提高,尤其是微电子技术的发展,犹如雨

2、后春笋般的变化。电子产品的更新速度快就不足惊奇了。 计算器在人们的日常中是比较的常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算器,基于这样的理念,本次设计是用单片机来设计的四位数计算器。该设计系统是以spce061A为单片机,外接4X4的键盘,通过键盘扫描来对输入数的控制,在IOA0-IOA7口,驱动电路。用来保证LED的工作正常。键盘按其接线方法有:直接式键盘、行列式键盘(又称矩阵键盘)、串转并键盘等;在本设计中,采用4X4的行列式键盘,即键盘排列为4行、4列,共16个按键。2. 智能键盘简介行列式键盘又叫矩阵式键盘。用io口线组成行、列结构,按键设置在行列的交点上。

3、44行列结构可构成16个键的键盘。因此,在按键数量较多时,可以节省io口线。 本设计将介绍44行列式键盘的扩展输入,并且通过单片机的端口输出驱动发光极管进行显示,另外还会介绍通用可编程的键盘。 本设计的主要功能模块如下: 单片机系统:实现61单片机对44行列式键盘的控制,查看按键状态的变化,判断是否有按键按下,并由按下的键来控制led显示: 外围电路:实现单片机与44行列式键盘的电路接口; 61程序:编写61单片机和44行列式键盘的接口程序,实现对按下的键的识别和显示。 44行列式键盘的扩展和可编程的键盘、单片机spce061A芯片的原理和使用方法比较复杂。本设计将体现其原理和应用。 了解44

4、行列式键盘的结构及原理; 掌握44行列式键盘的电路及应用2.2智能键盘开发意义智能键盘要想走向实用,必须拥有能胜任的智能系统、可靠的按键系统、精确的确认能力,并具有既方便又实用的与人一起工作的能力。智能键盘的职能指标为自主性、适应性和交互性。自主性是指键盘能根据工作任务和周围环境情况,自觉确定工作步骤和工作方式;适应性是指键盘具有适应复杂工作环境的能力,不但能确切认为的物体,还有理解周围环境和所要执行任务的能力,并做出正确的判断及操作的能力;交互性智能产生的基础,交互包括智能键盘与环境、智能键盘与人以及按键之间的信息交互,主要涉及信息的获取、处理和理解。2.3 智能键盘发展趋势 现今单片机所制

5、作的键盘可以实用于多个方面,就拿制作的运用于电脑方面的键盘来看看其发展的趋势。目前传统的台式机键盘仍然是市场上的主流,但无论是外观还是技术,它同数年前的产品比起来,并没有本质的区别。随着生活品质的提高,厚重的台式机键盘与时尚而又健康的液晶显示器、灵巧而又舒适的光电鼠标显得越来越格格不入。传统台式机键盘采用的是轨道直滑式构架,虽然按键的键程比较长,按键的手感比较好,但是由于构架本身的缺陷,输入文字时声音比较大。我们以罗技易上手键盘为例,它的按键手感不错,并采用了静音设计,不过用户输入文字时的声音仍然稍微有些大,长时间使用后,比较容易感到手指疲劳。它的外观虽然增加了一些曲线,仍然不够时尚。现在越来

6、越多的用户已经不满足于传统台式机键盘,他们开始将目光转向其它类型键盘。笔记本架构键盘虽然不是2003年才出现的,但是却在2003年大大的风光了一把。这类键盘的一致特点就是轻薄小巧、外观时尚。不少用户都选择笔记本架构键盘来搭配上液晶显示器,这样整个桌面会显得简洁而又时尚。在按键方面,它们采用了笔记本键盘的构架。按键不会因为敲击力度不均或敲击位置不对而导致键帽倾斜,更不会出现卡键的现象,同时按键的力度比较小,用户长时间输入也不容易感到疲劳。在静音方面,笔记本架构键盘设计得相当不错,用户输入文字时的声音要比传统台式键盘小得多。以爱国者的8231笔记本架构键盘来说,它以轻薄时尚的外观吸引了不少消费者,

7、输入文字时的声音很小,适合用户长时间输入也都是它吸引消费者的亮点。为了缩小体积,这类键盘去掉了数字小键盘,不过好在笔记本架构键盘通常都配备了一个PS/2接口,用户可以连接一个专门的数字小键盘,但是笔记本键盘的布局也与传统台式机键盘布局有些区别,用户最初使用时可能会感到很不习惯。另外笔记本架构键盘的键程都很短,敲击时远没有传统台式键盘有手感。不过随着笔记本的普及,越来越多的用户会更加适应笔记本架构键盘的布局和键程,所以我们相信笔记本架构键盘也会越来越受欢迎。这里笔者提醒一下,部分厂商推出的笔记本架构键盘仍然采用传统台式机键盘的轨道直滑式构架,这种键盘除了外观稍微小巧一点以外,没有任何技术上的优势

8、,所以用户在选择笔记本架构键盘时,最好选择名牌大厂的产品。 除了笔记本架构键盘以外,X构架键盘也开始受到越来越多用户的关注。这类键盘采用了类似于笔记本键盘的构架,但是增加了按键键程,并采用了标准的台式机键盘布局。按键在增加键程以后,形成一个明显的“X”形,这也就是它得名的原由。这种X构架综合了笔记本架构键盘和传统台式机键盘的优势,相信会成为未来市场上的一个热点。我们这里以明基的X构架黑色海湾为例,它相比传统台式机键盘要薄得多,按键的键程介于传统台式机键盘和笔记本架构键盘之间,但是使用起来和传统台式机键盘的手感一样棒。尤其值得一提的是,基于X构架的按键不会像传统台式机键盘一样容易松动,更不会出现

9、卡键的情况。这款键盘采用了传统台式机键盘的布局,台式机用户能很快适应,但是这也带来另一个问题就是键盘体积较大。好在明基采用了精巧的流线形设计,整个键盘丝毫不显得笨重。无论是搭配液晶显示器还是CRT显示器,都是一个不错的选择。随着个人电脑的普及,越来越多的用户开始追求时尚与健康,大家对键盘的选择也越来越挑剔。我们相信在2004年里,越来越多的用户会选择更时尚也更健康的笔记本架构键盘或X构架的键盘,而放弃笨重的传统台式机键盘,我们也期待在2004年能看到更多更有新意的键盘上市。3 智能键盘的制作3.1 智能键盘方案的论证及选择车体的方案有两个,一是1x8的按键体,二是4x4的按键体。由于对1x8键

10、盘过于简单性,其占用的接口资源过与浪费,还有其实用性不是很强。所以我选择了4x4的键盘,这占用的接口资源合理,而且可以适用于多方面的应用。3.2智能键盘体我将按照所设计的电路图,在一块万用板分别焊接spce061A芯片及其相应的外围电路、按键体的连接、电源模块、输出模块,其中所运用的原件较为简单,芯片相对复杂,在焊接的时候是特别小心的在进行。如图图3-0:电源模块Spce061A输出模块图3-0:4 4X4键盘扫描原理4.1电路及连接 4X4键盘的电路连线如图4-0所示,分别定义这16个按键盘的键值为116。单片机与该电路连接时,使用4个端口作为输出口,接4条行扫描线;使用4个端口作为输入口,

11、接4条列扫描线;在此介绍中,使用SPCE061A的IOA07这8个端口作4X4键盘的扫描,IOA03 接行扫描线,IOA47接列扫描线。图4-0 4X4键盘电路接线图如上图中,IOA03设置为输出口,接行扫描线;IOA4IOA7设置为带下拉电阻的输入口,接列扫描线。4.2基本的扫描原理行列式键盘的操作一般完成两个任务,一是检测是否有键被按下,二是识别被按下的键是哪一个。一般会采用行列扫描法,可以同时完成上述两项任务。基本的扫描原理是:先使行扫描线全部输出高电平,然后读取列扫描线的状态,得到与按键横向位置对应的4位列码;如果有键被按下,则对应的列扫描线必然会被读回高电平,如果无键按下,则读取的列

12、码必定全是0(低电平)。这也就可以判断有无按键的按下了。4.3 延时消抖一旦检测到有键按下时,还需要有一个延时消抖操作,以消除按键时带有的抖动信号;一般延时在15ms左右即可。延时后,如还能检测到有按键按下,则可确定当前是有键按下,可进入获取键值的操作。4.4按键步骤及实现方法获取键值时,采用行列依次扫描的方法。首先使第一行扫描线输出高电平,其它的行扫描线输出低电平,然后读取列扫描线的状态,得到列码;如果本行无键按下,则得到的列码为全0,并扫描下一行;如本行有键按下,则会读取到对应的列码值,并退出扫描,进行键值计算。当第一行扫描没有检测到按键时,则扫描第二行,即置第二行扫描线输出高电平,其它行

13、扫描线输出低电平,其它与前面所述类似。在行列扫描时,可以用一个变量记录下当前扫描的行号,在计算键值时,可以利用此行号以及读回的列码得知是哪一行、哪一列上的按键按下了。如:当S5按下时,应该检测出第二行扫描时读取到有效的列码0001(IOA74)。5 控制芯片选择5.1 控制芯片的基本功能及其特点凌阳16位系列单片机的实验设备,能最大程度的激发学生学习单片机的兴趣,巩固单片机的知识,从而达到事半功倍的效果。它大致分为软件部分和硬件部分,两者相辅相成,互为补充。软件为硬件提供编译环境、代码下载、通信软件等;硬件是软件代码的功能实现。实验仪具备如下功能:1.CPU为凌阳SPCE061A 16位SOC

14、单片机。2.采用动态扫描方式驱动18键盘、4位8段数码管、8个LED灯。3.5V/3.3V可选I/O输出电压。4.一路03.3V可调模拟电压,可方便地完成AD的数据采集实验。5.RS232接口,可直接与计算机进行通信,或者进行单片机之间的双机通信。6.SIO接口扩展存储芯片SPR4096,扩展4M Bits Flash或者32K Bits SRAM的扩展存储空间。7.USB接口,提供完整的单片机通讯程序、上位机驱动程序及应用范例。8.带背光的12864点阵液晶,自带驱动芯片SPLC501,它采用了最新的COG技术使驱动和液晶合二为一。9.两路音频输出电路,采用凌阳功放芯片SPY0030A,通过

15、它可以体验SPCE061A给您带来的听觉效果。10.MIC输入电路,配合SPCE061A内置的AGC和OPI电路,可获得不错的语音数据。11.PROBEEZ_PROBE两种在线下载、编程、调试模式。12.提供所有外围电路的原理图、IDE环境下的40个实验的源代码,还提供了方便快捷的网络支持,所以我们选择了SPCE061A单片机作为本次毕业设计智能键盘的控制芯片。如图5-0:图5-06 代码的编辑6.1 代码流程图流程图如图6-0:有键按下无键按下处理变量可显示处理处理是哪个键位开始判断是否有键按下初始化程序图6-06.2 IO单独操作函数库#ifndef_EASY_h_#define_EASY

16、_h_/*/IO单独操作函数库/可以对每一个端口单独进行操作,不影响其他端口/此库调用系统库里关于IO的API函数编写,所以调用此库前,必须保证系统IO端口/API函数已加载/Written by Fantasy_Ma/*unsigned int A=1;unsigned int B=2;/*单独设置I/O的Direction信息*voidSet_IO_Dir(unsigned int x,unsigned int y,unsigned int z)if(x=1)switch(y)case 0:if(z=1)*P_IOA_Dir|=0x0001;if(z=0)*P_IOA_Dir&=0xfff

17、e;break;case 1:if(z=1)*P_IOA_Dir|=0x0002;if(z=0)*P_IOA_Dir&=0xfffd;break;case 2: if(z=1)*P_IOA_Dir|=0x0004; if(z=0)*P_IOA_Dir&=0xfffb; break;case 3: if(z=1)*P_IOA_Dir|=0x0008; if(z=0)*P_IOA_Dir&=0xfff7; break;case 4:if(z=1)*P_IOA_Dir|=0x0010;if(z=0)*P_IOA_Dir&=0xffef;break;case 5:if(z=1)*P_IOA_Dir|=

18、0x0020;if(z=0)*P_IOA_Dir&=0xffdf;break;case 6:if(z=1)*P_IOA_Dir|=0x0040;if(z=0)*P_IOA_Dir&=0xffbf;break;case 7:if(z=1)*P_IOA_Dir|=0x0080;if(z=0)*P_IOA_Dir&=0xff7f;break;case 8:if(z=1)*P_IOA_Dir|=0x0100;if(z=0)*P_IOA_Dir&=0xfeff;break;case 9:if(z=1)*P_IOA_Dir|=0x0200;if(z=0)*P_IOA_Dir&=0xfdff;break;c

19、ase 10:if(z=1)*P_IOA_Dir|=0x0400;if(z=0)*P_IOA_Dir&=0xfbff;break;case 11:if(z=1)*P_IOA_Dir|=0x0800;if(z=0)*P_IOA_Dir&=0xf7ff;break;case 12:if(z=1)*P_IOA_Dir|=0x1000;if(z=0)*P_IOA_Dir&=0xefff;break;case 13:if(z=1)*P_IOA_Dir|=0x2000;if(z=0)*P_IOA_Dir&=0xdfff;break;case 14:if(z=1)*P_IOA_Dir|=0x4000;if(

20、z=0)*P_IOA_Dir&=0xbfff;break;case 15:if(z=1)*P_IOA_Dir|=0x8000;if(z=0)*P_IOA_Dir&=0x7fff;break;if(x=2)switch(y)case 0:if(z=1)*P_IOB_Dir|=0x0001;if(z=0)*P_IOB_Dir&=0xfffe;break;case 1:if(z=1)*P_IOB_Dir|=0x0002;if(z=0)*P_IOB_Dir&=0xfffd;break;case 2: if(z=1)*P_IOB_Dir|=0x0004; if(z=0)*P_IOB_Dir&=0xfff

21、b; break;case 3: if(z=1)*P_IOB_Dir|=0x0008; if(z=0)*P_IOB_Dir&=0xfff7; break;case 4:if(z=1)*P_IOB_Dir|=0x0010;if(z=0)*P_IOB_Dir&=0xffef;break;case 5:if(z=1)*P_IOB_Dir|=0x0020;if(z=0)*P_IOB_Dir&=0xffdf;break;case 6:if(z=1)*P_IOB_Dir|=0x0040;if(z=0)*P_IOB_Dir&=0xffbf;break;case 7:if(z=1)*P_IOB_Dir|=0x

22、0080;if(z=0)*P_IOB_Dir&=0xff7f;break;case 8:if(z=1)*P_IOB_Dir|=0x0100;if(z=0)*P_IOB_Dir&=0xfeff;break;case 9:if(z=1)*P_IOB_Dir|=0x0200;if(z=0)*P_IOB_Dir&=0xfdff;break;case 10:if(z=1)*P_IOB_Dir|=0x0400;if(z=0)*P_IOB_Dir&=0xfbff;break;case 11:if(z=1)*P_IOB_Dir|=0x0800;if(z=0)*P_IOB_Dir&=0xf7ff;break;c

23、ase 12:if(z=1)*P_IOB_Dir|=0x1000;if(z=0)*P_IOB_Dir&=0xefff;break;case 13:if(z=1)*P_IOB_Dir|=0x2000;if(z=0)*P_IOB_Dir&=0xdfff;break;case 14:if(z=1)*P_IOB_Dir|=0x4000;if(z=0)*P_IOB_Dir&=0xbfff;break;case 15:if(z=1)*P_IOB_Dir|=0x8000;if(z=0)*P_IOB_Dir&=0x7fff;break;/*单独获取I/O的Direction信息*unsigned int Ge

24、t_IO_Dir(unsigned int x,unsigned int y)unsigned int a;if(x=1)switch(y)case 0:a=*P_IOA_Dir&0x0001;if(a=0)return a;elsereturn 1;case 1:a=*P_IOA_Dir&0x0002;if(a=0)return a;elsereturn 1;case 2:a=*P_IOA_Dir&0x0004;if(a=0)return a;elsereturn 1;case 3:a=*P_IOA_Dir&0x0008;if(a=0)return a;elsereturn 1;case 4

25、:a=*P_IOA_Dir&0x0010;if(a=0)return a;elsereturn 1;case 5:a=*P_IOA_Dir&0x0020;if(a=0)return a;elsereturn 1;case 6:a=*P_IOA_Dir&0x0040;if(a=0)return a;elsereturn 1;case 7:a=*P_IOA_Dir&0x0080;if(a=0)return a;elsereturn 1;case 8:a=*P_IOA_Dir&0x0100;if(a=0)return a;elsereturn 1;case 9:a=*P_IOA_Dir&0x0200

26、;if(a=0)return a;elsereturn 1;case 10:a=*P_IOA_Dir&0x0400;if(a=0)return a;elsereturn 1;case 11:a=*P_IOA_Dir&0x0800;if(a=0)return a;elsereturn 1;case 12:a=*P_IOA_Dir&0x1000;if(a=0)return a;elsereturn 1;case 13:a=*P_IOA_Dir&0x2000;if(a=0)return a;elsereturn 1;case 14:a=*P_IOA_Dir&0x4000;if(a=0)return

27、a;elsereturn 1;case 15:a=*P_IOA_Dir&0x8000;if(a=0)return a;elsereturn 1;if(x=2)switch(y)case 0:a=*P_IOB_Dir&0x0001;if(a=0)return a;elsereturn 1;case 1:a=*P_IOB_Dir&0x0002;if(a=0)return a;elsereturn 1;case 2:a=*P_IOB_Dir&0x0004;if(a=0)return a;elsereturn 1;case 3:a=*P_IOB_Dir&0x0008;if(a=0)return a;e

28、lsereturn 1;case 4:a=*P_IOB_Dir&0x0010;if(a=0)return a;elsereturn 1;case 5:a=*P_IOB_Dir&0x0020;if(a=0)return a;elsereturn 1;case 6:a=*P_IOB_Dir&0x0040;if(a=0)return a;elsereturn 1;case 7:a=*P_IOB_Dir&0x0080;if(a=0)return a;elsereturn 1;case 8:a=*P_IOB_Dir&0x0100;if(a=0)return a;elsereturn 1;case 9:a

29、=*P_IOB_Dir&0x0200;if(a=0)return a;elsereturn 1;case 10:a=*P_IOB_Dir&0x0400;if(a=0)return a;elsereturn 1;case 11:a=*P_IOB_Dir&0x0800;if(a=0)return a;elsereturn 1;case 12:a=*P_IOB_Dir&0x1000;if(a=0)return a;elsereturn 1;case 13:a=*P_IOB_Dir&0x2000;if(a=0)return a;elsereturn 1;case 14:a=*P_IOB_Dir&0x4

30、000;if(a=0)return a;elsereturn 1;case 15:a=*P_IOB_Dir&0x8000;if(a=0)return a;elsereturn 1;/*单独设置I/O的Attribution信息*voidSet_IO_Attrib(unsigned int x,unsigned int y,unsigned int z)if(x=1)switch(y)case 0:if(z=1)*P_IOA_Attrib|=0x0001;if(z=0)*P_IOA_Attrib&=0xfffe;break;case 1:if(z=1)*P_IOA_Attrib|=0x0002;

31、if(z=0)*P_IOA_Attrib&=0xfffd;break;case 2: if(z=1)*P_IOA_Attrib|=0x0004; if(z=0)*P_IOA_Attrib&=0xfffb; break;case 3: if(z=1)*P_IOA_Attrib|=0x0008; if(z=0)*P_IOA_Attrib&=0xfff7; break;case 4:if(z=1)*P_IOA_Attrib|=0x0010;if(z=0)*P_IOA_Attrib&=0xffef;break;case 5:if(z=1)*P_IOA_Attrib|=0x0020;if(z=0)*P_

32、IOA_Attrib&=0xffdf;break;case 6:if(z=1)*P_IOA_Attrib|=0x0040;if(z=0)*P_IOA_Attrib&=0xffbf;break;case 7:if(z=1)*P_IOA_Attrib|=0x0080;if(z=0)*P_IOA_Attrib&=0xff7f;break;case 8:if(z=1)*P_IOA_Attrib|=0x0100;if(z=0)*P_IOA_Attrib&=0xfeff;break;case 9:if(z=1)*P_IOA_Attrib|=0x0200;if(z=0)*P_IOA_Attrib&=0xfd

33、ff;break;case 10:if(z=1)*P_IOA_Attrib|=0x0400;if(z=0)*P_IOA_Attrib&=0xfbff;break;case 11:if(z=1)*P_IOA_Attrib|=0x0800;if(z=0)*P_IOA_Attrib&=0xf7ff;break;case 12:if(z=1)*P_IOA_Attrib|=0x1000;if(z=0)*P_IOA_Attrib&=0xefff;break;case 13:if(z=1)*P_IOA_Attrib|=0x2000;if(z=0)*P_IOA_Attrib&=0xdfff;break;cas

34、e 14:if(z=1)*P_IOA_Attrib|=0x4000;if(z=0)*P_IOA_Attrib&=0xbfff;break;case 15:if(z=1)*P_IOA_Attrib|=0x8000;if(z=0)*P_IOA_Attrib&=0x7fff;break;if(x=2)switch(y)case 0:if(z=1)*P_IOB_Attrib|=0x0001;if(z=0)*P_IOB_Attrib&=0xfffe;break;case 1:if(z=1)*P_IOB_Attrib|=0x0002;if(z=0)*P_IOB_Attrib&=0xfffd;break;c

35、ase 2: if(z=1)*P_IOB_Attrib|=0x0004; if(z=0)*P_IOB_Attrib&=0xfffb; break;case 3: if(z=1)*P_IOB_Attrib|=0x0008; if(z=0)*P_IOB_Attrib&=0xfff7; break;case 4:if(z=1)*P_IOB_Attrib|=0x0010;if(z=0)*P_IOB_Attrib&=0xffef;break;case 5:if(z=1)*P_IOB_Attrib|=0x0020;if(z=0)*P_IOB_Attrib&=0xffdf;break;case 6:if(z

36、=1)*P_IOB_Attrib|=0x0040;if(z=0)*P_IOB_Attrib&=0xffbf;break;case 7:if(z=1)*P_IOB_Attrib|=0x0080;if(z=0)*P_IOB_Attrib&=0xff7f;break;case 8:if(z=1)*P_IOB_Attrib|=0x0100;if(z=0)*P_IOB_Attrib&=0xfeff;break;case 9:if(z=1)*P_IOB_Attrib|=0x0200;if(z=0)*P_IOB_Attrib&=0xfdff;break;case 10:if(z=1)*P_IOB_Attri

37、b|=0x0400;if(z=0)*P_IOB_Attrib&=0xfbff;break;case 11:if(z=1)*P_IOB_Attrib|=0x0800;if(z=0)*P_IOB_Attrib&=0xf7ff;break;case 12:if(z=1)*P_IOB_Attrib|=0x1000;if(z=0)*P_IOB_Attrib&=0xefff;break;case 13:if(z=1)*P_IOB_Attrib|=0x2000;if(z=0)*P_IOB_Attrib&=0xdfff;break;case 14:if(z=1)*P_IOB_Attrib|=0x4000;if

38、(z=0)*P_IOB_Attrib&=0xbfff;break;case 15:if(z=1)*P_IOB_Attrib|=0x8000;if(z=0)*P_IOB_Attrib&=0x7fff;break;/*单独获取I/O的Attribution信息*unsigned int Get_IO_Attrib(unsigned int x,unsigned int y)unsigned int a;if(x=1)switch(y)case 0:a=*P_IOA_Attrib&0x0001;if(a=0)return a;elsereturn 1;case 1:a=*P_IOA_Attrib&0

39、x0002;if(a=0)return a;elsereturn 1;case 2:a=*P_IOA_Attrib&0x0004;if(a=0)return a;elsereturn 1;case 3:a=*P_IOA_Attrib&0x0008;if(a=0)return a;elsereturn 1;case 4:a=*P_IOA_Attrib&0x0010;if(a=0)return a;elsereturn 1;case 5:a=*P_IOA_Attrib&0x0020;if(a=0)return a;elsereturn 1;case 6:a=*P_IOA_Attrib&0x0040

40、;if(a=0)return a;elsereturn 1;case 7:a=*P_IOA_Attrib&0x0080;if(a=0)return a;elsereturn 1;case 8:a=*P_IOA_Attrib&0x0100;if(a=0)return a;elsereturn 1;case 9:a=*P_IOA_Attrib&0x0200;if(a=0)return a;elsereturn 1;case 10:a=*P_IOA_Attrib&0x0400;if(a=0)return a;elsereturn 1;case 11:a=*P_IOA_Attrib&0x0800;if

41、(a=0)return a;elsereturn 1;case 12:a=*P_IOA_Attrib&0x1000;if(a=0)return a;elsereturn 1;case 13:a=*P_IOA_Attrib&0x2000;if(a=0)return a;elsereturn 1;case 14:a=*P_IOA_Attrib&0x4000;if(a=0)return a;elsereturn 1;case 15:a=*P_IOA_Attrib&0x8000;if(a=0)return a;elsereturn 1;if(x=2)switch(y)case 0:a=*P_IOB_A

42、ttrib&0x0001;if(a=0)return a;elsereturn 1;case 1:a=*P_IOB_Attrib&0x0002;if(a=0)return a;elsereturn 1;case 2:a=*P_IOB_Attrib&0x0004;if(a=0)return a;elsereturn 1;case 3:a=*P_IOB_Attrib&0x0008;if(a=0)return a;elsereturn 1;case 4:a=*P_IOB_Attrib&0x0010;if(a=0)return a;elsereturn 1;case 5:a=*P_IOB_Attrib

43、&0x0020;if(a=0)return a;elsereturn 1;case 6:a=*P_IOB_Attrib&0x0040;if(a=0)return a;elsereturn 1;case 7:a=*P_IOB_Attrib&0x0080;if(a=0)return a;elsereturn 1;case 8:a=*P_IOB_Attrib&0x0100;if(a=0)return a;elsereturn 1;case 9:a=*P_IOB_Attrib&0x0200;if(a=0)return a;elsereturn 1;case 10:a=*P_IOB_Attrib&0x0

44、400;if(a=0)return a;elsereturn 1;case 11:a=*P_IOB_Attrib&0x0800;if(a=0)return a;elsereturn 1;case 12:a=*P_IOB_Attrib&0x1000;if(a=0)return a;elsereturn 1;case 13:a=*P_IOB_Attrib&0x2000;if(a=0)return a;elsereturn 1;case 14:a=*P_IOB_Attrib&0x4000;if(a=0)return a;elsereturn 1;case 15:a=*P_IOB_Attrib&0x8000;if(a=0)return a;elsereturn 1;/*单独设置I/O的Data信息*voidSet_IO_Data(unsigned int x,unsigned int y,unsigned int z)if(x=1)switch(y)case 0:if(z=1)*P_IOA_Data|=0x0001;if(z=0)*P_IOA_Data&=0xfffe;break;case 1:if(z=1)*P_IOA_Data|=0x0002;if(z=0)*P_IOA_Data&=0xfffd;break;case 2: if(z=1)*P_

温馨提示

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

评论

0/150

提交评论