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

📄 sp2539 demo.lst

📁 C51串口扩展5个源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.20   SP2539_DEMO                                                           03/09/2006 09:30:40 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE SP2539_DEMO
OBJECT MODULE PLACED IN SP2539 demo.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil 7.20\C51\BIN\C51.EXE SP2539 demo.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!申    明!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//
   2          //本驱动程序属于成都视普科技公司所有,仅允许免费用于本公司销售的产品中,未  //
   3          //经书面许可任何单位或个人不可将本程序用于其它用途,否则将追究其法律责任   //
   4          //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   5          /***************************************************************************
   6           SP2539 demo.c source file SP2539 serial communication
   7           example for MCS-51 MCU  (oscillating crystal: 11.0592MHz)
   8           Author: Wen hua, 2006-03-18 
   9          ***************************************************************************/
  10          /********************************上位机资源占用*****************************
  11          ****** RAM:22(BYTE,不包含子串口发送缓冲)+7(BIT),ROM:430BYTE(内核部分)  *****
  12          ****** 接收一个字节耗用15条指令(MAX),发送一个字节耗用45条指令(MAX) *****
  13          ***************************************************************************/
  14          
  15          #include <reg52.h>
  16          #define uchar unsigned char
  17          #define uint unsigned int
  18          
  19          bit bdata bUartBusy;            //上位机串口发送状态标志,"1"表示上位机串口"忙"(正发送数据
  20                                                                  //到子串口,新数据只需送入子串口发送缓冲区即可,"0"表示上位
  21                                                                  //机串口"空闲",需用户程序将"TI=1"来启动子串口数据发送
  22          
  23          bit bdata bInstructFlag;        //上位机发送指令请求标志,上位机需要发送指令时必须
  24                                                                  //先将待发发送指令放到"InstructBuf",之后将该
  25                                                                  //标志设置为"1"即可.标志变为"0"后可继续发送指令
  26          
  27          bit bdata bUart0RFlag,bUart1RFlag,bUart2RFlag,bUart3RFlag,bUart4RFlag;  //上位机接收到子串口数据
  28                                                                  //标志,"1"表示上位机接收到相应子串口数据,主程序可通过查询
  29                                                                  //该标志的方式判断相应子串口是否接收到新数据(主程序取走刚
  30                                                                  //收到的新数据后,必须将该标志清"0",以便识别下一个新数据)
  31          
  32          uchar idata Uart0Tbuf[8];       //子串口0数据发送缓冲区(大小可由用户随意配置)
  33          uchar idata Uart1TBuf[8];       //子串口1数据发送缓冲区(大小可由用户随意配置)
  34          uchar idata Uart2TBuf[8];       //子串口2数据发送缓冲区(大小可由用户随意配置)
  35          uchar idata Uart3TBuf[8];       //子串口3数据发送缓冲区(大小可由用户随意配置)
  36          uchar idata Uart4TBuf[8];       //子串口4数据发送缓冲区(大小可由用户随意配置)
  37          
  38          uchar idata Uart0RBuf,Uart1RBuf,Uart2RBuf,Uart3RBuf,Uart4RBuf;  //上位机接收子串口数据缓
  39                                                                  //冲存储器,上位机通过判断"bUart0RFlag"等标志
  40                                                                  //是否为"1",来决定是否读取该寄存器的数据
  41          
  42          uchar idata UartPointer;        //子串口发送数据指针,中断服务程序通过该指针轮询
  43                                                                  //发送数据到各子串口,保证各子串口的数据不丢失
  44          
  45          uchar idata InstructBuf;        //指令缓冲(用户可将设置SP2539的指令放入
  46                                                                  //该寄存器,由驱动程序自动完成指令发送)
  47          
  48          uchar idata Uart0TNum,Uart1TNum,Uart2TNum,Uart3TNum,Uart4TNum;  //等待发送到各
  49                                                                  //子串口的字节数,"0"表示相应子串口发送缓冲区"空"
  50                                                                  //主程序可以通过判断该标志是否为"0"来决定是否向
  51                                                                  //相应子串口发送后续数据
  52          
  53          //如果对应子串口波特率为默认值,则不用定义对应子串口的分频系数变量
  54          uchar idata Uart0Coef,Uart1Coef,Uart2Coef,Uart3Coef,Uart4Coef;  //子串口分频系数/波特率控制寄存
  55                                                                  //器,具体用法请参见设置子串口的波特率指令部分
