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

📄 test.lst

📁 dp51单片机的实验程序
💻 LST
字号:
C51 COMPILER V7.01  TEST                                                                   09/17/2003 09:39:36 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN test.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE test.c OPTIMIZE(1,SPEED) REGFILE(.\dptest.ORC) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include<REG52.h>
   2          #include<intrins.h>
   3          #include<absacc.h>
   4          #include <VI2C_C51.H>             /*包含VI2C软件包*/
   5          #include<zf.h>
   6          
   7          sbit    SDA=P1^0;
   8          sbit    CLK=P1^1;
   9          sbit    KD_KEY = P1^2;
  10          bit         lcd_flag;
  11          
  12          #define IOWR    XBYTE[0XF800]
  13          #define IORD    XBYTE[0XF801]
  14          #define IORS    XBYTE[0XF802]
  15          
  16          #define  PCF8563  0xA2            /*定义器件地址*/
  17          #define  WRADDR   0x00
  18          #define  RDADDR   0x02
  19          
  20          #define  WC24C02 0xA0            /*定义器件地址*/
  21          #define  WRADR   0x00             /*指定操作地址*/
  22          #define  RDADR   0x00             /*指定写入数据*/
  23          
  24          unsigned        char    code    led[0x20]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0
             -x8e,0xbf,0x89,0x8C,0xc7,0x00}; 
  25          //0-9,a-f,- H p l
  26          
  27          void    delay(unsigned int k)
  28                  {
  29   1                      unsigned        int     i,j;
  30   1                      for(i=0;i<k;i++)
  31   1                      for(j=0;j<100;j++);
  32   1              }
  33          
  34                  void    send(unsigned char a)
  35          {
  36   1              unsigned char i;
  37   1              for(i=0;i<8;i++)
  38   1                      {
  39   2                              if(_crol_(a,i)&0x80)
  40   2                                      SDA=1;
  41   2                              else
  42   2                                      SDA=0;
  43   2                              CLK=0;
  44   2                              CLK=1;
  45   2                              }
  46   1      }
  47          
  48          void    display(unsigned char display_buffer[5])
  49                  {
  50   1                      unsigned        char    display_bit;
  51   1                      unsigned        char    i,k;
  52   1                      display_bit=0x7f;
  53   1                      for(i=0;i<5;i++)
  54   1                      {
C51 COMPILER V7.01  TEST                                                                   09/17/2003 09:39:36 PAGE 2   

  55   2                              k=led[display_buffer[i]];
  56   2                              send(k);
  57   2                              P1=display_bit;
  58   2                              delay(0x01);
  59   2                              P1=0xff;
  60   2                              display_bit=_cror_(display_bit,1);
  61   2                      }
  62   1                              display_bit=0x7f;
  63   1              }
  64          
  65          unsigned char key(void) 
  66          {       
  67   1        unsigned char buffer,display_bit,i;   
  68   1        buffer=0xff;  //赋初值为0xff
  69   1        delay(0x01);  //延时去抖动
  70   1        display_bit=0xfe;     //扫描键盘
  71   1        for(i=0;i<8;i++)      
  72   1         {    
  73   2         send(display_bit);   
  74   2         if(!KD_KEY)  //是此键按下吗?
  75   2         {    
  76   3         buffer=display_bit;  //是,则保存其键值
  77   3         return(buffer);
  78   3         break;       //退出
  79   3         }    
  80   2         display_bit=_crol_(display_bit,1); 
  81   2                      //检测下一键
  82   2         }    
  83   1      }       
  84          
  85          void c_send(unsigned char  a)
  86          {
  87   1              
  88   1              IORS=0x00;
  89   1              IOWR=a;
  90   1              delay(0x02);
  91   1      }
  92          
  93          
  94          
  95          void d_send(unsigned char  b)
  96          {
  97   1              IORS=0x01;
  98   1              IOWR=b;
  99   1              delay(0x02);
 100   1      }
 101          
 102          void lcd(void)
 103          {
 104   1                                      c_send(0x38);
 105   1                                      c_send(0x01);
 106   1                                      c_send(0x06);
 107   1                                      c_send(0x0c);
 108   1                                      c_send(0x85);
 109   1                                      d_send(0x44);
 110   1                                      d_send(0x50);
 111   1                                      d_send(0x2d);
 112   1                                      d_send(0x2d);
 113   1                                      d_send(0x35);
 114   1                                      d_send(0x31);
 115   1                                      c_send(0xc4);
 116   1                                      d_send(0x5a);
C51 COMPILER V7.01  TEST                                                                   09/17/2003 09:39:36 PAGE 3   

 117   1                                      d_send(0x6c);
 118   1                                      d_send(0x67);
 119   1                                      d_send(0x2d);
 120   1                                      d_send(0x2d);
 121   1                                      d_send(0x4d);
 122   1                                      d_send(0x43);
 123   1                                      d_send(0x55);
 124   1                                      }
 125          
 126          main()  
 127          {       
 128   1              unsigned char a[5];
 129   1              unsigned char key_i;
 130   1              unsigned char td[5]={0x00,0x12,0x48,0x30,0x12};
 131   1              unsigned char p[5]={0x0c,0x02,0x04,0x00,0x02};
 132   1              ISendStr(PCF8563,WRADDR,td,0x5);
 133   1              ISendStr(WC24C02,WRADR,p,5);
 134   1              lcd_flag=0;
 135   1              key_i=0xff;     //赋初值为0xff
 136   1              
 137   1              while(1)
 138   1              {
 139   2              
 140   2              send(0x00);             //判断有键盘按

⌨️ 快捷键说明

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