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

📄 interface8051.lst

📁 Interface 8051 to Coolrunner CPLD(Xilinx App)
💻 LST
字号:
C51 COMPILER V7.00  INTERFACE8051                                                          03/23/2003 15:57:16 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE INTERFACE8051
OBJECT MODULE PLACED IN Interface8051.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Interface8051.c OPTIMIZE(4,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg52.h>
   2          #include <stdio.h>
   3          
   4          #include "common.h"
   5          
   6          void SetBaud(void)
   7          {
   8   1        u16 BaudSpeed;
   9   1        u16 Tick;
  10   1        u8  TickH,TickL;
  11   1      
  12   1        TickH=0;
  13   1        TickL=0;
  14   1      //  T2CON=0x01;                                                         // Timer2, Timer Mode, Clear TF2
  15   1        T2CON=0x00;
  16   1        TH2=0;                                                                        // Load Timer2 start value
  17   1        TL2=0;
  18   1        while(P30);                                                           // Wait for Start bit, falling edge
  19   1        TR2=1;                                                                        // Start Timer2 (Count-up)
  20   1        while(!TF2)                                                           // While Timer2 not overflow (TF2=1)
  21   1        {
  22   2          while( !TF2 && !P30 );                                      // Wait for rising edge Timer2 overflow
  23   2          TickH=TH2;                                                          // Capture Timer2
  24   2          TickL=TL2;
  25   2          while( !TF2 && P30 );                                       // Wait for falling edge or Timer2 overflow
  26   2        }
  27   1        TR2=0;                                                                        // Stop Timer2
  28   1        TF2=0;                                                                        // Clear overflow flag
  29   1        Tick=(TickH<<8)+TickL;                                        // Tick = duration from start bit to stop bit
  30   1      
  31   1        BaudSpeed=65536.084-Tick*0.0417372+0.5;       // Round to nearest integer
  32   1      
  33   1        SCON  = 0x52;                                                         // SCON: Mode 1, 8-bit UART, enable rcvr
  34   1        RCAP2H= BaudSpeed>>8;
  35   1        RCAP2L= BaudSpeed&0x00FF;
  36   1        T2CON = 0x3C;                                                         // Timer 2, Mode baud rate generator
  37   1      }
  38          
  39          #if 0
              bit breakFromLoop=0;
              u16 coinCount=0;
              void Int_Timer2(void) interrupt 5 using 0
              {
                      ET2=0;
                      EXF2=0;
                      breakFromLoop=1;
                      TMOD |= 0x01;                           // Timer 0, Mode 1, 16-bit
                      TH0=0;                                          // Load Initial value
                      TL0=0;
                      TF0=0;                                          // Clear Overflow Flag
                      TR0=1;                                          // Start Timer0
                      while(!P11);
                      TR0=0;                                          // Stop Timer0
                      if (TF0) {
                              coinCount++;                    // Overflow Occur
C51 COMPILER V7.00  INTERFACE8051                                                          03/23/2003 15:57:16 PAGE 2   

                              printf("Coin = %d\n", coinCount);
                              TF0=0;
                      }
                      ET2=1;
              }
              #endif
  62          #if 0
              volatile u8 xdata spisr _at_ 0x2080;
              volatile u8 xdata spicr _at_ 0x2084;
              volatile u8 xdata spitr _at_ 0x208a;    
              volatile u8 xdata spirr _at_ 0x208e;    
              
              u8 spiStatus=0;
              u16 countInInt=0;
              bit IntFlag=0;
              #endif
  72          volatile u8 xdata dataInReg _at_ 0xa084;        
  73          volatile u8 xdata addrZero _at_ 0x0051; 
  74          
  75          void main(void)
  76          {
  77   1        u16 i=0;
  78   1        u8 xdata *x=0;
  79   1        u16 j;
  80   1              
  81   1        EA=1;
  82   1      
  83   1      //  EX0=1;      //enable interrupt 0
  84   1      //  P33=1;
  85   1      //  P33=0;      //Reset CPLD
  86   1      //  P33=1;
  87   1              P10=1;  
  88   1              P10=1;
  89   1              for(i=0;i<50;i++);
  90   1              P10=0;
  91   1              P10=0;
  92   1              P10=1;
  93   1        SetBaud();
  94   1      //  ET2=1;      //Enable Timer2 interrupt
  95   1        printf("RUN\n");
  96   1      #if 0
                P34=1; //CS of MMC much be high
              
                      while (spisr&0x20); 
                              printf("Bus Busy\n");
                      spicr=0xdf;
              
                      spitr=0x55;     //dummy data for gen 80 clk
                      spicr=0xff;     //start transfer
                      while(countInInt<3) {
                              if (IntFlag) spitr=0x55;
                              IntFlag=0;
                      }
              
              //      while(countInInt<3) spitr=0xff;
                      spicr=0x00;     //stop transfer
              
              //      while(1) {
                              if(spiStatus) printf("SPI Status =%bx\n",spiStatus);
                              if(countInInt) printf("Enter %u times\n",countInInt);
              
              //      }
C51 COMPILER V7.00  INTERFACE8051                                                          03/23/2003 15:57:16 PAGE 3   

              #endif
 119   1      //      while(1) addrZero=0x00;
 120   1        for(j=0;j<256;j++) {
 121   2          printf("j=%d\r",j);
 122   2              for(i=0x0000;i<0x8000;i++) {
 123   3                      dataInReg=0x51;
 124   3            x[i]=j;
 125   3            x[i+1]=j+1;
 126   3            x[i+2]=j+2;
 127   3            x[i+3]=j+3;
 128   3            if(x[i]!=j) {
 129   4              printf("Memory error at %x\n",i);
 130   4            }
 131   3      //        getchar();
 132   3          }
 133   2        }
 134   1      
 135   1      //      ET2=1;  //Enable Timer2 interrupt
 136   1      }
 137          #if 0
              void Int_Ext_0(void) interrupt 0 using 1
              {
                      EX0=0;
                      spiStatus=spisr;
                      countInInt++;
                      if(countInInt) printf("Enter %u times\n",countInInt);
                      IntFlag=1;
                      EX0=1;
              }
              #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    364    ----
   CONSTANT SIZE    =     31    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       6
   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 + -