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

📄 dp_51pro_irda.lst

📁 经过keil编译
💻 LST
字号:
C51 COMPILER V7.07   DP_51PRO_IRDA                                                         03/04/2004 17:31:22 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE DP_51PRO_IRDA
OBJECT MODULE PLACED IN DP_51PRO_IRDA.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE DP_51PRO_IRDA.C BROWSE DEBUG OBJECTEXTEND CODE

stmt level    source

   1          /***************************************************************
   2          * 文件名:DP_51PRO_IRDA.C
   3          * 功能:DP_51PRO实验仪红外收发实验。使用串口发送数据经调制后从红外管输出,
   4          *      并通过红外接收模块把接收到的数据返回串口接收端,通过判断接收到的数
   5          *      据来控制LED灯点亮。
   6          ***************************************************************/
   7          #include  <Reg52.H>
   8          
   9          #define  uint8      unsigned char
  10          #define  uint16     unsigned int
  11          
  12          sbit     LED_CON    = P1^0;                     // 定义LED控制口
  13          
  14          /***************************************************************
  15          * 名称:UART_SendByte()
  16          * 功能:向串口发送一字节数据。
  17          * 入口参数:dat         要发送的数据
  18          * 出口参数:无
  19          ***************************************************************/
  20          void  UART_SendByte(uint8 dat)
  21          {  SBUF = dat;                                  // 发送数据
  22   1         while(0==TI);                                // 等待发送完毕
  23   1         TI = 0;                                      // 清零TI标志
  24   1      }
  25          
  26          
  27          /***************************************************************
  28          * 名称:UART_RcvByte()
  29          * 功能:接收一字节串口数据。
  30          * 入口参数:dat         接收变量的地址指针
  31          * 出口参数:返回0表示没有数据,返回1表示接收到数据
  32          ***************************************************************/
  33          uint8  UART_RcvByte(uint8 *dat)
  34          {  if(0==RI) return(0);                         // 若没有接收到数据则返回0
  35   1      
  36   1         *dat = SBUF;                                 // 取得接收的数据
  37   1         RI = 0;                                      // 清除RI标志
  38   1         return(1);
  39   1      }
  40          
  41          
  42          /***************************************************************
  43          * 名称:UART_Init()
  44          * 功能:串口初始化。模式为1位起始位,8位数据位,1位停止位,波特率为9600。
  45          * 入口参数:无
  46          * 出口参数:无
  47          * 说明:晶振为11.0592MHz,使用T1作为波特率发生器。
  48          ***************************************************************/
  49          void  UART_Init(void)
  50          {  SCON = 0x50;
  51   1         TMOD = 0x20;
  52   1         TH1 = 0xFa;
  53   1         TR1 = 1;
  54   1      }
  55          
C51 COMPILER V7.07   DP_51PRO_IRDA                                                         03/04/2004 17:31:22 PAGE 2   

  56          
  57          /***************************************************************
  58          * 名称:main()
  59          * 功能:主函数,初始化串口后不断的发送及接收数据,若接收到所发送的数据则
  60          *      点亮LED。
  61          ***************************************************************/
  62          int  main(void)
  63          {  uint8  i;
  64   1         uint16 j;
  65   1         uint8  rcv_dat;
  66   1         uint8  count;
  67   1      
  68   1         UART_Init();
  69   1         while(1)
  70   1         {  count = 0;                                // 计数变量清零
  71   2            for(i=0; i<50; i++)                       // 发送及接收50个数据
  72   2            {  UART_SendByte(0x5A);
  73   3               if( UART_RcvByte(&rcv_dat)!=0 )
  74   3               {  if(0x5A==rcv_dat) count++;          // 若接收的数据为0x5A,则计数变量加1
  75   4               }
  76   3            }
  77   2            if(count>30) LED_CON = 0;                 // 若接收到0x5A的个数大于40个时,点亮LED
  78   2              else  LED_CON = 1;                      // 否则熄灭LED
  79   2      
  80   2            for(j=0; j<500; j++);
  81   2         }
  82   1      
  83   1         return(0);
  84   1      }
C51 COMPILER V7.07   DP_51PRO_IRDA                                                         03/04/2004 17:31:22 PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _UART_SendByte (BEGIN)
                                           ; SOURCE LINE # 20
;---- Variable 'dat' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 21
0000 8F99              MOV     SBUF,R7
0002         ?C0001:
                                           ; SOURCE LINE # 22