C51 COMPILER V7.20   SP2539_DEMO                                                           03/09/2006 09:30:40 PAGE 2   

  56          
  57          //如果对应子串口波特率为默认值,则不用定义对应子串口的分频系数变量
  58          uchar idata Uart0CoefBuf,Uart1CoefBuf,Uart2CoefBuf,Uart3CoefBuf,Uart4CoefBuf;//分频系数缓冲寄存器
  59          
  60          /*****************************************************************************
  61          功能:设定SP2539输入、输出地址,可根据实际电路修改
  62          *****************************************************************************/
  63          sbit    AdrIn0 =P1^0;   /* 连接到SP2539的PIN7(ADRO0)*/
  64          sbit    AdrIn1 =P1^1;   /* 连接到SP2539的PIN8(ADRO1)*/
  65          sbit    AdrIn2 =P1^2;   /* 连接到SP2539的PIN9(ADRO2)*/
  66          sbit    AdrOut0=P1^3;   /* 连接到SP2539的PIN10(ADRI0)*/
  67          sbit    AdrOut1=P1^4;   /* 连接到SP2539的PIN11(ADRI1)*/
  68          sbit    AdrOut2=P1^5;   /* 连接到SP2539的PIN12(ADRI2)*/
  69          
  70          #define _DEBUG_SUB_MODULE
  71          /****************************************************************************
  72          功能:上位机串口中断服务函数,自动完成子串口数据发送(自动发送数据包)和数据接收
  73                   (单字节接收并缓存)以及自动发送上位机配置指令等
  74          输入:Uart0Coef,Uart1Coef,Uart2Coef,Uart3Coef,Uart4Coef,Uart0TNum,Uart1TNum,
  75                   Uart2TNum,Uart3TNum,Uart4TNum,Uart0Tbuf[???],Uart1TBuf[???],Uart2TBuf[???],
  76                   Uart3TBuf[???],Uart4TBuf[???],bInstructFlag,InstructBuf,bUartBusy
  77          输出:bUart0RFlag,bUart1RFlag,bUart2RFlag,bUart3RFlag,bUart4RFlag,Uart0RBuf,
  78                   Uart1RBuf,Uart2RBuf,Uart3RBuf,Uart4RBuf,bUartBusy
  79          *****************************************************************************/
  80          serial () interrupt 4 {
  81   1              if(RI){
  82   2                      RI=0;                                   //准备解析刚接收到的数据来自于哪个子串口
  83   2                      if(AdrIn2){                             //子串口4接收到一个字节(输入地址:100)
  84   3                              Uart4RBuf=SBUF;         //缓存子串口4收到的数据,以便接收后续数据
  85   3                              bUart4RFlag=1;          //置子串口4收到数据标志,便于主程序查询          
  86   3                      }
  87   2                      else if(AdrIn1){                        
  88   3                              if(AdrIn0){                     //子串口3接收到一个字节(输入地址:011)
  89   4                                      Uart3RBuf=SBUF; //缓存子串口3收到的数据,以便接收后续数据
  90   4                                      bUart3RFlag=1;  //置子串口3收到数据标志,便于主程序查询
  91   4                              }
  92   3                              else {                          //子串口2接收到一个字节(输入地址:010)
  93   4                                      Uart2RBuf=SBUF; //缓存子串口2收到的数据,以便接收后续数据
  94   4                                      bUart2RFlag=1;  //置子串口2收到数据标志,便于主程序查询
  95   4                              }
  96   3                      }
  97   2                      else if(AdrIn0){                //子串口1接收到一个字节(输入地址:001)
  98   3                              Uart1RBuf=SBUF;         //缓存子串口1收到的数据,以便接收后续数据

⌨️ 快捷键说明

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