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

📄 serial.lst

📁 lcd1286显示模块 EWB Quartus2编译 电子综合设计试验箱程序
💻 LST
字号:
C51 COMPILER V7.50   SERIAL                                                                08/22/2008 20:40:12 PAGE 1   


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

line level    source

   1          #include <reg51.h>//Note:It must be added.必须在serial.c之前
   2          #include <serial.h>
   3          
   4          
   5          unsigned char  TxBuf[LenTxBuf],RxBuf[LenRxBuf];//收发缓冲区实体
   6          unsigned char *inTxBuf,*outTxBuf,*inRxBuf,*outRxBuf;//收发缓冲区读写指针
   7          bit TIflag=1;//Note:It must be 1.
   8          
   9          void InitSerial() //串口初始化
  10          {
  11   1              TMOD=TMOD&0x0F;
  12   1              TMOD=TMOD|0x20;
  13   1              //TL1=0xFD,TH1=0xFD;//9600 , 11.5200MHz
  14   1                      TL1=0xFE,TH1=0xFE;//9600 , 11.5200MHz
  15   1              SCON=0x50;PCON=0x00;
  16   1              TR1=1;
  17   1      }
  18          
  19          void InitSerialBuffer(void) //串口缓冲区初始化
  20          {
  21   1              inTxBuf=TxBuf;outTxBuf=TxBuf;
  22   1              inRxBuf=RxBuf;outRxBuf=RxBuf;
  23   1              ES=1;
  24   1              //EA=1;
  25   1      }
  26          
  27          void serial(void) interrupt 4
  28          {    //中断在汇编中实现,去掉interrupt 4{//串口中断服务子程序
  29   1              unsigned char *t;
  30   1      
  31   1              if(TI){
  32   2                      TI=0;
  33   2                      if(inTxBuf==outTxBuf) {TIflag=1;return;}//TxBuf Empty
  34   2                      SBUF=*outTxBuf; outTxBuf++;
  35   2                      if(outTxBuf==TxBuf+LenTxBuf) outTxBuf=TxBuf;    
  36   2              }
  37   1              if(RI){
  38   2                      RI=0;
  39   2                      t=inRxBuf;t++;
  40   2                      if(t==RxBuf+LenRxBuf) t=RxBuf;
  41   2                      if(t==outRxBuf) return;                 //RxBuf Full
  42   2                      *inRxBuf=SBUF;
  43   2                      inRxBuf=t;
  44   2              }
  45   1      }
  46          
  47          bit yygetch(unsigned char *ch) //从串口缓冲区读1字节数据
  48          {
  49   1              //ES=0;        
  50   1              if(inRxBuf==outRxBuf) {ES=1;return 0;}          //RxBuf Empty
  51   1              *ch=*outRxBuf;  outRxBuf++;
  52   1              if(outRxBuf==RxBuf+LenRxBuf) outRxBuf=RxBuf;
  53   1              //ES=1;        
  54   1              return 1;
  55   1      }
C51 COMPILER V7.50   SERIAL                                                                08/22/2008 20:40:12 PAGE 2   

  56          
  57          void PrintChar(unsigned char ch)//显示字符
  58          {
  59   1              unsigned char *t;
  60   1      
  61   1              //ES=0;        
  62   1              if(TIflag){             
  63   2                      TIflag=0;
  64   2                      TI=1;
  65   2              }
  66   1              t=inTxBuf;t++;
  67   1              if(t==TxBuf+LenTxBuf) t=TxBuf;
  68   1              if(t==outTxBuf) {/*ES=1;*/return;}                  //TxBuf Full
  69   1              *inTxBuf=ch;
  70   1              inTxBuf=t;
  71   1              //ES=1;        
  72   1      }
  73          
  74          void PrintCh(unsigned char ch) //内部使用,不建议用户看到。
  75          {
  76   1              if(ch>=0&&ch<=9) ch=ch+'0';
  77   1              else ch=ch+'A'-10;
  78   1              PrintChar(ch);
  79   1      }
  80          
  81          void insidePrintByte(unsigned char Byte) //内部使用,以十六进制格式显示1个字节数据
  82          {
  83   1              unsigned char c;
  84   1              c=Byte;
  85   1              c=c>>4;        
  86   1              PrintCh(c);
  87   1              c=Byte;c=c&0x0F;PrintCh(c);        
  88   1      }
  89          
  90          void PrintByte(unsigned char Byte) //以十六进制格式显示1个字节数据
  91          {
  92   1              EA=0;        
  93   1              insidePrintByte(Byte);                
  94   1              EA=1;
  95   1      }
  96          
  97          void insidePrintWord(unsigned int Word) //内部使用,以十六进制格式显示1个字数据
  98          {               
  99   1              insidePrintByte(Word>>8);
 100   1              insidePrintByte(Word&0xFF);                        
 101   1      }
 102          
 103          void PrintWord(unsigned int Word) //以十六进制格式显示1个字数据
 104          {       
 105   1              EA=0;
 106   1              insidePrintWord(Word);
 107   1              EA=1;
 108   1      }
 109          
 110          void PrintLong(unsigned long LongWord) //以十六进制格式显示1个长字数据
 111          {
 112   1              EA=0;
 113   1              insidePrintWord(LongWord>>16);
 114   1              insidePrintWord(LongWord&0xFFFF);
 115   1              EA=1;
 116   1      }
 117          
C51 COMPILER V7.50   SERIAL                                                                08/22/2008 20:40:12 PAGE 3   

 118          void PrintStr(unsigned char *str)//显示字符串
 119          {
 120   1              int i;
 121   1              unsigned char j;
 122   1              unsigned char ch;
 123   1              
 124   1              EA=0;
 125   1              for(i=0;i<MaxLenStr;i++){
 126   2                      ch=*(str+i);
 127   2                      if(ch=='\0') break;
 128   2                      else if(ch=='\n'){PrintChar(10);PrintChar(13);} 
 129   2                      else if(ch=='\t'){
 130   3                              for(j=0;j<TABNum;j++)
 131   3                                      PrintChar(' ');
 132   3                      }
 133   2                      else PrintChar(ch);
 134   2              }
 135   1              EA=1;
 136   1      }
 137          
 138          void clrscr() //清屏
 139          {        
 140   1              PrintStr("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");//25个回车换行清屏幕。
 141   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    946    ----
   CONSTANT SIZE    =     26    ----
   XDATA SIZE       =    612      17
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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