0002 3099FD            JNB     TI,?C0001
0005         ?C0002:
                                           ; SOURCE LINE # 23
0005 C299              CLR     TI
                                           ; SOURCE LINE # 24
0007 22                RET     
             ; FUNCTION _UART_SendByte (END)

             ; FUNCTION _UART_RcvByte (BEGIN)
                                           ; SOURCE LINE # 33
;---- Variable 'dat' assigned to Register 'R1/R2/R3' ----
                                           ; SOURCE LINE # 34
0000 209803            JB      RI,?C0004
0003 7F00              MOV     R7,#00H
0005 22                RET     
0006         ?C0004:
                                           ; SOURCE LINE # 36
0006 E599              MOV     A,SBUF
0008 120000      E     LCALL   ?C?CSTPTR
                                           ; SOURCE LINE # 37
000B C298              CLR     RI
                                           ; SOURCE LINE # 38
000D 7F01              MOV     R7,#01H
                                           ; SOURCE LINE # 39
000F         ?C0005:
000F 22                RET     
             ; FUNCTION _UART_RcvByte (END)

             ; FUNCTION UART_Init (BEGIN)
                                           ; SOURCE LINE # 49
                                           ; SOURCE LINE # 50
0000 759850            MOV     SCON,#050H
                                           ; SOURCE LINE # 51
0003 758920            MOV     TMOD,#020H
                                           ; SOURCE LINE # 52
0006 758DFA            MOV     TH1,#0FAH
                                           ; SOURCE LINE # 53
0009 D28E              SETB    TR1
                                           ; SOURCE LINE # 54
000B 22                RET     
             ; FUNCTION UART_Init (END)

             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 62
;---- Variable 'j' assigned to Register 'R4/R5' ----
                                           ; SOURCE LINE # 63
                                           ; SOURCE LINE # 68
0000 120000      R     LCALL   UART_Init
0003         ?C0007:
                                           ; SOURCE LINE # 69
                                           ; SOURCE LINE # 70
0003 E4                CLR     A
C51 COMPILER V7.07   DP_51PRO_IRDA                                                         03/04/2004 17:31:22 PAGE 4   

0004 F500        R     MOV     count,A
                                           ; SOURCE LINE # 71
;---- Variable 'i' assigned to Register 'R6' ----
0006 FE                MOV     R6,A
0007         ?C0009:
                                           ; SOURCE LINE # 72
0007 7F5A              MOV     R7,#05AH
0009 120000      R     LCALL   _UART_SendByte
                                           ; SOURCE LINE # 73
000C 7B00              MOV     R3,#00H
000E 7A00        R     MOV     R2,#HIGH rcv_dat
0010 7900        R     MOV     R1,#LOW rcv_dat
0012 120000      R     LCALL   _UART_RcvByte
0015 EF                MOV     A,R7
0016 6007              JZ      ?C0011
                                           ; SOURCE LINE # 74
0018 E500        R     MOV     A,rcv_dat
001A B45A02            CJNE    A,#05AH,?C0011
001D 0500        R     INC     count
                                           ; SOURCE LINE # 75
                                           ; SOURCE LINE # 76
001F         ?C0011:
001F 0E                INC     R6
0020 BE32E4            CJNE    R6,#032H,?C0009
0023         ?C0010:
                                           ; SOURCE LINE # 77
0023 E500        R     MOV     A,count
0025 D3                SETB    C
0026 941E              SUBB    A,#01EH
0028 4004              JC      ?C0014
002A C290              CLR     LED_CON
002C 8002              SJMP    ?C0015
002E         ?C0014:
                                           ; SOURCE LINE # 78
002E D290              SETB    LED_CON
0030         ?C0015:
                                           ; SOURCE LINE # 80
0030 E4                CLR     A
0031 FC                MOV     R4,A
0032 FD                MOV     R5,A
0033         ?C0016:
0033 C3                CLR     C
0034 ED                MOV     A,R5
0035 94F4              SUBB    A,#0F4H
0037 EC                MOV     A,R4
0038 9401              SUBB    A,#01H
003A 50C7              JNC     ?C0007
003C 0D                INC     R5
003D BD0001            CJNE    R5,#00H,?C0020
0040 0C                INC     R4
0041         ?C0020:
0041 80F0              SJMP    ?C0016
             ; FUNCTION main (END)



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    103    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       2
C51 COMPILER V7.07   DP_51PRO_IRDA                                                         03/04/2004 17:31:22 PAGE 5   

   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 + -