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

📄 xu1.lst

📁 4位数码显示程序。 静态显示
💻 LST
字号:
C51 COMPILER V7.50   XU1                                                                   02/20/2006 10:03:50 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE XU1
OBJECT MODULE PLACED IN xu1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE xu1.c DEBUG OBJECTEXTEND

line level    source

   1          #include <AT89x051.H>
   2          unsigned char code seg[]={
   3                            63,  6, 91, 79, 102,109,125,  7,127,111 ,//;0,1,2,3,4,5,6,7,8,9
   4                                    191,134,219, 207,230,237,253,135,255,239 ,//0.,1.,....    8.,9.
   5                                    0x11,0xC1, 0x63, 0x85,  0x61,0x71,0x91,0x30,0x1F,0x1D ,//A,b, C,d,E,F,H,P.,_,=
   6                                    0x00, 
   7                                    0xC0,0x40
   8                                    };
   9          bit COMOK;
  10          sbit NRE = 0xB2;//max485.re#
  11          sbit WDI = 0xB5;//watchdog
  12          sbit CE  = 0xB7;//led
  13          sbit CLK = 0x91;//led
  14          sbit DAT = 0x90;//led
  15          unsigned char pointer,com[5],dom[5],addr;long int a,b;
  16          void display(unsigned char* dis);
  17          
  18          main()
  19          {
  20   1       int i,j,k,x; 
  21   1       bit sw;
  22   1       unsigned char l;
  23   1       unsigned char dis[4];
  24   1       P1_7 = 1; P1_6 = 1;
  25   1       P1_5 = 1; P1_4 = 1;//回读信号须先 setb 1
  26   1       SP = 0x60; //stack head addr
  27   1       WDI  = 0;
  28   1       COMOK= 0;
  29   1       x=1;
  30   1       for(i=0;i<20000;i++)WDI  = !WDI;
  31   1       dis[3]=P1_7;dis[2]=P1_6;dis[1]=P1_5;dis[0]=P1_4;
  32   1       display(dis);
  33   1       addr=P1;
  34   1       addr=((addr&0xf0)|0x0a);
  35   1       //addr=0xaa; //old
  36   1       for(j=0;j<400;j++)
  37   1              for(i=0;i<1000;i++)WDI  = !WDI;
  38   1      
  39   1       TMOD = 0x20;
  40   1       TH1  = 0xff;
  41   1       TL1  = 0xff; 
  42   1       TR1  = 1;
  43   1       SCON = 0xf0;
  44   1       PCON = 0x80;
  45   1       NRE = 0;
  46   1       ET1  = 0;
  47   1       
  48   1       ES   = 1;
  49   1       EA   = 1;
  50   1       pointer = 0;
  51   1       i=0;l=10;
  52   1       do {
  53   2              if(i<6){
  54   3                      if(COMOK==0){
  55   4                              TH1=0xfd;//255-i;//fd:19200    fc:9600      fe:38400, ff:76800
C51 COMPILER V7.50   XU1                                                                   02/20/2006 10:03:50 PAGE 2   

  56   4                              TL1=0xfd;//255-i;//fb:4800     fa:2400
  57   4                              }
  58   3                      dis[3] = i;   dis[2] = i+1;
  59   3                      dis[1] = i+2; dis[0] = i+3;
  60   3                      i++;//1234567890123456 <---
  61   3                      }
  62   2              else{
  63   3                  if(COMOK==0){
  64   4                              TH1=0xfd;//255-l;//        
  65   4                              TL1=0xfd;//255-l;//
  66   4                              if(l>15)l=0;
  67   4                              else l++;
  68   4                              }
  69   3                      if(sw)dis[3] = 10;
  70   3                  else dis[3]  = 0;
  71   3                      dis[2] = 0;             dis[1] = 0;  dis[0] = COMOK;
  72   3                      sw=!sw;
  73   3                      }
  74   2              WDI  = !WDI;
  75   2              display(dis);
  76   2              for(j=0;j<10000;j++){ k=i*j; WDI  = !WDI;}
  77   2              }while(pointer<4);
  78   1      
  79   1       while(x){
  80   2              WDI  = !WDI;
  81   2              if(pointer>=4)
  82   2              a=com[0]+com[1]*10+com[2]*100+com[3]*1000;
  83   2             b=a;x=0; pointer=0;
  84   2             display(com);}
  85   1       while(1){
  86   2              WDI  = !WDI;
  87   2              if(pointer>=4){
  88   3                              
  89   3                      a=com[0]+com[1]*10+com[2]*100+com[3]*1000;
  90   3                      if((b-a>-50)&(b-a<50)!=0)
  91   3                      display(com);
  92   3                      b=a;
  93   3                                 pointer=0;
  94   3                      }
  95   2      }
  96   1            
  97   1      }     
  98          
  99          void display(unsigned char * dis)
 100          {
 101   1       unsigned char i,j,k;
 102   1       
 103   1       CLK = 0;CE  = 0;
 104   1       for(i=0;i<4;i++){
 105   2              k=seg[dis[i]];
 106   2              for(j=0;j<8;j++){
 107   3                      //if((seg[dis[i]]&(0x80>>j))==0) DAT = 1;
 108   3                      //else DAT = 0;
 109   3                      DAT = (k&0x80);
 110   3                      DAT = !DAT;
 111   3                      k = k<<1;
 112   3                      CLK = 0;
 113   3                      CLK = 1;CLK = 0;
 114   3                      }
 115   2              }
 116   1       CE = 1;
 117   1       P3_4=!P3_4;
C51 COMPILER V7.50   XU1                                                                   02/20/2006 10:03:50 PAGE 3   

 118   1      }
 119          void receive(void) interrupt 4 using 3
 120          {
 121   1       
 122   1       unsigned char uc;
 123   1       RI=0;
 124   1       P3_4=!P3_4;
 125   1       if(RB8==1){
 126   2              uc=SBUF;
 127   2              if(uc==addr){SM2=0;COMOK=1;}
 128   2              return;
 129   2              }
 130   1      if(pointer<4)
 131   1        com[pointer++] = SBUF;//comtimes++%10;
 132   1        if(pointer>3)SM2=1;
 133   1      }       


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    704    ----
   CONSTANT SIZE    =     33    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     20      14
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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