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

📄 uart_int.lst

📁 display port接受芯片ANX9813的驱动代码。MCU使用LPC936FDH,内部包含AN9813寄存器设置
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   UART_INT                                                              10/03/2008 17:53:20 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE UART_INT
OBJECT MODULE PLACED IN ..\hex\uart_int.obj
COMPILER INVOKED BY: D:\Program Files\KEIL_UV3\C51\BIN\C51.EXE uart_int.c LARGE OPTIMIZE(SIZE) BROWSE DEBUG OBJECTEXTEND
                    - CODE OBJECT(..\hex\uart_int.obj)

line level    source

   1          //  *******************************************
   2          
   3          //  *******************************************
   4          
   5          #include <stdio.h>
   6          #include "uart_int.h"
   7          #include "i2c_intf.h"
   8          #include "mcu.h"
   9          
  10          char command_buf[16];
  11          char command_buf_len;
  12          bit term_cmd_valid;
  13          bit fetching_term_cmd;
  14          unsigned char uart_buf[7];
  15          char rx_count;
  16          char tx_left;
  17          bit cmd_valid;
  18          bit ret_valid;
  19          
  20          void init_serial(unsigned char mode)
  21          {
  22   1              /*TH1 = mode;
  23   1              //TL1 = 0xff;
  24   1              TMOD = TMOD & 0x0f | 0x20;
  25   1              TR1 = 1;
  26   1              SCON = 0x50;//0x70;
  27   1              TI = 1;
  28   1              RI = 0;
  29   1              ES = 1;*/
  30   1              
  31   1            //lllll, 19200 baud rate 
  32   1              SCON=0x50;                                // select BRG as UART Baud Rate Gen
  33   1             SSTAT=0x00;               // separate Rx / Tx interrupts
  34   1              BRGCON=0x00; 
  35   1             BRGR0=0x70;                                // setup BRG for 19200 baud @ 7.373(7372800)MHz internal RC oscillator
  36   1             BRGR1=0x01;
  37   1             BRGCON = 0x03;                 // enable BRG
  38   1              
  39   1              rx_count = 0;
  40   1              tx_left = 0;
  41   1              cmd_valid = 0;
  42   1              ret_valid = 0;
  43   1              term_cmd_valid = 0;
  44   1              fetching_term_cmd = 0;
  45   1      }
