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

📄 keyled.lst

📁 一个本人编写的时钟程序
💻 LST
字号:
C51 COMPILER V8.02   KEYLED                                                                06/18/2008 14:42:38 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE KEYLED
OBJECT MODULE PLACED IN .\keyled.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\c程序\keyled.c DEBUG OBJECTEXTEND PRINT(.\keyled.lst) OBJECT(.\keyled.ob
                    -j)

line level    source

   1          //*******************************************************************
   2          //***此程序为调试通过的源程序
   3          //*******************************************************************
   4          #include"at89x52.h"
*** WARNING C318 IN LINE 4 OF ..\c程序\keyled.c: can't open file 'at89x52.h'
   5          #include<intrins.h>
   6          #define  nop  _nop_()       /* 定义空操作指令 */
   7          sbit en =P2^7;                          /*DTLED-6显示芯片使能端*/       
*** ERROR C202 IN LINE 7 OF ..\C程序\KEYLED.C: 'P2': undefined identifier
   8          sbit dout=P2^6;                         /*DTLED-6显示芯片数据读入端*/
*** ERROR C202 IN LINE 8 OF ..\C程序\KEYLED.C: 'P2': undefined identifier
   9          sbit clk=P2^5;                          /*DTLED-6显示芯片/时钟芯片DS1302时钟输入端*/
*** ERROR C202 IN LINE 9 OF ..\C程序\KEYLED.C: 'P2': undefined identifier
  10           bit FLAG0=0;                           /*位标号FLAG0=1键盘扫描回应*/
  11          static const char tab[16]={0x01,0x02,0x03,0x0a, /*键盘码00,01,02,03,*/
  12                                     0x04,0x05,0x06,0x0b, /*键盘码04,05,06,07,*/
  13                                     0x07,0x08,0x09,0x0c, /*键盘码08,09,0a,0b,*/
  14                                     0x0e,0x00,0x0f,0x0d};/*键盘码0c,0d,0e,0f*/
  15          unsigned char dispbuf[9];                       /*显示值存放阵列*/
  16          char m=0,ptr=0;         /*PTR键盘扫描指标,ptr1显示器扫描指标*/
  17          void delay (unsigned int value)         /*延时副程式*/
  18           {
  19   1            while (value!=0) value--;         /*10US延时*/
  20   1       }
  21          void tsled(void);                       /*串行发送到DTLED-6副程式*/     
  22          void scan(void);                        /*键盘扫描副程式*/
  23          void clear(void);                       /*清除按键存放/显示器阵列dispbuf[]副副程式*/
  24          void temp(void);
  25          void xch(void);                         /*宣告按键存放/显示器阵列dispbuf[]右键滚入副程式*/      
  26          /***********************************************************************/
  27          main()                                  /*主程式*/
  28          {
  29   1              dispbuf[0]=0x00;        /*小数点位*/
  30   1              dispbuf[7]=0x01;        /*ID号码*/
  31   1              dispbuf[8]=0x01;        /*蜂鸣器设定开/二次分频*/
  32   1      lloop: scan();                          /*呼叫键盘扫描副程式有按FLAG0会为1*/
  33   1              if(FLAG0==1)      /*判断有按键输入否?*/
  34   1              temp();
  35   1              goto lloop;     
  36   1      }
  37          //******************************************************************
  38          void scan(void)                         /*扫描键盘副程式*/
  39          {char a1=0xef,i;                        /*A1=0XF7列扫描初值,I行*/
  40   1              FLAG0=0;                        /*设按键回应旗号为0,键盘扫描计数指标为0*/
  41   1              ptr=0;
  42   1              for(i=0;i<4;i++)                /*键盘4个扫描列*/
  43   1            {
  44   2                      P0=a1;                  /*列扫描输出,读入P1存入M,以便侦测行与侦测按键是否放开*/
*** ERROR C202 IN LINE 44 OF ..\C程序\KEYLED.C: 'P0': undefined identifier
  45   2                      m=P0;
*** ERROR C202 IN LINE 45 OF ..\C程序\KEYLED.C: 'P0': undefined identifier
  46   2                      switch(m&0x0f)          /*取行的高4位元,侦测那一行被按*/
  47   2                  {
  48   3                      case 0x07: ptr=i*4;     /*第一行被按否?是则扫描指标=列X4*/
C51 COMPILER V8.02   KEYLED                                                                06/18/2008 14:42:38 PAGE 2   

  49   3                                 FLAG0=1;     /*是则设FLAG0=1表有按键输入*/
  50   3                                 break;       /*跳出此循环*/
  51   3                      case 0x0b: ptr=i*4+1;   /*第二行被按否?是则扫描指标=列X4+1*/
  52   3                                 FLAG0=1;     /*是则设FLAG0=1表有按键输入*/
  53   3                                 break;       /*跳出此循环*/  
  54   3                      case 0x0d: ptr=i*4+2;   /*第三行被按否?是则扫描指标=列X4+2*/
  55   3                                 FLAG0=1;     /*是则设FLAG0=1表有按键输入*/
  56   3                                 break;       /*跳出此循环*/
  57   3                      case 0x0e: ptr=i*4+3;   /*第四行被按否?是则扫描指标=列X4+3*/
  58   3                                 FLAG0=1;     /*是则设FLAG0=1表有按键输入*/
  59   3                       default:  break;       /*跳出此循环*/
  60   3                  }
  61   2               if(FLAG0==1)break;             /*不为1,则扫描列右移,扫描下一列*/
  62   2               a1=a1<<1|0x01;                 /*高位补1,由于P1.7~P1.4未接+5V,而是由指令加载高电平*/
  63   2             }
  64   1       }                                      /*返回主程式*/
  65          /***********************************************************************/
  66          void temp(void)
  67          {
  68   1              dispbuf[0]=0x00;        /*小数点位*/
  69   1          {
  70   2          switch(tab[ptr])                    /*是则测试ptr键盘扫描计数器指标至TAB[]取到的键盘码*/
  71   2              {
  72   3                case 0x0e: 
  73   3                              clear();                /*是否按“#”是则呼叫清除显示器CLEAR*/
  74   3                           break;             /*跳出此循环*/
  75   3                default:   
  76   3                              xch();                  /*以上均不是则为数字键呼叫XCH作右键滚入*/
  77   3                           break;             /*跳出此循环*/
  78   3                   }                                  /*跳出SWITCH*/
  79   2              delay(100);                             /*按钮抗机械反弹跳*/
  80   2              while(m==P0);                   /*按钮放开否?*/
*** ERROR C202 IN LINE 80 OF ..\C程序\KEYLED.C: 'P0': undefined identifier
  81   2              tsled();                                /*串行发送到DTLED-6副程式*/
  82   2         }                            
  83   1      }               /*返回上一层程式*/
  84          /******************************************************/
  85          void clear(void)                                /*清除显示器dispbuf[]为00副程式*/
  86          {char c;                                        /*宣告变数*/
  87   1           for(c=1;c<7;c++)                   /*将00存入显示阵列dispbuf[]*/
  88   1           {dispbuf[c]=0x00;
  89   2           }                                  
  90   1      }               /*返回上一层程式*/      
  91          /****************************************************/
  92          void xch(void)                                  /*显示向右移动副程式*/
  93          {char c;                                        /*宣告变数*/
  94   1           for(c=6;c>0;c--)
  95   1           {dispbuf[c]=dispbuf[c-1];/*将显示器dispbuf[]移位交换,dispbuf[3]->dispbuf[4]->dispbuf[5]...*/
  96   2           }
  97   1           dispbuf[0]=0;                              /*有安键时,小数点不亮*/
  98   1           dispbuf[1]=tab[ptr];               /*新的按键值存入dispbuf[1],最低位*/
  99   1      }               /*返回上一层程式*/
 100          /*********************************************************************/
 101          //串行发送DTLED-6显示
 102          //dispbuf0-dispbuf1-dispbuf2-dispbuf3-dispbuf4-dispbuf5-dispbuf6-dispbuf7-dispbuf8
 103          // 小数点 - 数码管1- 数码管2- 数码管3- 数码管4- 数码管5- 数码管6-ID识别码-BZ识别码
 104          //00000xxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx-0000xxxx
 105          //小数点=1~6,其它为不显示                                                                                                       
 106          //数码管1-6=0~15,
 107          //ID识别码=0~15   
 108          //BZ识别码=BZ.3为蜂鸣输出控制位,0=关闭,1=打开
 109          //     BZ0~2为蜂鸣频率输出设定为,000=不分频,  最高频率输出=4800Hz;
