C51 COMPILER V7.07   SERIAL                                                                06/01/2004 12:59:40 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: c:\Keil7\C51\BIN\C51.EXE serial.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*
   2          extern char getbyte(void);//从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。
   3          extern putbyte(char c);//放入一个字节到发送缓冲区
   4          extern putstring(uchar  *puts);//发送一个字符串到串口
   5          extern puthex(uchar c);//发送一个字节的hex码，分成两个字节发。
   6          extern  bit   inbufsign;
   7          #define CR putstring("\r\n")//发送一个回车换行
   8          extern void serial_init (void);
   9          extern putint(uint n);
  10          */
  11          
  12          //*************************************************************************
  13          #include <reg52.h>
  14          #define  uchar  unsigned char
  15          #define  uint   unsigned int
  16          
  17          //#define  ILEN  16 //32            //设置串口中断接收缓冲区大小
  18          //idata uchar  inbuf[ILEN];
  19          //data uchar idata *inlast=inbuf;  //最后由中断进入接收缓冲区的字节位置
  20          //data uchar idata *getlast=inbuf;  //最后取走的字节位置
  21          //bit   inbufsign;      //接收缓冲区非空标志   有=1
  22          //bit   inbufful;       //输入缓冲区满标志  满=1
  23          #define CR putstring("\r\n")   //CR=回车换行
  24          
  25          //*****************************
  26          //放入一个字节到发送缓冲区
  27          putbyte(unsigned char c)
  28          {
  29   1      SBUF=c;
  30   1      while(!TI);TI=0;
  31   1      }
  32          
  33          //***************************************
  34          //发送一个定义在程序存储区的字符串到串口
  35          putstring(uchar  *puts)
  36          {
  37   1              for(;*puts!=0;puts++)   //遇到停止符0结束
  38   1              putbyte(*puts);
  39   1      }
  40          //*************************************
  41          //发送一个字节的hex码，分成两个字节发。
  42          uchar code hex_[]={"0123456789ABCDEF"};
  43          puthex(unsigned char c)
  44          {
  45   1              int  ch;
  46   1              ch=(c>>4)&0x0f;
  47   1              putbyte(hex_[ch]);
  48   1              ch=c&0x0f;
  49   1              putbyte(hex_[ch]);
  50   1      }
  51          //*************************************
  52          //从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。
  53          uchar getbyte (void)
  54          {
  55   1              while(!RI);
C51 COMPILER V7.07   SERIAL                                                                06/01/2004 12:59:40 PAGE 2   

  56   1              RI=0;
  57   1              return (SBUF);        //取回数据
  58   1      }
  59          
  60          //*****************************
  61          //串口初始化                0xfd=19200,0xfa=9600,0xf4=4800,0xe8=2400,0xd0=1200 110592
  62          void serial_init (void)
  63          {
  64   1              //用t1作波特率
  65   1              
  66   1              SCON  = 0x50;                     // mode 1: 8-bit UART, enable receiver
  67   1              TMOD |= 0x21;                      // timer 1 mode 2: 8-Bit reload th0 1X16
  68   1              PCON |= 0x80; 
  69   1              TH1 = 0xfd;//fd,          //baud*2    /* reload value 19200 baud
  70   1              TR1   = 1;                         // timer 1 run
  71   1      
  72   1              //用t2作波特率
  73   1      /*
  74   1              T2CON=0x30;
  75   1              RCAP2H=0xFF;
  76   1              RCAP2L=0xb8;//70=4800,b8=9600,dc=19200,ee=38400,f4=57600,fa=115200
  77   1              TR2=1;ET2=1;
  78   1              SCON=0x50;//SCON=0xd0;
  79   1      */
  80   1      
  81   1              //ES = 1;
  82   1              REN=1;
  83   1              //EA=1;
  84   1              SM2=1;          //SM2=1时收到的第9位为1才置位RI标志
  85   1      
  86   1      }
  87          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =     82    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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