您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 单片机的键盘的程序例子
  所属分类: C
  开发工具:
  文件大小: 4kb
  下载次数: 0
  上传时间: 2009-05-18
  提 供 者: ruir****
 详细说明: //------------------------------------------------------------------------------------ // Includes //------------------------------------------------------------------------------------ #include /*SFR定义*/ #include //------------------------------------------------------------------------------------ // Global CONSTANTS //------------------------------------------------------------------------------------ #define PORTA 0x8000 /*8255端口A*/ #define PORTB 0x8001 /*8255端口B*/ #define PORTC 0x8002 /*8255端口C*/ #define PORTCON 0x8003 /*8255控制口*/ sbit BUZ = P3^5; //------------------------------------------------------------------------------------ // Function PROTOTYPES //------------------------------------------------------------------------------------ void PORT_Init (void); /*************************************************************************************** 函数名称: void sleep_ms(WORD count) 功能描述: 延时 输入: WORD count(所要延时的长度) 输出: 无 全局变量: 无 调用模块: _nop_() ***************************************************************************************/ void sleep_ms(unsigned int count) { unsigned char ii,jj; for(ii=0;ii=0x04) ScanData=0x00; switch(ScanData) { case 0x00: *Pointm=0xfe; /*扫描第一列*/ break; case 0x01: *Pointm=0xfd; /*扫描第二列*/ break; case 0x02: *Pointm=0xfb; /*扫描第三列*/ break; case 0x03: *Pointm=0xf7; /*扫描第四列*/ break; default: *Pointm=0xff; } sleep_ms(100); Pointm=PORTA; temp=*Pointm; /*读是否有键按下*/ k=temp; }while(temp==0xff); BUZ=0; /*有键按下*/ sleep_ms(200); BUZ=1; temp = temp & 0xf0; if(temp==0x00) temp = temp | 0xf0; /*PA4~PA7没加上啦*/ if(temp==0xf0){ /*0~F按下*/ /*换算成数字键值*/ k=~k; k=k&0x0f; k=k/2; if(k>=4) k=3; k=k*4; temp=ScanData; temp=temp+k; _nop_(); } else{ /*F1~F4按下*/ switch(temp) { case 0xe0: temp = 0xf1; /*F1键按下*/ break; case 0xd0: temp = 0xf2; /*F2键按下*/ break; case 0xb0: temp = 0xf3; /*F3键按下*/ break; case 0x70: temp = 0xf4; /*F4键按下*/ break; default: temp = 0x00; } _nop_(); } } } /*************************************************************************************** 函数名称: void PORT_Init(void) 功能描述: 初始化I/O 输入: 无 输出: 无 全局变量: XBR2,P74OUT,EMI0CF,EMI0TC,P3MDOUT 调用模块: _nop_() ***************************************************************************************/ void PORT_Init (void) { XBR2 = 0x40; /*使能交叉开关和弱上拉*/ P74OUT |= 0xff; /*使能P6,P7推挽输出*/ EMI0CF |= 0x2c; /*EMIF工作在地址/数据复用方式,只用外部存储器,ALE高/低脉宽占1个SYSCLK周期*/ EMI0TC |= 0x6c; /*地址建立/保持时间占0个SYSCLK周期,/WR和/RD占12个SYSCLK周期*/ P3MDOUT |= 0xdf; /*使能P3.5推挽输出*/ } ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: 单片机 外部存储器
 输入关键字,在本站1000多万海量源码库中尽情搜索: