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

📄 at89s52.lst

📁 单片机智能产品c语言设计实例详解?テ悄懿穋语言设计实例详解单片机智能产品c语言设计实例详解
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   AT89S52                                                               11/19/2005 08:42:05 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE AT89S52
OBJECT MODULE PLACED IN at89s52.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE at89s52.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <AT89X55.H>
   2          #include <intrins.H>
   3          #include <ABSACC.H>
   4          #define uchar unsigned char
   5          #define uint unsigned int
   6          #define SEL27C2001_0 0xFC
   7          #define SEL27C2001_1 0xFD
   8          #define SEL27C2001_2 0xFE
   9          #define SEL27C2001_3 0xFF
  10          #define SEL6264 0xEF
  11          #define SPEED 2
  12          #define reset() {WDT=0x1e;WDT=0xe1;}
  13          sfr WDT=0xa6;
  14          uint data nmpoint;
  15          uchar data col,f,page;
  16          bit loadX=1,loadY;
  17          bit newdata;
  18          uchar xdata XBUFF[160];uchar xdata YBUFF[160];
  19          uchar xdata nm[3000];
  20          sbit SDA=P1^6;
  21          sbit SCL=P1^7;
  22          bdata char com_data;
  23          sbit mos_bit=com_data^7;
  24          sbit low_bit=com_data^0;
  25          /*********************************/
  26          void delay_iic(int n);
  27          uchar rd_24c01(char a);
  28          void wr_24c01(char a,char b);
  29          //********************************
  30          uchar code ASC[];
  31          uchar two_onebyte(uchar h1,uchar h2);
  32          /*********************************/
  33          void HZNM_32byte(uchar n,uchar m)
  34          {
  35   1      uint data x,y;uchar data z1,z2,i;
  36   1      if((n>128)&&(m>128))
  37   1      {
  38   2      x=(n-0xa1)*94+(m-0xa1);
  39   2      //======================================================
  40   2              if(x<2048)
  41   2              {y=x*32;
  42   3              for(i=0;i<32;i=i+2)
  43   3              {P1=SEL27C2001_0;z1=XBYTE[i+y];z2=XBYTE[i+y+1];
  44   4              P1=SEL6264;
  45   4              if(loadX)
  46   4              {XBUFF[5*i+2*f]=z1;XBUFF[5*i+2*f+1]=z2;}
  47   4              else {YBUFF[5*i+2*f]=z1;YBUFF[5*i+2*f+1]=z2;}}
  48   3              }
  49   2      //------------------------------------------------------
  50   2              if((x>=2048)&&(x<4096))
  51   2              {y=x-2048;y=y*32;
  52   3              for(i=0;i<32;i=i+2)
  53   3              {P1=SEL27C2001_1;z1=XBYTE[i+y];z2=XBYTE[i+y+1];
  54   4              P1=SEL6264;
  55   4              if(loadX)
C51 COMPILER V7.06   AT89S52                                                               11/19/2005 08:42:05 PAGE 2   

  56   4              {XBUFF[5*i+2*f]=z1;XBUFF[5*i+2*f+1]=z2;}
  57   4              else {YBUFF[5*i+2*f]=z1;YBUFF[5*i+2*f+1]=z2;}}
  58   3              }
  59   2      //-----------------------------------------------------
  60   2              if((x>=4096)&&(x<6144))
  61   2              {y=x-4096;y=y*32;
  62   3              for(i=0;i<32;i=i+2)
  63   3              {P1=SEL27C2001_2;z1=XBYTE[i+y];z2=XBYTE[i+y+1];
  64   4              P1=SEL6264;
  65   4              if(loadX)
  66   4              {XBUFF[5*i+2*f]=z1;XBUFF[5*i+2*f+1]=z2;}
  67   4              else {YBUFF[5*i+2*f]=z1;YBUFF[5*i+2*f+1]=z2;}}
  68   3              }
  69   2      //-----------------------------------------------------
  70   2              if(x>=6144)
  71   2              {y=x-6144;y=y*32;
  72   3              for(i=0;i<32;i=i+2)
  73   3              {P1=SEL27C2001_3;z1=XBYTE[i+y];z2=XBYTE[i+y+1];
  74   4              P1=SEL6264;
  75   4              if(loadX)
  76   4              {XBUFF[5*i+2*f]=z1;XBUFF[5*i+2*f+1]=z2;}
  77   4              else {YBUFF[5*i+2*f]=z1;YBUFF[5*i+2*f+1]=z2;}}
  78   3              }
  79   2              nmpoint=nmpoint+2;
  80   2      }
  81   1      //===========================================================
  82   1              if((n<0x80)&&(m<0x80))
  83   1              {
  84   2              x=(n-0x20)*16;y=(m-0x20)*16;P1=SEL6264;
  85   2                      for(i=0;i<16;i++)
  86   2                      {if(loadX)
  87   3                              {XBUFF[10*i+2*f]=ASC[i+x];XBUFF[10*i+2*f+1]=ASC[i+y];}
  88   3                      else {YBUFF[10*i+2*f]=ASC[i+x];YBUFF[10*i+2*f+1]=ASC[i+y];}
  89   3                      }
  90   2              nmpoint=nmpoint+2;
  91   2              }
  92   1      //============================================================
  93   1              if((n<0x80)&&(m>0x80))
  94   1              {
  95   2              x=(n-0x20)*16;P1=SEL6264;
  96   2                      for(i=0;i<16;i++)
  97   2                      {if(loadX)
  98   3                              {XBUFF[10*i+2*f]=ASC[i+x];XBUFF[10*i+2*f+1]=0;}
  99   3                              else {YBUFF[10*i+2*f]=ASC[i+x];YBUFF[10*i+2*f+1]=0;}
 100   3                      }
 101   2              nmpoint++;
 102   2              }
 103   1      }
 104          /*****************************************/
 105          uchar two_onebyte(uchar h1,uchar h2)
 106          {
 107   1      uchar temp,tempcol;
 108   1      if(col<8) tempcol=col;
 109   1      else tempcol=col-8;
 110   1      temp=(h1<<tempcol)|(h2>>(8-tempcol));
 111   1      temp=255-temp;
 112   1      return temp;
 113   1      }
 114          /******************************************/
 115          void initload(void)
 116          {uint j,iiccnt=0;bit flag=0;
 117   1      P1=SEL6264;
C51 COMPILER V7.06   AT89S52                                                               11/19/2005 08:42:05 PAGE 3   

 118   1      for(j=0;j<8;j++)nm[j]=0x20;
 119   1              for(j=8;j<3000;j++)
 120   1              {
 121   2              nm[j]=rd_24c01(iiccnt);delay_iic(150);iiccnt++;
 122   2              if(nm[j]==0x0d||nm[j]==0x0a)j--;
 123   2              if(iiccnt==256){iiccnt=0;page=page+2;}
 124   2              if(nm[j]==255){flag=1;break;}
 125   2              }
 126   1              if(flag)
 127   1              {for(iiccnt=j;iiccnt<16+j;iiccnt++)nm[iiccnt]=0x20;
 128   2              flag=0;iiccnt=0;page=0;}
 129   1      }
 130          /*******************************************************/
 131          void main(void)
 132          {uint j,nmcnt=0;uchar cnt=0;
 133   1      reset()
 134   1      P1=SEL6264;
 135   1      for(j=0;j<160;j++)XBUFF[j]=0;
 136   1      for(j=0;j<160;j++)YBUFF[j]=0;
 137   1      reset()
 138   1      initload();
 139   1      reset()
 140   1      col=16;
 141   1      TMOD=0x01;
 142   1      IE=0x83;
 143   1      IT0=1;
 144   1      TH0=-(1400/256);
 145   1      TL0=-(1400%256);
 146   1      TR0=1;
 147   1      SCON=0x00;
 148   1      while(1)
 149   1      {
 150   2      if((loadX)||(loadY))
 151   2              {       
 152   3                      nmpoint=nmcnt;
 153   3                      for(f=0;f<5;f++){HZNM_32byte(nm[nmpoint],nm[nmpoint+1]);reset()}
 154   3                      if((nm[nmcnt]<0x80)&&(nm[nmcnt+1]>0x80))nmcnt++;
 155   3                      else 
 156   3                      nmcnt=nmcnt+2;
 157   3                      if(nm[nmcnt]==0x20)cnt++;else cnt=0;
 158   3                      if(cnt>=5){nmcnt=0;cnt=0;}
 159   3                      loadX=0;loadY=0;
 160   3              }
 161   2              //--------------------------------------
 162   2      if(newdata)
 163   2              {
 164   3              TR0=0;
 165   3              XBYTE[0xFFFF]=0x10;
 166   3              P1=SEL6264;
 167   3              for(j=0;j<160;j++)XBUFF[j]=0;
 168   3              for(j=0;j<160;j++)YBUFF[j]=0;
 169   3              reset()
 170   3              initload();
 171   3              reset()
 172   3              col=16;
 173   3              newdata=0;
 174   3              TR0=1;
 175   3              }
 176   2      }
 177   1      }
 178          /*******************************************************/
 179          void int_zd0(void) interrupt 0 using 1
C51 COMPILER V7.06   AT89S52                                                               11/19/2005 08:42:05 PAGE 4   

 180          {
 181   1      newdata=1;
 182   1      }
 183          /******************************************************/
 184          void display()interrupt 1 using 2
 185          { 
 186   1      int data s;
 187   1      static bit disXY;
 188   1      static uchar disrow,num;
 189   1      uchar inc,sr;
 190   1      sr=P1;
 191   1      reset()
 192   1      if(col<8)inc=0;else inc=1;
 193   1      TH0=-(1400/256);
 194   1      TL0=-(1400%256);
 195   1      P1=SEL6264;
 196   1      //================================================================================
 197   1      if(!disXY)
 198   1      {               switch(disrow)
 199   2                      {
 200   3                      case 0:for(s=7+inc;s>=0+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 201   3                      case 1:for(s=17+inc;s>=10+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 202   3                      case 2:for(s=27+inc;s>=20+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 203   3                      case 3:for(s=37+inc;s>=30+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 204   3                      case 4:for(s=47+inc;s>=40+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 205   3                      case 5:for(s=57+inc;s>=50+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 206   3                      case 6:for(s=67+inc;s>=60+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 207   3                      case 7:for(s=77+inc;s>=70+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 208   3                      case 8:for(s=87+inc;s>=80+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 209   3                      case 9:for(s=97+inc;s>=90+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 210   3                      case 10:for(s=107+inc;s>=100+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 211   3                      case 11:for(s=117+inc;s>=110+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 212   3                      case 12:for(s=127+inc;s>=120+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 213   3                      case 13:for(s=137+inc;s>=130+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 214   3                      case 14:for(s=147+inc;s>=140+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 215   3                      case 15:for(s=157+inc;s>=150+inc;s--){SBUF=two_onebyte(XBUFF[s],XBUFF[s+1]);while(!TI);TI=0;}break;
 216   3                      default:break;
 217   3                      } 
 218   2                      XBYTE[0xFFFF]=0x10+disrow;
 219   2                      XBYTE[0xFFFF]=0x20+disrow;
 220   2                      disrow++;
 221   2                      if(disrow>=16){disrow=0;num++;}
 222   2                      if(num>=SPEED){num=0;col++;}
 223   2                      if(col>=16){col=0;disXY=1;loadX=1;}

⌨️ 快捷键说明

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