*** WARNING C280 IN LINE 20 OF UART_INT.C: 'mode': unreferenced local variable
  46          //函数来自UartI2c,变量取DPDEMO
  47          void UART_ISR(void)      
  48          {
  49   1              uchar temp;
  50   1              if(RI==1)
  51   1              {
  52   2                      RI = 0;//
  53   2                      temp=SBUF;
C51 COMPILER V7.50   UART_INT                                                              10/03/2008 17:53:20 PAGE 2   

  54   2                      LED=~LED;
  55   2                      //sendRQ = 1;
  56   2                      if(command_buf_len==0 && temp==0x2a)
  57   2                      {
  58   3                                 
  59   3                              command_buf[command_buf_len++]=temp;
  60   3      
  61   3                      }
  62   2                      else if(command_buf_len>0 && command_buf_len<5)
  63   2                      {
  64   3                              command_buf[command_buf_len++]=temp;    
  65   3                      }
  66   2                      else if(command_buf_len==5 && temp==0x0d)
  67   2                      {
  68   3                              command_buf[5]=0x0d;
  69   3                              command_buf_len=0;
  70   3                              sendRQ = 1;
  71   3                      }
  72   2                      else
  73   2                      {
  74   3                              command_buf_len=0;
  75   3                      }                             
  76   2              }
  77   1              
  78   1      }
  79          
  80          /*
  81          void prot_isr(void)
  82          {
  83                  unsigned char c;
  84                  
  85                  if (TI) {
  86                          TI = 0; 
  87                          if (ret_valid)
  88                                  if (tx_left)
  89                                          SBUF = uart_buf[--tx_left];
  90                                  else
  91                                          ret_valid = 0;
  92                                  
  93                  }
  94                  if (RI) 
  95                  {               
  96                                  enable_debug_output = 0;
  97                                  RI = 0;
  98                                  c = SBUF;
  99                                  if (fetching_term_cmd) 
 100                                  {
 101                                          if (c == '\n' || c == '\r')
 102                                          {
 103                                                  term_cmd_valid = 1;
 104                                                  fetching_term_cmd = 0;
 105                                          } 
 106                                          else if (c == 0x08) 
 107                                                  command_buf_len--;
 108                                          else if (command_buf_len < TERM_CMD_SIZE-1) 
 109                                          {
 110                                                  command_buf[command_buf_len++] = c;
 111                                          }
 112                                          else
 113                                                  c = '*';
 114          
 115                                           enable_debug_output = 1;
C51 COMPILER V7.50   UART_INT                                                              10/03/2008 17:53:20 PAGE 3   

 116          
 117                                          if (c == '\r')
 118                                          putchar('\n');
 119                                          else
 120                                                  putchar(c);
 121          
 122                                          enable_debug_output = 0;
 123                                  } 
 124                                  else 
 125                                  {       
 126                                          if ((rx_count != 0) || (c == CMD_READ) || (c == CMD_WRITE))
 127                                                  uart_buf[rx_count++] = c;
 128          
 129                                          if (rx_count == 7) 
 130                                          {
 131                                                  cmd_valid = 1;
 132                                                  rx_count = 0;
 133                                          }
 134                                          if (c == '\\') 
 135                                          {
 136                                           fetching_term_cmd = 1;
 137                                                  command_buf_len = 0;
 138                                           enable_debug_output = 1;
 139                                                  putchar(c);
 140                                           enable_debug_output = 0;
 141                                          }
 142                                  }
 143                  }
 144          }
 145          */
 146          void send_return(unsigned char status, unsigned char datah, 
 147                  unsigned char datal)
 148          {
 149   1              uart_buf[2] = status;
 150   1              uart_buf[1] = datah;
 151   1              uart_buf[0] = datal;
 152   1              tx_left = 3;
 153   1              SBUF = RET_ID;
 154   1              ret_valid = 1;
 155   1      }
 156          
 157          void process_cmd(void)
 158          {
 159   1              char c;
 160   1              unsigned char uc;
 161   1              B_puts("aaaaaaa");
 162   1              uc = 0;
 163   1              if (uart_buf[0] == CMD_WRITE) {
 164   2                      if (uart_buf[2] == PORT0_ADDR)
 165   2                              c = i2c_write_p0_reg(uart_buf[4], uart_buf[6]);
 166   2                      else
 167   2                              c = i2c_write_p1_reg(uart_buf[4], uart_buf[6]);
 168   2              } else if (uart_buf[0] == CMD_READ) {
 169   2                      if (uart_buf[2] == PORT0_ADDR)
 170   2                              c = i2c_read_p0_reg(uart_buf[4], &uc);
 171   2                      else
 172   2                              c = i2c_read_p1_reg(uart_buf[4], &uc);
 173   2              }
 174   1              switch (c) {
 175   2              case 1: 
 176   2                      c = ST_DEV_UNKNOWN;
 177   2                      break;
C51 COMPILER V7.50   UART_INT                                                              10/03/2008 17:53:20 PAGE 4   

 178   2              case 2:
 179   2                      c = ST_REG_UNKNOWN;
 180   2                      break;
 181   2              }
 182   1              send_return(c, 0x00, uc);
 183   1      }
C51 COMPILER V7.50   UART_INT                                                              10/03/2008 17:53:20 PAGE 5   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _init_serial (BEGIN)
                                           ; SOURCE LINE # 20
0000 900000      R     MOV     DPTR,#mode
0003 EF                MOV     A,R7
0004 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 21
                                           ; SOURCE LINE # 32
0005 759850            MOV     SCON,#050H
                                           ; SOURCE LINE # 33
0008 E4                CLR     A
0009 F5BA              MOV     SSTAT,A
                                           ; SOURCE LINE # 34
000B F5BD              MOV     BRGCON,A
                                           ; SOURCE LINE # 35
000D 75BE70            MOV     BRGR0,#070H
                                           ; SOURCE LINE # 36
0010 75BF01            MOV     BRGR1,#01H
                                           ; SOURCE LINE # 37
0013 75BD03            MOV     BRGCON,#03H
                                           ; SOURCE LINE # 39
0016 900000      R     MOV     DPTR,#rx_count
0019 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 40
001A A3                INC     DPTR
001B F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 41
001C C200        R     CLR     cmd_valid
                                           ; SOURCE LINE # 42
001E C200        R     CLR     ret_valid
                                           ; SOURCE LINE # 43
0020 C200        R     CLR     term_cmd_valid
                                           ; SOURCE LINE # 44
0022 C200        R     CLR     fetching_term_cmd
                                           ; SOURCE LINE # 45
0024 22                RET     
             ; FUNCTION _init_serial (END)

             ; FUNCTION UART_ISR (BEGIN)
                                           ; SOURCE LINE # 47
                                           ; SOURCE LINE # 48
                                           ; SOURCE LINE # 50
0000 30985F            JNB     RI,?C0009
                                           ; SOURCE LINE # 51
                                           ; SOURCE LINE # 52
0003 C298              CLR     RI
                                           ; SOURCE LINE # 53

⌨️ 快捷键说明

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