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

📄 uart.lst

📁 SD卡调试所用的资料
💻 LST
字号:
C51 COMPILER V7.50   UART                                                                  05/18/2010 22:18:56 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE uart.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <string.h>
   3          #include "uart.h"
   4          #include "myfun.h"
   5          
   6          /**************************************************************************
   7           - 功能描述:51单片机的串口初始化
   8           - 隶属模块:STC51串口操作
   9           - 函数属性:外部,使用户使用
  10           - 参数说明:无
  11           - 返回说明:无
  12           - 注:振南的很多产品均采用串口来进行操作,所以正确的初始化串口十分重要
  13           **************************************************************************/
  14          
  15          void UART_Init()     
  16          {
  17   1       PCON =0x00; //PCON的最高位SMOD=1时波特率加倍 
  18   1       TMOD=0x20;  //时器1为方式2 初值自动装入 产生波特率
  19   1       TH1=0xfd;   //定时器初始为0XFd,晶振为12MHz,本函数实际产生的波特率为9600bps
  20   1       TL1=0xfd;       //同上   
  21   1       SCON=0x50;      //串口设置为方式1,REN=1,允许接收
  22   1       TR1=1;      //启动定时器1
  23   1       ES=1;       //使能串口接收中断,
  24   1       EA=1;       //打开所有中断
  25   1      }
  26          
  27          /**************************************************************************
  28           - 功能描述:51单片机的串口中断处理函数
  29           - 隶属模块:STC51串口操作
  30           - 函数属性:外部,使用户使用(在此中断函数中常用来处理从串口收到的数据)
  31           - 参数说明:无
  32           - 返回说明:无
  33           - 注:振南的很多产品,都是配合“超级终端”来进行演示的,在“超级终端”中
  34                 敲入的命令就是从计算机的串口发出,由单片机从串口接收,接收到的串口
  35                     数据就在此中断函数中进行处理,完成命令接收及处理、命令解析等工作。
  36           **************************************************************************/
  37          
  38          void sio_int() interrupt 4 using 3   //串口中断函数
  39          {
  40   1       ES=0;
  41   1        //串口中断处理
  42   1        /*
  43   1       if(RI)
  44   1       {
  45   1        if(SBUF!=0x08)  //如果接收到的是退格(ASCII码为0x08)
  46   1         cmd_buf[counter++]=SBUF;
  47   1        else
  48   1         counter--;
  49   1        RI=0;
  50   1       }
  51   1       if(SBUF==0x0d)
  52   1       {
  53   1        cmd_buf[counter-1]=0;
  54   1        counter=0;
  55   1        flag=1;
C51 COMPILER V7.50   UART                                                                  05/18/2010 22:18:56 PAGE 2   

  56   1       }
  57   1       */
  58   1       ES=1;
  59   1      }
  60          
  61          /**************************************************************************
  62           - 功能描述:51单片机的串口发送字节的函数
  63           - 隶属模块:STC51串口操作
  64           - 函数属性:外部,使用户使用
  65           - 参数说明:mydata:要发送的一个字节
  66           - 返回说明:无
  67           - 注:发送一个字节,是串口发送的基础操作
  68           **************************************************************************/
  69          
  70          void UART_Send_Byte(unsigned char mydata)       
  71          {
  72   1       ES=0;
  73   1       TI=0;
  74   1       SBUF=mydata;
  75   1       while(!TI);
  76   1       TI=0;
  77   1       ES=1;
  78   1      }
  79          
  80          /**************************************************************************
  81           - 功能描述:51单片机的串口发送0d 0a ,即回车换行
  82           - 隶属模块:STC51串口操作
  83           - 函数属性:外部,使用户使用
  84           - 参数说明:无
  85           - 返回说明:无
  86           - 注:此函数就是发送0d 0a这两个字节,在“超级终端”上会有回车换行的效果
  87           **************************************************************************/
  88          
  89          void UART_Send_Enter()
  90          {
  91   1       UART_Send_Byte(0x0d);
  92   1       UART_Send_Byte(0x0a);
  93   1      }
  94          
  95          /**************************************************************************
  96           - 功能描述:51单片机的串口发送字符串
  97           - 隶属模块:STC51串口操作
  98           - 函数属性:外部,使用户使用
  99           - 参数说明:s:指向字符串的指针
 100           - 返回说明:无
 101           - 注:如果在字符串中有'\n',则会发送一个回车换行
 102           **************************************************************************/
 103          
 104          void UART_Send_Str(char *s)
 105          {
 106   1       int len=strlen(s)-1;
 107   1       int i;
 108   1       for(i=0;i<len;i++)
 109   1       UART_Send_Byte(s[i]);
 110   1       if(s[i]=='\n') 
 111   1       {
 112   2        UART_Send_Enter();
 113   2       }
 114   1       else
 115   1       {
 116   2        UART_Send_Byte(s[i]);
 117   2       }
C51 COMPILER V7.50   UART                                                                  05/18/2010 22:18:56 PAGE 3   

 118   1      }
 119          
 120          /**************************************************************************
 121           - 功能描述:51单片机的串口发送数值
 122           - 隶属模块:STC51串口操作
 123           - 函数属性:外部,使用户使用
 124           - 参数说明:dat:要发送的数值
 125           - 返回说明:无
 126           - 注:函数中会将数值转为相应的字符串,发送出去。比如 4567 转为 "4567" 
 127           **************************************************************************/
 128          
 129          void UART_Put_Num(unsigned long dat)
 130          {
 131   1       char temp[20];
 132   1       u32tostr(dat,temp);
 133   1       UART_Send_Str(temp);
 134   1      }
 135          
 136          /**************************************************************************
 137           - 功能描述:51单片机的串口发送调试信息
 138           - 隶属模块:STC51串口操作
 139           - 函数属性:外部,使用户使用
 140           - 参数说明:inf:指向提示信息字符串的指针
 141                       dat:一个数值,前面的提示信息就是在说明这个数值的意义
 142           - 返回说明:无
 143           - 注:此函数在振南的工程中会经常看到,是方便调试用的
 144           **************************************************************************/
 145          
 146          void UART_Put_Inf(char *inf,unsigned long dat)
 147          {
 148   1       UART_Send_Str(inf);
 149   1       UART_Put_Num(dat);
 150   1       UART_Send_Str("\n");  
 151   1      }
 152          
 153          /*
 154          void binary(unsigned char dat)
 155          {
 156           unsigned char i;
 157           unsigned char a[17];
 158           for(i=0;i<8;i++)
 159           {
 160            a[i]=((dat<<i)&0x80)?'o':' ';
 161           }
 162           a[i]=0;
 163           for(i=0;i<strlen(a);i++)
 164           {
 165            UART_Send_Byte(a[i]);
 166            UART_Send_Byte(' ');
 167           }
 168          }
 169          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    214    ----
   CONSTANT SIZE    =      2    ----
   XDATA SIZE       =   ----      29
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
C51 COMPILER V7.50   UART                                                                  05/18/2010 22:18:56 PAGE 4   

END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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