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

📄 serial.lst

📁 基于华邦W77E516的ISP程序
💻 LST
字号:
C51 COMPILER V7.50   SERIAL                                                                10/20/2006 13:56:20 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: D:\Keil51\keil\C51\BIN\C51.EXE serial.c OPTIMIZE(1,SPEED) BROWSE ORDER DEBUG OBJECTEXTEND CODE

line 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  "W77E516.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          //从接收缓冲区取一个byte,如不想等待则在调用前检测inbufsign是否为1。
  27          uchar getbyte (void)
  28          {
  29   1              while(!RI)P34=~P34;
  30   1              P34=~P34;
  31   1              RI=0;
  32   1              return (SBUF);        //取回数据
  33   1      }
  34          
  35          //**********************************
  36          
  37          
  38          //放入一个字节到发送缓冲区
  39          putbyte(unsigned char c)
  40          {
  41   1      SBUF=c;
  42   1      while(!TI)P34=~P34;
  43   1      P34=~P34;
  44   1      TI=0;
  45   1      }
  46          
  47          //***************************************
  48          //发送一个定义在程序存储区的字符串到串口
  49          putstring(uchar  *puts)
  50          {
  51   1              for(;*puts!=0;puts++)   //遇到停止符0结束
  52   1              putbyte(*puts);
  53   1      }
  54          
  55          //*******************************************
C51 COMPILER V7.50   SERIAL                                                                10/20/2006 13:56:20 PAGE 2   

  56          uchar reputstring(uchar  *puts)
  57          {
  58   1              uchar i;
  59   1              i=0;
  60   1              do{
  61   2              for(;*(puts+i)!=0;i++)   //遇到停止符0结束
  62   2              putbyte(*(puts+i));
  63   2              i=0;
  64   2              }while(!RI);
  65   1              RI=0;
  66   1              return SBUF;
  67   1      }
  68          
  69          //*************************************
  70          //发送一个字节的hex码,分成两个字节发。
  71          uchar code hex_[]={"0123456789ABCDEF"};
  72          puthex(unsigned char c)
  73          {
  74   1              int  ch;
  75   1              ch=(c>>4)&0x0f;
  76   1              putbyte(hex_[ch]);
  77   1              ch=c&0x0f;
  78   1              putbyte(hex_[ch]);
  79   1      }
  80          
  81          //*****************************
  82          //串口初始化                0xfd=19200,0xfa=9600,0xf4=4800,0xe8=2400,0xd0=1200 110592
  83          void serial_init (void)
  84          {
  85   1              //用t1作波特
  86   1              TR1   = 0;
  87   1              SCON0  = 0x50;                     // mode 1: 8-bit UART, enable receiver
  88   1              TMOD |= 0x21;                      // timer 1 mode 2: 8-Bit reload th0 1X16
  89   1              PCON |= 0x80; 
  90   1              TH1 = 0xfa;//fd,          //baud*2    /* reload value 19200 baud
  91   1              TR1   = 1;                         // timer 1 run
  92   1      
  93   1              //  0xf9=19200    0xf3=9600  0xe6=4800  0xcc=2400   
  94   1      /*      //用t2作波特率
  95   1      
  96   1              T2CON=0x30;
  97   1              RCAP2H=0xFF;
  98   1              RCAP2L=0xb8;//70=4800,b8=9600,dc=19200,ee=38400,f4=57600,fa=115200
  99   1              TR2=1;ET2=1;
 100   1              SCON0=0x50;//SCON0=0xd0;
 101   1      
 102   1      */
 103   1              //ES = 1;
 104   1              REN=1;
 105   1              //EA=1;
 106   1              SM2=1;          //SM2=1时收到的第9位为1才置位RI标志
 107   1      
 108   1      }
 109          
C51 COMPILER V7.50   SERIAL                                                                10/20/2006 13:56:20 PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION getbyte (BEGIN)
                                           ; SOURCE LINE # 27
                                           ; SOURCE LINE # 28
0000         ?C0001:
                                           ; SOURCE LINE # 29
0000 209804            JB      RI,?C0002
0003 B2B4              CPL     P34
0005 80F9              SJMP    ?C0001
0007         ?C0002:
                                           ; SOURCE LINE # 30
0007 B2B4              CPL     P34
                                           ; SOURCE LINE # 31
0009 C298              CLR     RI
                                           ; SOURCE LINE # 32
000B AF99              MOV     R7,SBUF
                                           ; SOURCE LINE # 33
000D         ?C0003:
000D 22                RET     
             ; FUNCTION getbyte (END)

             ; FUNCTION _putbyte (BEGIN)
                                           ; SOURCE LINE # 39
0000 8F00        R     MOV     c,R7
                                           ; SOURCE LINE # 40
                                           ; SOURCE LINE # 41
0002 850099      R     MOV     SBUF,c
0005         ?C0004:
                                           ; SOURCE LINE # 42
0005 209904            JB      TI,?C0005
0008 B2B4              CPL     P34
000A 80F9              SJMP    ?C0004
000C         ?C0005:
                                           ; SOURCE LINE # 43
000C B2B4              CPL     P34
                                           ; SOURCE LINE # 44
000E C299              CLR     TI
                                           ; SOURCE LINE # 45
0010 22                RET     
             ; FUNCTION _putbyte (END)

             ; FUNCTION _putstring (BEGIN)
                                           ; SOURCE LINE # 49
0000 8B00        R     MOV     puts,R3
0002 8A00        R     MOV     puts+01H,R2
0004 8900        R     MOV     puts+02H,R1
                                           ; SOURCE LINE # 50
                                           ; SOURCE LINE # 51
0006         ?C0007:
0006 AB00        R     MOV     R3,puts
0008 AA00        R     MOV     R2,puts+01H
000A A900        R     MOV     R1,puts+02H
000C 120000      E     LCALL   ?C?CLDPTR
000F FF                MOV     R7,A
0010 EF                MOV     A,R7
0011 601A              JZ      ?C0010
                                           ; SOURCE LINE # 52
0013 AB00        R     MOV     R3,puts
0015 AA00        R     MOV     R2,puts+01H
0017 A900        R     MOV     R1,puts+02H
C51 COMPILER V7.50   SERIAL                                                                10/20/2006 13:56:20 PAGE 4   

0019 120000      E     LCALL   ?C?CLDPTR
001C FF                MOV     R7,A
001D 120000      R     LCALL   _putbyte
0020 7401              MOV     A,#01H
0022 2500        R     ADD     A,puts+02H
0024 F500        R     MOV     puts+02H,A
0026 E4                CLR     A
0027 3500        R     ADDC    A,puts+01H
0029 F500        R     MOV     puts+01H,A
002B 80D9              SJMP    ?C0007
                                           ; SOURCE LINE # 53
002D         ?C0010:
002D 22                RET     
             ; FUNCTION _putstring (END)

             ; FUNCTION _reputstring (BEGIN)
                                           ; SOURCE LINE # 56
0000 8B00        R     MOV     puts,R3
0002 8A00        R     MOV     puts+01H,R2
0004 8900        R     MOV     puts+02H,R1
                                           ; SOURCE LINE # 57
                                           ; SOURCE LINE # 59
0006 750000      R     MOV     i,#00H
                                           ; SOURCE LINE # 60
                                           ; SOURCE LINE # 61
0009         ?C0014:
0009 AB00        R     MOV     R3,puts
000B AA00        R     MOV     R2,puts+01H
000D A900        R     MOV     R1,puts+02H
000F AF00        R     MOV     R7,i
0011 8F82              MOV     DPL,R7
0013 758300            MOV     DPH,#00H
0016 120000      E     LCALL   ?C?CLDOPTR
0019 FF                MOV     R7,A
001A EF                MOV     A,R7
001B 6018              JZ      ?C0015
                                           ; SOURCE LINE # 62
001D AB00        R     MOV     R3,puts
001F AA00        R     MOV     R2,puts+01H
0021 A900        R     MOV     R1,puts+02H
0023 AF00        R     MOV     R7,i
0025 8F82              MOV     DPL,R7
0027 758300            MOV     DPH,#00H
002A 120000      E     LCALL   ?C?CLDOPTR
002D FF                MOV     R7,A
002E 120000      R     LCALL   _putbyte
0031 0500        R     INC     i
0033 80D4              SJMP    ?C0014
0035         ?C0015:
                                           ; SOURCE LINE # 63
0035 750000      R     MOV     i,#00H
                                           ; SOURCE LINE # 64
0038 3098CE            JNB     RI,?C0014
                                           ; SOURCE LINE # 65
003B C298              CLR     RI
                                           ; SOURCE LINE # 66
003D AF99              MOV     R7,SBUF
                                           ; SOURCE LINE # 67
003F         ?C0017:
003F 22                RET     
             ; FUNCTION _reputstring (END)

C51 COMPILER V7.50   SERIAL                                                                10/20/2006 13:56:20 PAGE 5   

             ; FUNCTION _puthex (BEGIN)
                                           ; SOURCE LINE # 72
0000 8F00        R     MOV     c,R7
                                           ; SOURCE LINE # 73
                                           ; SOURCE LINE # 75
0002 E500        R     MOV     A,c
0004 C4                SWAP    A
0005 540F              ANL     A,#0FH
0007 FF                MOV     R7,A
0008 7E00              MOV     R6,#00H
000A 750000      R     MOV     ch,#00H
000D EF                MOV     A,R7
000E 540F              ANL     A,#0FH
0010 F500        R     MOV     ch+01H,A
                                           ; SOURCE LINE # 76
0012 AE00        R     MOV     R6,ch
0014 AF00        R     MOV     R7,ch+01H
0016 7400        R     MOV     A,#LOW hex_
0018 2F                ADD     A,R7
0019 F582              MOV     DPL,A
001B 7400        R     MOV     A,#HIGH hex_
001D 3E                ADDC    A,R6
001E F583              MOV     DPH,A
0020 E4                CLR     A
0021 93                MOVC    A,@A+DPTR
0022 FF                MOV     R7,A
0023 120000      R     LCALL   _putbyte
                                           ; SOURCE LINE # 77
0026 E500        R     MOV     A,c
0028 540F              ANL     A,#0FH
002A FF                MOV     R7,A
002B 7E00              MOV     R6,#00H
002D 8E00        R     MOV     ch,R6
002F 8F00        R     MOV     ch+01H,R7
                                           ; SOURCE LINE # 78
0031 AE00        R     MOV     R6,ch
0033 AF00        R     MOV     R7,ch+01H
0035 7400        R     MOV     A,#LOW hex_
0037 2F                ADD     A,R7
0038 F582              MOV     DPL,A
003A 7400        R     MOV     A,#HIGH hex_
003C 3E                ADDC    A,R6
003D F583              MOV     DPH,A
003F E4                CLR     A
0040 93                MOVC    A,@A+DPTR
0041 FF                MOV     R7,A
0042 120000      R     LCALL   _putbyte
                                           ; SOURCE LINE # 79
0045 22                RET     
             ; FUNCTION _puthex (END)

             ; FUNCTION serial_init (BEGIN)
                                           ; SOURCE LINE # 83
                                           ; SOURCE LINE # 84
                                           ; SOURCE LINE # 86
0000 C28E              CLR     TR1
                                           ; SOURCE LINE # 87
0002 759850            MOV     SCON0,#050H
                                           ; SOURCE LINE # 88
0005 438921            ORL     TMOD,#021H
                                           ; SOURCE LINE # 89
0008 438780            ORL     PCON,#080H
C51 COMPILER V7.50   SERIAL                                                                10/20/2006 13:56:20 PAGE 6   

                                           ; SOURCE LINE # 90
000B 758DFA            MOV     TH1,#0FAH
                                           ; SOURCE LINE # 91
000E D28E              SETB    TR1
                                           ; SOURCE LINE # 104
0010 D29C              SETB    REN
                                           ; SOURCE LINE # 106
0012 D29D              SETB    SM2
                                           ; SOURCE LINE # 108
0014 22                RET     
             ; FUNCTION serial_init (END)



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    232    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     11    ----
   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 + -