⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch452.lst

📁 CH452驱动程序
💻 LST
字号:
C51 COMPILER V8.02   CH452                                                                 08/13/2007 20:43:11 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE CH452
OBJECT MODULE PLACED IN ch452.OBJ
COMPILER INVOKED BY: D:\Program Files\C51\BIN\C51.EXE ch452.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************************
   2          *  标题:  蓝海微芯LJD-SY-5200单片机开发系统演示程序                            *
   3          *  文件:  CH451_INT1.C                                                         *
   4          *  日期:  2006-8-11                                                            *
   5          *  版本:  1.0                                                                  *
   6          *  作者:  蓝海微芯                                                             *
   7          *  网站: http://www.ljd-2008.com                                              *
   8          ********************************************************************************
   9          *  描述:                                                                       *
  10          *        在数码管上显示按键值                                                  *     
  11          *                                                                              *
  12          *                                                                              *
  13          ********************************************************************************
  14          * 【版权】 Copyright(C)微芯科技 http://www.bluemcu.com    All Rights Reserved  *          
  15          * 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
  16          *******************************************************************************/
  17          #include<reg52.h>
  18          #include<absacc.h>
  19          #include<intrins.h>
  20          
  21          #define uchar  unsigned char
  22          #define uint   unsigned int
  23          
  24          #define CH451_DIG0      0x0800         /*数码管位0显示*/
  25          #define CH451_DIG1      0x0900         /*数码管位1显示*/
  26          #define CH451_DIG2      0x0a00         /*数码管位2显示*/
  27          #define CH451_DIG3      0x0b00         /*数码管位3显示*/
  28          #define CH451_DIG4      0x0c00         /*数码管位4显示*/
  29          #define CH451_DIG5      0x0d00         /*数码管位5显示*/        
  30          #define CH451_DIG6      0x0e00         /*数码管位6显示*/        
  31          #define CH451_DIG7      0x0f00         /*数码管位7显示*/
  32          
  33          sbit     ch451_din  = P1^6;
  34          sbit     ch451_clk  = P1^5;
  35          sbit     ch451_load = P1^7;
  36          sbit     ch451_dout = P3^2;
  37          
  38          volatile uchar ch451_key;
  39          volatile uchar M;
  40          volatile uchar N;
  41          volatile bit   flag;
  42          /********************************************************************
  43          函 数 名:ch451_init()
  44          功    能:对ch451芯片进行初始化
  45          说    明:
  46          调    用:
  47          入口参数:
  48          返 回 值:
  49          设    计:蓝海微芯           
  50          ***********************************************************************/
  51          void ch451_init(void)
  52          {
  53   1        ch451_din  = 0;           /*先低后高,选择4线输入*/
  54   1        ch451_din  = 1;
  55   1      
C51 COMPILER V8.02   CH452                                                                 08/13/2007 20:43:11 PAGE 2   

  56   1              
  57   1        ch451_load = 1;
  58   1        ch451_clk  = 1;
  59   1        _nop_();
  60   1              
  61   1      }
  62          /********************************************************************
  63          函 数 名:ch451_write()
  64          功    能:把12位的指令或数据写入ch451
  65          说    明:12位数据或指令的写入顺序是低位
  66          调    用:
  67          入口参数:command
  68          返 回 值:
  69          设    计:蓝海微芯           
  70          ***********************************************************************/
  71          void ch451_write(unsigned int command)
  72          {
  73   1        unsigned char i;
  74   1        #ifdef USE_KEY
                  EX0=0;                                 /*禁止键盘中断*/
                #endif        
  77   1        ch451_load=0;                            /*命令开始*/    
  78   1        for(i=0;i<12;i++)
  79   1        {                                        /*送入12位数据,低位在前*/
  80   2          ch451_din=command&1;                                
  81   2          ch451_clk=0;
  82   2          command>>=1;
  83   2          ch451_clk=1;                           /*上升沿有效*/
  84   2        }
  85   1        ch451_load=1;                            /*加载数据*/
  86   1        #ifdef USE_KEY
                  EX0=1;
                #endif
  89   1      }
  90          /********************************************************************
  91          函 数 名:ch451_bcd()
  92          功    能:对按键值进行分离
  93          说    明:把一字节按键值分拆分成两字节
  94          调    用:
  95          入口参数:ds_bcd
  96          返 回 值:
  97          设    计:蓝海微芯           
  98          ***********************************************************************/
  99          void ch451_bcd(uchar ds_bcd)
 100          {
 101   1        switch(ds_bcd)
 102   1         {
 103   2        case 0x44:    M=0x00;    break;  /*按键0被按下*/
 104   2        case 0x45:    M=0x01;    break;  /*按键1被按下*/
 105   2        case 0x46:    M=0x02;    break;  /*按键2被按下*/
 106   2        case 0x47:    M=0x03;    break;  /*按键3被按下*/
 107   2        case 0x4C:    M=0x04;    break;  /*按键4被按下*/
 108   2        case 0x4D:    M=0x05;    break;  /*按键5被按下*/
 109   2        case 0x4E:    M=0x06;    break;  /*按键6被按下*/
 110   2        case 0x4F:    M=0x07;    break;  /*按键7被按下*/
 111   2        case 0x54:    M=0x08;    break;  /*按键8被按下*/
 112   2        case 0x55:    M=0x09;    break;  /*按键9被按下*/
 113   2        default:return;
 114   2        }
 115   1      
 116   1      
 117   1        
C51 COMPILER V8.02   CH452                                                                 08/13/2007 20:43:11 PAGE 3   

 118   1       // M = ds_bcd&0xf0;
 119   1        //M>>=4;
 120   1       // N = ds_bcd&0x0f;
 121   1      }
 122          /********************************************************************
 123          函 数 名:ch451中断服务程序
 124          功    能:获取键值
 125          说    明:
 126          调    用:
 127          入口参数:
 128          返 回 值:ch451_key
 129          设    计:蓝海微芯           
 130          ***********************************************************************/
 131          
 132          void ch451_inter() interrupt 1 using 1
 133          {
 134   1        unsigned char i;                       /*定义循环变量*/
 135   1        unsigned char command,keycode;         /*定义控制字寄存器,和中间变量定时器*/
 136   1        command=0x07;                          /*读取键值命令的高4位0111B*/
 137   1        EX0= 0;
 138   1        ch451_load=0;                          /*命令开始*/
 139   1        for(i=0;i<4;i++)
 140   1        {
 141   2          ch451_din=command&1;                 /*低位在前,高位在后*/
 142   2          ch451_clk=0;
 143   2          command>>=1;                         /*右移一位*/
 144   2          ch451_clk=1;                         /*产生时钟上升沿锁通知CH451输入位数据*/
 145   2        }
 146   1        ch451_load=1;                          /*产生加载上升沿通知CH451处理命令数据*/
 147   1        keycode=0;                             /*清除keycode*/
 148   1        for(i=0;i<7;i++)
 149   1        {
 150   2          keycode<<=1;                         /*数据作移一位,高位在前,低位在后*/
 151   2          keycode|=ch451_dout;                 /*从高到低读入451的数据*/
 152   2          ch451_clk=0;                         /*产生时钟下升沿通知CH451输出下一位*/
 153   2          ch451_clk=1;        
 154   2        }
 155   1        ch451_key=keycode;                     /*保存上次的键值*/
 156   1        flag=1;               
 157   1        EX0 = 1;
 158   1        IE0=0;                                 /*清中断标志*/
 159   1      }
 160          main()
 161          {
 162   1        EA=1;
 163   1        EX0=1;
 164   1        flag=0;
 165   1        ch451_init();
 166   1        ch451_write(0x403);
 167   1        ch451_write(0x580);
 168   1        ch451_write(CH451_DIG7|M);
 169   1        //ch451_write(CH451_DIG6|N);
 170   1        while(1)
 171   1        {
 172   2          if(flag)
 173   2          {
 174   3            flag=0;
 175   3            ch451_bcd(ch451_key);
 176   3            ch451_write(CH451_DIG7|M);
 177   3            //ch451_write(CH451_DIG6|N);
 178   3          }
 179   2        }
C51 COMPILER V8.02   CH452                                                                 08/13/2007 20:43:11 PAGE 4   

 180   1      }
 181          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    232    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -