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

📄 main.lst

📁 使用芯片AT89S52,6位七段数码管显示以及串口通讯
💻 LST
📖 第 1 页 / 共 2 页
字号:
 189   1       signed int d;
 190   1       //clear();
 191   1      /* if(crc!=tem[7]) 
 192   1       {
 193   1       disple[0]=10;
 194   1       disple[1]=10;
 195   1       disple[2]=10;
 196   1       disple[3]=10;
 197   1       if(key_sym==1) disple[5]=1;
 198   1       if(key_sym==2) disple[5]=2;
 199   1       }
 200   1       else*/
 201   1      // {
 202   1       if(key_sym==1)
 203   1       {
 204   2       disple[5]=1;
 205   2       d=tem[2];
 206   2       d=d<<8;
 207   2       d=d+tem[1];
 208   2       }
 209   1       if(key_sym==2)
 210   1       {
 211   2       disple[5]=2;
 212   2       d=tem[4];
 213   2       d=d<<8;
 214   2       d=d+tem[3];
 215   2       }
 216   1       if(d<0)  
 217   1       { 
 218   2        disple[3]=10; d=abs(d); 
 219   2       }
 220   1        else disple[3]=0x0f;
 221   1       d=d/13;
 222   1       disple[0]=(char)(d%10);
 223   1       d=d/10;
 224   1       disple[1]=(char)(d%10);
 225   1       disple[2]=(char)(d/10); 
 226   1      // }
 227   1      
 228   1      }
 229          
 230          void speed(void)
 231          {
 232   1       signed int d;
 233   1      //clear();
 234   1       /*if(crc!=tem[7]) 
 235   1       {
 236   1       disple[0]=10;
 237   1       disple[1]=10;
 238   1       disple[2]=10;
 239   1       disple[3]=10;
 240   1       disple[5]=3;
 241   1       }
C51 COMPILER V7.07   MAIN                                                                  09/26/2008 11:05:59 PAGE 5   

 242   1       else*/
 243   1      // {
 244   1       disple[5]=3;
 245   1       d=tem[6];
 246   1       d=d<<8;
 247   1       d=d+tem[5];
 248   1       if(d<0)  
 249   1       { 
 250   2        disple[3]=10; d=abs(d); 
 251   2       }
 252   1       else disple[3]=0x0f;
 253   1       d=d/34;
 254   1       disple[0]=(char)(d%10);
 255   1       d=d/10;
 256   1       disple[1]=(char)(d%10);
 257   1       disple[2]=(char)(d/10); 
 258   1      
 259   1      }
 260          
 261          
 262          void tserial(void)                      /*宣告串口serial发送副程式*/    
 263          {
 264   1         unsigned char i=4;
 265   1         char j;
 266   1         char a,b;
 267   1         int dat=0;   
 268   1         for(j=(num-1);j>=0;j--)
 269   1         {
 270   2          dat=dat+disple[j];
 271   2              dat=dat*10;
 272   2         }
 273   1         dat=dat<<2;
 274   1         a=dat&0x00ff;
 275   1         b=(dat&0xff00)>>8;
 276   1         bufdata[0]=a^b;
 277   1         bufdata[1]=b;  //gao字节
 278   1         bufdata[2]=a;  //di字节
 279   1         bufdata[3]=0xaa;   //aa 
 280   1         
 281   1         IE=0x8f;
 282   1              {while(i>0)
 283   2                  {
 284   3                     i--;
 285   3                     SBUF=bufdata[i];         /*根据扫描指标到TAB中取ASCII码由SBUF发送出去*/
 286   3                     while(TI!=1);                    /*发送完成否?*/
 287   3                     TI=0;                            /*是,则清除发送完成旗标TI=0*/
 288   3                     delay(10);
 289   3                  }
 290   2         }  
 291   1         IE=0x9f;
 292   1      }
 293          
 294          /*--------------------------------------*/
 295          void service_int0 () interrupt 1 using 2    /*设定每隔3000us中断扫描一次数码管*/
 296           {   
 297   1              TH0=0xf8;  /*每隔4000US扫描一次2000*/ 
 298   1              TL0=0x30;
 299   1              if (ptr1==4) ptr1=5;  /*ptr1>5表示6个数码管都已经扫描过*/
 300   1              P0=(ptr1<<4)|disple[ptr1]; /*将扫描值左移至高4位元再加上资料码*/
 301   1              ptr1++;     /*扫描指标加1*/
 302   1                      if(ptr1==6) ptr1=0;
 303   1                      tim++;
C51 COMPILER V7.07   MAIN                                                                  09/26/2008 11:05:59 PAGE 6   

 304   1                      if(tim>160) tim=161;
 305   1       }     /*返回主程式*/
 306          
 307          
 308          /********************************************************/
 309          
 310          /*void uartcom1_in1 () interrupt 4 using 1  
 311           {
 312            unsigned char v,i=0;
 313            crc=0;
 314               while(RI!=1);    
 315                { 
 316            RI=0;
 317           v=SBUF;    
 318           if(v==0xaa)  
 319              { 
 320                      while(RI!=1);  
 321                bufuart[i]=v;
 322                       for(i=1;i<8;i++) 
 323            {
 324                   while(RI!=1);  
 325            bufuart[i]=SBUF; / 
 326            if(i<7) crc^=bufuart[i];
 327            RI=0;   
 328               }
 329                     }
 330           else delay(10);
 331            RI=0;
 332                } 
 333           for(i=0;i<8;i++)
 334           {
 335           tem[i]=bufuart[i];
 336           }
 337           if(key_sym==1) angle();
 338           if(key_sym==2) angle();
 339           if(key_sym==3) speed();
 340           } */
 341          void uartcom1_in1 () interrupt 4 using 1  
 342          {
 343   1        unsigned char i=0;
 344   1        crc=0;
 345   1        while(RI!=1);     
 346   1        RI=0;
 347   1        bufuart[i]=SBUF;    
 348   1        if(bufuart[i]==0xaa)  
 349   1        {  
 350   2         for(i=1;i<8;i++) 
 351   2         {
 352   3          while(RI!=1);  
 353   3          bufuart[i]=SBUF; 
 354   3          if(i<7) crc^=bufuart[i];
 355   3          RI=0;   
 356   3         }
 357   2      
 358   2         for(i=0;i<8;i++)
 359   2         {
 360   3          tem[i]=bufuart[i];
 361   3         }
 362   2         /*if(key_sym==1) angle();
 363   2         if(key_sym==2) angle();
 364   2         if(key_sym==3) speed();*/
 365   2        }
C51 COMPILER V7.07   MAIN                                                                  09/26/2008 11:05:59 PAGE 7   

 366   1        else delay(10);
 367   1        RI=0;  
 368   1      }   
 369          /********************************************************/
 370          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    859    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     63    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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