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

📄 zhkcsj.lst

📁 文件夹里面有两个文件
💻 LST
字号:
C51 COMPILER V7.06   ZHKCSJ                                                                01/09/2008 10:38:45 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE ZHKCSJ
OBJECT MODULE PLACED IN zhkcsj.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE zhkcsj.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include"at89x52.h"
   2          #include<intrins.h>
   3          #include<stdio.h>
   4          #include<zi.h>
   5          
   6          #define  uchar unsigned char    
   7          #define  uint  unsigned int
   8          #define disp_off   0x3e
   9          #define disp_on    0x3f
  10          #define disp_x     0xb8
  11          #define disp_z     0xc0
  12          #define disp_y     0x40
  13          #define comm       0
  14          #define dat        1
  15          #define data_ora   P0       
  16          
  17          sbit LED_CLK=P1^0;   //LED时钟线
  18          sbit LED_DAT=P1^1;   //LED数据线
  19          
  20          sbit di =P3^7;  //Data or Instrument Select,H:写数据,L:写指令
  21          sbit rw =P3^6;  //Write or Read,H:read,L:write
  22          sbit e  =P1^2;  //读写使能
  23          sbit cs1=P1^4;  //cs1=H,选择左半屏
  24          sbit cs2=P1^3;  //cs2=H,选择右半屏
  25          sbit rst=P1^5;  //Lcm reset,低有效
  26          
  27          sbit data0=P2^0;
  28          sbit data1=P2^1;
  29          sbit data2=P2^2;
  30          sbit data3=P2^3;
  31          sbit mode0=P2^4;
  32          sbit mode1=P2^5;
  33          sbit start=P2^6;
  34          
  35          void init_lcd(void);
  36          void disps(void);
  37          void disp_f(void);
  38          void disp_m(void);
  39          void disp_e(void);
  40          void disp_pl(void);
  41          void disp_ms(void);
  42          void wr_lcd (uchar dat_comm,uchar content);
  43          void lat_disp (uchar data1,uchar data2);
  44          void chn_disp (uchar x,uchar y,uchar xl,uchar yl,uchar row_xl,uchar row_yl,uchar code *chn);
  45          
  46          void led_display(uchar i);
  47          
  48          const uchar code LED_FONT[11]={  //
  49                  0xFC, //0
  50                  0x60, //1
  51                  0xDA, //2
  52                  0xF2, //3
  53                  0x66, //4
  54                  0xB6, //5
  55                  0xBE, //6
C51 COMPILER V7.06   ZHKCSJ                                                                01/09/2008 10:38:45 PAGE 2   

  56                  0xE0, //7
  57                  0xFE, //8
  58                  0xF6, //9
  59              0x00, //不显示
  60          };   
  61          
  62          uchar set_freq;
  63          uchar set_mode;
  64          uint freq;
  65          uchar mode;
  66          uchar buchang;
  67          
  68          void delayl (uint ms)
  69          {
  70   1        uint i,j;
  71   1        for(i=0;i<ms;i++)
  72   1        for(j=0;j<100;j++)
  73   1        ;
  74   1      }
  75          
  76          set0()interrupt 0
  77          {
  78   1         uchar i;
  79   1         delayl(10);
  80   1         if(set_freq==1){
  81   2                 if((P2&0x0f)==0x00){led_display(0);freq=freq*10;}
  82   2             if((P2&0x0f)==0x01){led_display(1);freq=freq*10+1;}
  83   2             if((P2&0x0f)==0x02){led_display(2);freq=freq*10+2;}
  84   2             if((P2&0x0f)==0x03){led_display(3);freq=freq*10+3;}
  85   2             if((P2&0x0f)==0x04){led_display(4);freq=freq*10+4;}
  86   2             if((P2&0x0f)==0x05){led_display(5);freq=freq*10+5;}
  87   2             if((P2&0x0f)==0x06){led_display(6);freq=freq*10+6;}
  88   2             if((P2&0x0f)==0x07){led_display(7);freq=freq*10+7;}
  89   2             if((P2&0x0f)==0x08){led_display(8);freq=freq*10+8;}
  90   2             if((P2&0x0f)==0x09){led_display(9);freq=freq*10+9;}
  91   2                 
  92   2         }
  93   1         if(set_mode==1){
  94   2                 if((P2&0x0f)==0x00){led_display(0);mode=0;}
  95   2             if((P2&0x0f)==0x01){led_display(1);mode=1;}
  96   2             if((P2&0x0f)==0x02){led_display(2);mode=2;}
  97   2            // mode=(P2&0x0f);               ?????????????
  98   2         }
  99   1                 if((P2&0x0f)==0x0a)
 100   1                 {
 101   2                    freq=0;
 102   2                        for(i=0;i<6;i++)led_display(0);
 103   2                    set_freq=1;set_mode=0;
 104   2      
 105   2                 }
 106   1                 if((P2&0x0f)==0x0b)
 107   1                 {
 108   2                    mode=0;
 109   2                        for(i=0;i<6;i++)led_display(0);
 110   2                    set_mode=1;set_freq=0;
 111   2                 }
 112   1                 if((P2&0x0f)==0x0c)
 113   1                 {
 114   2                    
 115   2                        buchang=freq/8;
 116   2                        P0=freq/8;
 117   2                        if((mode&0x01)==0)mode0=0;
C51 COMPILER V7.06   ZHKCSJ                                                                01/09/2008 10:38:45 PAGE 3   

 118   2                        else {mode0=1;}
 119   2                        if((mode&0x02)==0)mode1=0;
 120   2                        else {mode1=1;}
 121   2                        start=1;
 122   2                        delayl(55);
 123   2                        start=0;
 124   2                        set_freq=0;
 125   2                        set_mode=0;
 126   2      
 127   2             }
 128   1                 
 129   1               
 130   1          
 131   1      }
 132          main()                                  /*主程式*/
 133          {
 134   1          
 135   1              EA=1;              /*CPU开中断*/
 136   1              IT0=1;             /*外部中断1下降沿触发方式*/
 137   1              EX0=1;             /*外部中断1的中断允许位置1*/
 138   1              freq=8;
 139   1              mode=0;
 140   1              start=0;
 141   1          led_display(0);
 142   1              led_display(0);
 143   1              led_display(0);
 144   1              led_display(0);
 145   1              led_display(0);
 146   1              led_display(8);
 147   1          init_lcd();
 148   1          lat_disp(0x00,0x00);
 149   1          disps();
 150   1              P0=freq/8;
 151   1              mode0=0;
 152   1              mode1=0;
 153   1              start=1;
 154   1              delayl(5);
 155   1              start=0;
 156   1              while(1){
 157   2                 if(set_freq==1)disp_f();
 158   2                 if(set_mode==1)disp_m();
 159   2                 if((set_freq==0)&&(set_mode==0)){disp_e();disp_pl();disp_ms();}
 160   2             delayl(4);
 161   2              }
 162   1      }
 163          /*------------写数据或命令到LCD--------------*/
 164          void wr_lcd (uchar dat_comm,uchar content)
 165          {
 166   1        //chk_busy ();
 167   1        di=dat_comm;
 168   1        rw=0;
 169   1        data_ora=content;
 170   1        e=1;
 171   1        ;
 172   1        e=0;
 173   1      }
 174          /*------------------初始化-----------------*/
 175          void init_lcd (void)
 176          {
 177   1        rst=0;
 178   1        delayl(5);
 179   1        rst=1;
C51 COMPILER V7.06   ZHKCSJ                                                                01/09/2008 10:38:45 PAGE 4   

 180   1        cs1=1;cs2=1;
 181   1        wr_lcd (comm,disp_off);
 182   1        wr_lcd (comm,disp_on);
 183   1      }
 184          /*---指定位置(x,y)显示row_xl行(每行row_yl个)汉字(大小8xl*yl)---*/
 185          void chn_disp (uchar x,uchar y,uchar xl,uchar yl,uchar row_xl,uchar row_yl,uchar code *chn)
 186          {
 187   1        uchar i,j,k,l,a;
 188   1        wr_lcd (comm,disp_on);
 189   1        for(l=0;l<row_xl;l++)
 190   1        {
 191   2          for(k=0;k<row_yl;k++)
 192   2          {
 193   3            for(j=0;j<xl;j++)
 194   3            {
 195   4              wr_lcd (comm,disp_x+x+l*xl+j);
 196   4              wr_lcd (comm,disp_z);
 197   4              wr_lcd (comm,disp_y+y+k*yl);
 198   4              a=l*xl*yl*row_yl+k*xl*yl+j*yl;
 199   4              for(i=0;i<yl;i++)
 200   4                wr_lcd (dat,chn[a+i]);
 201   4            }
 202   3          }
 203   2        }
 204   1      }
 205          
 206          /*--------------写点阵------------------*/
 207          void lat_disp (uchar data1,uchar data2)
 208          {
 209   1        uchar i,j;
 210   1        cs1=1;cs2=1;
 211   1        wr_lcd (comm,disp_on);
 212   1        for(j=0;j<8;j++)
 213   1        {
 214   2          wr_lcd (comm,disp_x+j);
 215   2          wr_lcd (comm,disp_z);
 216   2          wr_lcd (comm,disp_y);
 217   2          for(i=0;i<32;i++)
 218   2          {
 219   3            wr_lcd (dat,data1);
 220   3            wr_lcd (dat,data2);
 221   3          }
 222   2        }
 223   1      }
 224          void disps()
 225          {
 226   1         
 227   1         lat_disp(0x00,0x00);
 228   1         cs1=0;cs2=1;
 229   1         chn_disp(0,2,2,8,1,3,kaishia);
 230   1         chn_disp(0,31,2,16,1,2,kaishib);   
 231   1      }
 232          void disp_f()
 233          {
 234   1         
 235   1         cs1=0;cs2=1;
 236   1         chn_disp(2,0,2,16,1,4,szpl);
 237   1         chn_disp(4,0,2,16,1,2,pl);
 238   1      }
 239          void disp_m()
 240          {
 241   1         
C51 COMPILER V7.06   ZHKCSJ                                                                01/09/2008 10:38:45 PAGE 5   

 242   1         cs1=0;cs2=1;
 243   1         chn_disp(2,0,2,16,1,4,szms);
 244   1         chn_disp(6,0,2,16,1,2,ms);
 245   1      }
 246          void disp_e()
 247          {
 248   1         
 249   1         cs1=0;cs2=1;
 250   1         chn_disp(2,0,2,16,1,4,wcsz);
 251   1      }
 252          void disp_pl()
 253          {
 254   1         uchar i;
 255   1         uchar j=0;
 256   1         uint midpinlv;
 257   1         cs1=1;cs2=0;
 258   1         midpinlv=freq;
 259   1         for(i=0;i<6;i++)
 260   1         {
 261   2            j=midpinlv%10;
 262   2                midpinlv=midpinlv/10;
 263   2            chn_disp(4,40-8*i,2,8,1,1,shuzi+j*16);
 264   2         }
 265   1      }
 266          void disp_ms()
 267          {
 268   1         
 269   1         if(mode==0)chn_disp(6,0,2,16,1,3,sin);
 270   1         if(mode==1)chn_disp(6,0,2,16,1,2,pulse);
 271   1         if(mode==2)chn_disp(6,0,2,16,1,3,angle);
 272   1      }
 273          void led_display(uchar i)
 274          {
 275   1          uchar j,mask;
 276   1              mask=0x01;
 277   1              for(j=0;j<8;j++){
 278   2                      LED_CLK=0;
 279   2                      LED_DAT=( (LED_FONT[i]) & mask);
 280   2                      mask<<=1;
 281   2                      LED_CLK=1;   //上升沿移位
 282   2              }
 283   1      }
 284          
 285          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1396    ----
   CONSTANT SIZE    =   1051    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6      15
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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