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

📄 main.lst

📁 这是我写的一个51内核对APR6008语音储存播放ic的底层驱动程式!spi通讯方式.在89s52上面调试通过!
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.10   MAIN                                                                  07/02/2005 14:18:15 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\PROGRAM FILES\KEIL\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #pragma CODE
   2          #include <reg52.h>
   3          #include "APR6008_DRIVER.H"
   4          #include <intrins.h> 
   5          
   6          /*
   7          sbit SCLK = P0^0;
   8          sbit CS   = P0^1;
   9          sbit DI   = P0^2;
  10          sbit DO   = P0^3;
  11          sbit INT  = P0^4;
  12          sbit SAC  = P0^5;
  13           
  14          extern void send (unsigned long command);
  15          extern void delay(unsigned char k);
  16          */
  17          unsigned char data starts;
  18          unsigned char nkey;
  19          unsigned int data add0;
  20          unsigned int data add1;
  21          
  22          
  23          void send (unsigned char command,unsigned int address){
  24   1              unsigned char i;
  25   1                      CS              = 0;
  26   1                      SCLK    = 0;
  27   1                      CY              = 0;
  28   1              
  29   1                      for (i = 1;i < 6;i++){
  30   2                              command = command<<1;
  31   2                              DI = CY;
  32   2                              SCLK = 1;
  33   2                              _nop_();
  34   2                              SCLK = 0;
  35   2                              _nop_();
  36   2                              putbuf(CY);
  37   2                      }                       
  38   1                      if (address != 0X00){
  39   2                              CY = 0;
  40   2                              for (i = 1;i < 16;i++){
  41   3                              address = address<<1;
  42   3                              DI = CY;
  43   3                              SCLK = 1;
  44   3                              _nop_();
  45   3                              SCLK = 0;
  46   3                              _nop_();
  47   3                              putbuf(CY);
  48   3      
  49   3                              }
  50   2                      }
  51   1                      CS      = 1;
  52   1              
  53   1      
  54   1      }
  55          void delay (unsigned char k){
C51 COMPILER V7.10   MAIN                                                                  07/02/2005 14:18:15 PAGE 2   

  56   1              unsigned char temp;
  57   1              while (k){
  58   2                      for (temp = 0;temp <0xff;temp++){
  59   3                      }                       
  60   2                      k--;
  61   2              }
  62   1      }
  63          void InitSerial (void) {
  64   1      
  65   1              PCON |=0x80;
  66   1              SCON = 0x50;
  67   1              TMOD |= 0x20;
  68   1              //TL1 |= 0xFA;                                  // 19200          C35
  69   1              //TH1 |= 0xFA;
  70   1              TL1 |= 0xF4;                                    // 9600   爱立信
  71   1              TH1 |= 0xF4;
  72   1      
  73   1              TR1 = 1;
  74   1              REN = 1;
  75   1              ES = 1;
  76   1      
  77   1      }
  78          void putbuf (char c) {
  79   1              TI = 0; 
  80   1              SBUF = c;
  81   1              while(!TI);
  82   1              TI = 0;
  83   1      }
  84          void putstring(unsigned char  *puts){
  85   1              for(;*puts!=0;puts++)   //遇到停止符0结束
  86   1              putbuf(*puts);
  87   1      }
  88          void main (void){
  89   1      bit record_key=0;
  90   1      bit nkey = 0;
  91   1              InitSerial ();
  92   1              P0 = 0xff;
  93   1              P1 = 0xff;
  94   1              P2 = 0xff;
  95   1              P3 = 0xff;
  96   1              send (pwpup,0x0002);                                     //选择取样频率,A1,A0 = 01 4.0KHz
  97   1      while (1){
  98   2              add0= 0x0002;
  99   2      
 100   2              starts = getkey(1000);
 101   2              if (starts != 0x00){
 102   3      
 103   3                      switch (starts){
 104   4                              case '1':                                                        //录制
 105   4                                      while (SAC);
 106   4                                              send (set_reg,add0);
 107   4                                              delay (0xff);
 108   4                                              send (nop,0x00);
 109   4                                              starts  = 0x00;
 110   4                                      putstring ("record");
 111   4                                              record_key = 1;
 112   4                                      break;
 113   4                              case '2':                                                        //播放
 114   4                                      while (SAC);
 115   4                                              send (setplay,add0);
 116   4                                              delay (0xff);
 117   4                                              send (nop,0x00);
C51 COMPILER V7.10   MAIN                                                                  07/02/2005 14:18:15 PAGE 3   

 118   4                                              starts  = 0x00;
 119   4                                      putstring ("play");
 120   4                                              record_key = 0;
 121   4                                      break;
 122   4                              case '3':                                                        //跳过
 123   4                                      while (SAC);
 124   4                                              add1 = add0++;
 125   4                                              send (setplay,add1);
 126   4                                              delay (0xff);
 127   4                                              send (nop,0x00);
 128   4                                      putstring ("skip");
 129   4                                              starts  = 0x00;
 130   4                                      break;
 131   4                              case '4':                                                        //停止
 132   4                                      while (SAC);
 133   4                                              send (stop,add0);
 134   4                                              delay (0xff);
 135   4                                              send (nop,0x00);
 136   4                                              starts  = 0x00;
 137   4                                      putstring ("stop");
 138   4                                              record_key = 0;
 139   4                                      break;
 140   4                              }
 141   3                      }
 142   2                              if (SAC == 0)led1 = 1;
 143   2                              else led1 = 0;
 144   2                              if ((SAC == 0)&&(record_key == 1)&&(nkey == 1)){
 145   3                                      led0 = 0;
 146   3                                      add1 = add0++;
 147   3                                      send (set_reg,add1);
 148   3                                      delay (0xff);
 149   3                                      send (nop,0x00);
 150   3                                      putstring ("record++");
 151   3                                      nkey = 0;
 152   3                                      }
 153   2                              if (SAC == 1){nkey = 1;led0 = 1;}
 154   2                              
 155   2              }
 156   1      }
