关于proteus的仿真实例

源代码在线查看: keyscan.lst

软件大小: 13363 K
上传用户: lc1230z
关键词: proteus 仿真实例
下载地址: 免注册下载 普通下载 VIP

相关代码

				C51 COMPILER V8.05a   KEYSCAN                                                              08/08/2007 23:55:40 PAGE 1   
				
				
				C51 COMPILER V8.05a, COMPILATION OF MODULE KEYSCAN
				OBJECT MODULE PLACED IN KeyScan.obj
				COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\KeyScan.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\KeySca
				                    -n.lst) OBJECT(KeyScan.obj)
				
				line level    source
				
				   1          //*************************************************************************************************
				   2          //*************************************************************************************************
				   3          //**:键盘扫描子程序                                                                                                                                     **
				   4          //**:当有外部中断0时调用此函数,使用列扫描的方式获取键码,键码由2位数字组成。高位为行号   **
				   5          //**            低位为列号。                                                                                                                                             **
				   6          //*************************************************************************************************
				   7          //*************************************************************************************************
				   8          
				   9          
				  10          //*************************************************************************************************
				  11          //*                                                                                                                                                                                               *
				  12          //*                      ******************************头文件及宏定义**************************                           *
				  13          //*                                                                                                                                                                                               *
				  14          //*************************************************************************************************
				  15          #include 
				  16          
				  17          #define SCANPORT P2                               //4×4键盘扫描端口,低4位是行线,高4位是列线。
				  18                                                                            //采用逐列扫描的方法,无按键时,低4位输出1,高4位输出0。
				  19                                                                            //当有按键时,高4位输出扫描电位,低4位输入扫描结果。
				  20          
				  21          
				  22          //*************************************************************************************************
				  23          //*                                                                                                                                                                                               *
				  24          //*                       ********************************全局变量******************************                          *
				  25          //*                                                                                                                                                                                               *
				  26          //*************************************************************************************************
				  27          unsigned char uca_LineScan[4]={0xEF,0xDF,0xBF,0x7F};            //列线扫描电压,分为第1,2,3,4根列线
				  28                                                                                                                                  //为低电平,其他为高电平。
				  29          //*************************************************************************************************
				  30          //*                                                                                                                                                                                               *
				  31          //*                       ********************************函数实现******************************                          *
				  32          //*                                                                                                                                                                                               *
				  33          //*************************************************************************************************
				  34          unsigned char ucKeyScan()
				  35          {
				  36   1              unsigned char ucTemp=0;                         //扫描状态暂存。
				  37   1              unsigned char ucRow=0,ucLine=0;     //行号,列号。
				  38   1      
				  39   1              EX0=0;                                                          //在键扫描处理时,关闭外部中断0,防抖动。
				  40   1      
				  41   1              for(ucLine=0;ucLine				  42   1                      {
				  43   2                              SCANPORT=uca_LineScan[ucLine];                     //输出扫描电位。
				  44   2                              ucTemp=SCANPORT&0x0F;                                      //输入扫描电位,并屏蔽高4位。
				  45   2                              if(ucTemp!=0x0F)                 
				  46   2                                      {                                                                         //判断该列是否有按键按下。
				  47   3                                      switch(ucTemp)
				  48   3                                              {
				  49   4                                              case 0x0E: ucRow=10;break;                //如果有,则判断行号。
				  50   4                                              case 0x0D: ucRow=20;break;
				  51   4                                              case 0x0B: ucRow=30;break;
				  52   4                                              case 0x07: ucRow=40;break;
				  53   4                                              default:   ucRow=50;break;
				  54   4                                              }
				C51 COMPILER V8.05a   KEYSCAN                                                              08/08/2007 23:55:40 PAGE 2   
				
				  55   3                                      break;
				  56   3                                      }
				  57   2                      }
				  58   1      //				  59   1              SCANPORT=0x0F;                                          //恢复P2口
				  60   1              EX0=1;                                                  //恢复按键中断。
				  61   1      
				  62   1              return ucRow+ucLine+1;                   //返回按键编码。格式为2位数,高位为行号,低位为列号。
				  63   1      }
				
				
				MODULE INFORMATION:   STATIC OVERLAYABLE
				   CODE SIZE        =     71    ----
				   CONSTANT SIZE    =   ----    ----
				   XDATA SIZE       =   ----    ----
				   PDATA SIZE       =   ----    ----
				   DATA SIZE        =      4    ----
				   IDATA SIZE       =   ----    ----
				   BIT SIZE         =   ----    ----
				END OF MODULE INFORMATION.
				
				
				C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)
							

相关资源