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

📄 spi_master.lst

📁 MPC82xx系列SPI Demo, 採用Keilc 開發,完整source code
💻 LST
字号:
C51 COMPILER V7.01  SPI_MASTER                                                             12/28/2006 18:37:39 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE SPI_MASTER
OBJECT MODULE PLACED IN spi_master.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE spi_master.c DEBUG OBJECTEXTEND

stmt level    source

   1          /* Megawin "SPI process" demo code
   2           * Edited by: Peter Lin 
   3           * Mail: peter@megawin.com.tw
   4           * tel:03-5750050
   5           */
   6          
   7          /*include megawin header file */
   8          #include "reg82xx.h"
   9          char serial_data;
  10          char data_example=0x55;
  11          char data_save;
  12          bit transmit_completed= 0;
  13          sbit test_SCON= P2^4;
  14          
  15          /**
  16           * FUNCTION_PURPOSE: This file set up spi in master mode 
  17           * FUNCTION_INPUTS: P1.6(MISO) serial input
  18           * FUNCTION_OUTPUTS: P1.5(MOSI) serial output
  19           * FUNCTION_OUTPUTS: P1.4(/SS)=0 slave selected/=1 master selected
  20           */
  21          void init_spi(void)
  22          {
  23   1      P1M0 = 0x00;
  24   1      P1M1 = 0x00;
  25   1      SPICTL = 0x00;                 /*clear SPI Control register */
  26   1      SPICTL |= 0xC0;                /*SSIG = 0 ,SPEN = 1,Slave Mode without SS Pin*/
  27   1      P1_4=0;                        /* SS Pin pill low */ 
  28   1      SPICTL |= 0x02;                /* Fclk Periph/128 */
  29   1      SPICTL &= ~0x08;               /* CPOL=0; transmit mode example */
  30   1      SPICTL |= 0x00;                /* CPHA=1; transmit mode example */
  31   1      AUXR |= 0x80;                  /* enable spi interrupt */
  32   1      SPICTL |= 0x40;                /* run spi */
  33   1      ESPI_ADC = 1;                  /* enable SPI/ADC interrupt */
  34   1      }
  35          
  36          // initialization UART 
  37          void init_uart(void)
  38          {
  39   1       TMOD=0x21;
  40   1       SCON=0x50;                  // Crystal as 11.0592Mhz
  41   1       TH1=0xFD;                    //Configure Timer1, so to set UART to operate at buad rate 9600
  42   1       TL1=0xFD;
  43   1       PCON=0x80;
  44   1       TCON=0x45;     
  45   1       RI=0;
  46   1       ES=1;
  47   1      }
  48          
  49          void SCON_int (void) interrupt 4  
  50           
  51          {
  52   1       if(TI)                            
  53   1        {      
  54   2         test_SCON ^=1;
  55   2         TI=0;                             
C51 COMPILER V7.01  SPI_MASTER                                                             12/28/2006 18:37:39 PAGE 2   

  56   2         REN=1;                            
  57   2        }
  58   1       else
  59   1         {   
  60   2         RI=0;                           
  61   2         SPIDAT=SBUF;
  62   2         while(SPISTAT & 0x80 == 0);   
  63   2         }       
  64   1      }
  65          
  66          
  67          /**
  68           * FUNCTION_PURPOSE:interrupt
  69           * FUNCTION_INPUTS: void
  70           * FUNCTION_OUTPUTS: transmit_complete is software transfert flag
  71           */
  72          void it_SPI(void) interrupt 9 /* interrupt address is 0x004B */
  73          {
  74   1              switch  ( SPISTAT & 0xC0)         /* read and clear spi status register */
  75   1              {
  76   2                      case 0x80:
  77   2               TI  = 0;
  78   2               SBUF=SPIDAT;   /* read receive data */
  79   2               transmit_completed=1;/* set software flag */
  80   2               SPISTAT = 0xC0;   //clear spistat flag
  81   2                      break;
  82   2      
  83   2                      case 0x10:
  84   2               /* put here for mode fault tasking */  
  85   2                      break;
  86   2              
  87   2                      case 0x40:
  88   2               /* put here for overrun tasking */     
  89   2                      break;
  90   2              }
  91   1          SPISTAT |= 0xC0;    // clear SPIF Flag
  92   1      }
  93          
  94          
  95          
  96          void main(void)
  97          {
  98   1      init_spi();
  99   1      init_uart();
 100   1      EA=1;                                 /* enable interrupts */
 101   1      transmit_completed = 0;    /* clear software transfert flag */
 102   1      
 103   1              while(1)                         
 104   1         {
 105   2        
 106   2      if(transmit_completed)
 107   2         {
 108   3         SPIDAT = serial_data;       /* echo data to master */
 109   3         transmit_completed = 0;    /* clear software transfert flag */
 110   3         
 111   3         }
 112   2        }
 113   1      }
 114          


MODULE INFORMATION:   STATIC OVERLAYABLE
C51 COMPILER V7.01  SPI_MASTER                                                             12/28/2006 18:37:39 PAGE 3   

   CODE SIZE        =    124    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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