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

📄 uart.lst

📁 SD卡-SDHC卡扇区读写测试
💻 LST
字号:
C51 COMPILER V8.05a   UART                                                                 11/03/2010 20:36:59 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE uart.c 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          
   8                  +-----------------------------------------+
   9                  |振南电子    原创程序模块   STC51串口操作 |
  10                  +-----------------------------------------+
  11          
  12            此源码版权属 振南 全权享有,如欲引用,敬请署名并告知
  13                  严禁随意用于商业目的,违者必究,后果自负
  14                   振南电子 
  15                       ->产品网站 http://www.znmcu.cn/
  16                       ->产品论坛 http://bbs.znmcu.cn/
  17                       ->产品网店 http://shop.znmcu.cn/
  18                       ->产品咨询 QQ:987582714 MSN:yzn07@126.com
  19                                  WW:yzn07                          
  20          ********************************************************/
  21          
  22          /**************************************************************************
  23           - 功能描述:51单片机的串口初始化
  24           - 隶属模块:STC51串口操作
  25           - 函数属性:外部,使用户使用
  26           - 参数说明:无
  27           - 返回说明:无
  28           - 注:振南的很多产品均采用串口来进行操作,所以正确的初始化串口十分重要
  29           **************************************************************************/
  30          
  31          void UART_Init()     
  32          {
  33   1       PCON|=0x80; //PCON的最高位SMOD=1时波特率加倍 
  34   1       TMOD=0x20;  //时器1为方式2 初值自动装入 产生波特率
  35   1       TH1=0xfd;   //定时器初始为0XFd,晶振为22.1184MHz,本函数实际产生的波特率为38400bps
  36   1       TL1=0xfd;       //同上   
  37   1       SCON=0x50;      //串口设置为方式1,REN=1,允许接收
  38   1       TR1=1;      //启动定时器1
  39   1       ES=1;       //使能串口接收中断,
  40   1       EA=1;       //打开所有中断
  41   1      }
  42          
  43          /**************************************************************************
  44           - 功能描述:51单片机的串口中断处理函数
  45           - 隶属模块:STC51串口操作
  46           - 函数属性:外部,使用户使用(在此中断函数中常用来处理从串口收到的数据)
  47           - 参数说明:无
  48           - 返回说明:无
  49           - 注:振南的很多产品,都是配合“超级终端”来进行演示的,在“超级终端”中
  50                 敲入的命令就是从计算机的串口发出,由单片机从串口接收,接收到的串口
  51                     数据就在此中断函数中进行处理,完成命令接收及处理、命令解析等工作。
  52           **************************************************************************/
  53          
  54          void sio_int() interrupt 4 using 3   //串口中断函数
  55          {
C51 COMPILER V8.05a   UART                                                                 11/03/2010 20:36:59 PAGE 2   

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

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

 180           {
 181            UART_Send_Byte(a[i]);
 182            UART_Send_Byte(' ');
 183           }
 184          }
 185          */


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    187    ----
   CONSTANT SIZE    =      2    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      29
   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 + -