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

📄 16c554.lst

📁 16C554VX1128MAX4359-MAX4456P89LPC952 驱动开发
💻 LST
字号:
C51 COMPILER V8.02   16C554                                                                05/23/2008 11:50:50 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 16C554
OBJECT MODULE PLACED IN 16C554.OBJ
COMPILER INVOKED BY: D:\软件安装路径\C51\BIN\C51.EXE 16C554.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <REG952.H>
   2          #include <intrins.H>
   3          #include "16C554.h"
   4          #include "uart.h"
   5          
   6          #define uchar unsigned char
   7          #define uint unsigned int
   8          
   9          uchar d554,s[8]={0x08,0x18,0x28,0x38,0x00,0x10,0x20,0x30};
  10          
  11          #define RBUF_SIZE554 8
  12          #define SIZEMASK554  0x7
  13          
  14          static unsigned char r_in554 = 0;
  15          static unsigned char r_out554 = 0;
  16          static unsigned char rbuf554[RBUF_SIZE554];
  17          
  18          
  19          static void Serial_Int1(void) interrupt 2 using 0
  20          {
  21   1              uchar c,k;
  22   1              EA=0;
  23   1              for(k=0;k<8;k++)
  24   1              {
  25   2                      c = 0x0f&SC16C554_Read(s[k]|ISR);         //获取中断状态 
  26   2                      
  27   2                      if(c==0x04)
  28   2                      {       
  29   3                              d554=k;
  30   3                              while(!SC16C554_Read(s[d554]|LSR)&0x1);   //等待接收到的数据准备好
  31   3                              if (((r_in554 +1)&SIZEMASK554)!=r_out554)
  32   3                              {
  33   4                                      rbuf554[r_in554]=SC16C554_Read(s[d554]|RHR); //接收数据
  34   4                                      r_in554=(r_in554+1)&SIZEMASK554;
  35   4                              }
  36   3                      }
  37   2              }                                       
  38   1              EA=1;    
  39   1      }       
  40          
  41          char com_getchar554(uchar *ch) 
  42          {
  43   1              uchar b;
  44   1              EX1=0;
  45   1              if (com_rbuflen554()==0)
  46   1              {
  47   2                      EX1=1;
  48   2                      return 0;
  49   2              }
  50   1              b=rbuf554[r_out554];
  51   1              r_out554=(r_out554+1)&SIZEMASK554;
  52   1              
  53   1              *ch=b;  
  54   1              EX1=1;
  55   1              return (1);
C51 COMPILER V8.02   16C554                                                                05/23/2008 11:50:50 PAGE 2   

  56   1      }
  57          
  58          /*计算接收缓冲器长度*/
  59          unsigned char com_rbuflen554(void)
  60          {
  61   1              return ((r_in554 -r_out554)&SIZEMASK554);
  62   1      }
  63          
  64          //*************************************************************************
  65          //函数名: SC16C554_Write
  66          //功 能: 写SC16C554 寄存器
  67          //入参数: reg=要写的寄存器地址,val=要写的值
  68          //出参数: 无
  69          //*************************************************************************
  70          void SC16C554_Write(unsigned char Reg, unsigned char Val)
  71          {
  72   1              EA=0;
  73   1              P5=Reg;
  74   1              _nop_(); 
  75   1              P4=0xEF&P4;
  76   1              P0 = Val;
  77   1              _nop_();        //_nop_()1us
  78   1              P4=0x10|P4;
  79   1              EA=1;
  80   1      }
  81          
  82          //*************************************************************************
  83          //函数名: SC16C554_Read
  84          //功 能: 读SC16C554寄存器
  85          //入参数: reg=要读的寄存器地址
  86          //出参数: 寄存器值
  87          //*************************************************************************
  88          unsigned char SC16C554_Read(unsigned char Reg)
  89          {
  90   1              
  91   1              unsigned char RegData;
  92   1              EA=0;
  93   1              P5=Reg;
  94   1              _nop_(); 
  95   1              P4=0xDF&P4;
  96   1              RegData = P0;
  97   1              P4=0x20|P4;
  98   1              return RegData;
  99   1              EA=1;
 100   1      }
 101          
 102          void SC16C554_SET(uchar PortID,uint baudrate)
 103          {
 104   1              uchar dll,dlm;
 105   1              dll=(uchar)(1562500/baudrate);
 106   1              dlm=(uchar)(1562500/baudrate/256);
 107   1              SC16C554_Write(PortID|LCR,0x80);  //设置波特率
 108   1              SC16C554_Write(PortID|DLL,dll); //设置DLL 低位
 109   1              SC16C554_Write(PortID|DLM,dlm); //设置DLL 高位
 110   1              SC16C554_Write(PortID|LCR,0x03);  //8位数据,1 位停止位,无奇偶校验位
 111   1              SC16C554_Write(PortID|MCR,0x0);   //清除外部输出
 112   1              SC16C554_Write(PortID|FCR,0x0f);  //FIFO                                                         
 113   1              SC16C554_Write(PortID|IER,0x00);  //设置16C554禁止所有中断
 114   1              SC16C554_Write(PortID|IER,0x01);        //允许554receiver ready interrupt
 115   1              SC16C554_Write(PortID|MCR,0x08);        //打开554串口总开关     
 116   1      }

C51 COMPILER V8.02   16C554                                                                05/23/2008 11:50:50 PAGE 3   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    354    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19       8
   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 + -