C51 COMPILER V8.02   KEYLED                                                                06/18/2008 14:42:38 PAGE 3   

 110          //                                                                001=一次分频,频率输出=4800/ 2 =2400Hz;
 111          //                                                                010=二次分频,频率输出=4800/ 4 =1200Hz;
 112          //                                                                   011=三次分频,频率输出=4800/ 8 =600Hz;
 113          //                                                                100=四次分频,频率输出=4800/ 16=300Hz;
 114          //                                                                101=五次分频,频率输出=4800/ 32=150Hz;
 115          //                                                                110=六次分频,频率输出=4800/ 64=75Hz;                                
 116          //                                                                111=七次分频,频率输出=4800/128=38Hz;      
 117          //======================================================================
 118          void tsled(void)                        /*串行发送DTLED-6显示副程式*/   
 119          {  char ts0,i,j;
 120   1              clk=0;
*** ERROR C202 IN LINE 120 OF ..\C程序\KEYLED.C: 'clk': undefined identifier
 121   1              en=0;
*** ERROR C202 IN LINE 121 OF ..\C程序\KEYLED.C: 'en': undefined identifier
 122   1              delay(10);
 123   1              for(j=0;j<9;j++)
 124   1              {       ts0=dispbuf[j];
 125   2                      for(i=0;i<4;i++)        
 126   2                      {
 127   3                      clk=1;
*** ERROR C202 IN LINE 127 OF ..\C程序\KEYLED.C: 'clk': undefined identifier
 128   3                      ts0=ts0<<1;     
 129   3                      if(AC==1) 
*** ERROR C202 IN LINE 129 OF ..\C程序\KEYLED.C: 'AC': undefined identifier
 130   3                      dout=1;
*** ERROR C202 IN LINE 130 OF ..\C程序\KEYLED.C: 'dout': undefined identifier
 131   3                      else      dout=0;
*** ERROR C202 IN LINE 131 OF ..\C程序\KEYLED.C: 'dout': undefined identifier
 132   3                      clk=0;
*** ERROR C202 IN LINE 132 OF ..\C程序\KEYLED.C: 'clk': undefined identifier
 133   3                      nop;
 134   3                      delay(3);
 135   3                      }
 136   2         }    
 137   1              en=1;
*** ERROR C202 IN LINE 137 OF ..\C程序\KEYLED.C: 'en': undefined identifier
 138   1      }               /*返回主程式*/
 139          /******************************************************************/

C51 COMPILATION COMPLETE.  1 WARNING(S),  14 ERROR(S)

⌨️ 快捷键说明

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