C51 COMPILER V7.10   MAIN                                                                  07/02/2005 14:18:15 PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION L?0047 (BEGIN)
0000         L?0048:
0000 7FFF              MOV     R7,#0FFH
0002 120000      R     LCALL   _delay
0005 E4                CLR     A
0006 FD                MOV     R5,A
0007 FC                MOV     R4,A
0008 FF                MOV     R7,A
             ; FUNCTION _send (BEGIN)
                                           ; SOURCE LINE # 23
0009 8F00        R     MOV     command,R7
000B 8C00        R     MOV     address,R4
000D 8D00        R     MOV     address+01H,R5
                                           ; SOURCE LINE # 25
000F C285              CLR     CS
                                           ; SOURCE LINE # 26
0011 C287              CLR     SCLK
                                           ; SOURCE LINE # 27
0013 C2D7              CLR     CY
                                           ; SOURCE LINE # 29
0015 750001      R     MOV     i,#01H
0018         ?C0001:
                                           ; SOURCE LINE # 30
0018 E500        R     MOV     A,command
001A 25E0              ADD     A,ACC
001C F500        R     MOV     command,A
                                           ; SOURCE LINE # 31
001E 9286              MOV     DI,C
                                           ; SOURCE LINE # 32
0020 D287              SETB    SCLK
                                           ; SOURCE LINE # 33
0022 00                NOP     
                                           ; SOURCE LINE # 34
0023 C287              CLR     SCLK
                                           ; SOURCE LINE # 35
0025 00                NOP     
                                           ; SOURCE LINE # 36
0026 E4                CLR     A
0027 33                RLC     A
0028 FF                MOV     R7,A
0029 120000      R     LCALL   _putbuf
                                           ; SOURCE LINE # 37
002C 0500        R     INC     i
002E E500        R     MOV     A,i
0030 C3                CLR     C
0031 9406              SUBB    A,#06H
0033 40E3              JC      ?C0001
0035         ?C0002:
                                           ; SOURCE LINE # 38
0035 E500        R     MOV     A,address+01H
0037 4500        R     ORL     A,address
0039 6027              JZ      ?C0004
                                           ; SOURCE LINE # 39
003B C2D7              CLR     CY
                                           ; SOURCE LINE # 40
003D 750001      R     MOV     i,#01H
0040         ?C0005:
                                           ; SOURCE LINE # 41
0040 E500        R     MOV     A,address+01H
C51 COMPILER V7.10   MAIN                                                                  07/02/2005 14:18:15 PAGE 5   

0042 25E0              ADD     A,ACC
0044 F500        R     MOV     address+01H,A
0046 E500        R     MOV     A,address
0048 33                RLC     A
0049 F500        R     MOV     address,A
                                           ; SOURCE LINE # 42
004B 9286              MOV     DI,C
                                           ; SOURCE LINE # 43
004D D287              SETB    SCLK
                                           ; SOURCE LINE # 44
004F 00                NOP     
                                           ; SOURCE LINE # 45
0050 C287              CLR     SCLK
                                           ; SOURCE LINE # 46
0052 00                NOP     
                                           ; SOURCE LINE # 47
0053 E4                CLR     A
0054 33                RLC     A
0055 FF                MOV     R7,A
0056 120000      R     LCALL   _putbuf
                                           ; SOURCE LINE # 49
0059 0500        R     INC     i
005B E500        R     MOV     A,i
005D C3                CLR     C
005E 9410              SUBB    A,#010H
0060 40DE              JC      ?C0005
                                           ; SOURCE LINE # 50
0062         ?C0004:
                                           ; SOURCE LINE # 51
0062 D285              SETB    CS
                                           ; SOURCE LINE # 54
0064 22                RET     
             ; FUNCTION _send (END)

             ; FUNCTION _delay (BEGIN)
                                           ; SOURCE LINE # 55
;---- Variable 'k' assigned to Register 'R7' ----
0000         ?C0009:
                                           ; SOURCE LINE # 57
0000 EF                MOV     A,R7
0001 6009              JZ      ?C0014
                                           ; SOURCE LINE # 58
;---- Variable 'temp' assigned to Register 'R6' ----
0003 E4                CLR     A
0004 FE                MOV     R6,A
0005         ?C0011:
                                           ; SOURCE LINE # 59
0005 0E                INC     R6
0006 BEFFFC            CJNE    R6,#0FFH,?C0011
0009         ?C0012:
                                           ; SOURCE LINE # 60
0009 1F                DEC     R7
                                           ; SOURCE LINE # 61
000A 80F4              SJMP    ?C0009
                                           ; SOURCE LINE # 62
000C         ?C0014:

⌨️ 快捷键说明

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