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

📄 sendfunction.lst

📁 指纹通讯模块程序
💻 LST
字号:
C51 COMPILER V8.02   SENDFUNCTION                                                          06/04/2008 14:10:18 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE SENDFUNCTION
OBJECT MODULE PLACED IN D:\UART1\SENDFUNCTION.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\UART1\SENDFUNCTION.C DB SB OE

line level    source

   1          #include <stdio.h>
   2          #include <reg51.h>
   3          
   4          extern void delay(int i);         //延时子程序
   5          
   6          extern bit SendOver;
   7          
   8          void SendFunction(unsigned char *p)
   9          {
  10   1        unsigned char n=0;
  11   1        unsigned char packetBuff[20]={0xEF,0x01,0xFF,0xFF,0xFF,0xFF,0,0,0,0,0,0,0,0,0,0,0,0};
  12   1        unsigned int  checkSum1=0;
  13   1        unsigned char packetLength=0;
  14   1        unsigned char SendNum=0;
  15   1        unsigned char Length;
  16   1        unsigned char buff;
  17   1      
  18   1        ES=0 ;
  19   1        Length=*p;
  20   1        if(*p<=0x03)                      //只有指令没有参数的包
  21   1          {
  22   2            for(n=6;n<=6+*p;n++)           //整个包长度为 9+*p
  23   2              {
  24   3                if(n==6)
  25   3                  {
  26   4                    packetBuff[n]=0x01;   //包标识  0x01H
  27   4                    checkSum1+=(int)(packetBuff[n]);
  28   4                  }
  29   3                if(n==7)
  30   3                  {
  31   4                     packetBuff[n]=0x00;    //包长度 的 高字节 0x00H
  32   4                                            //包长度不会超过256字节,因此高字节恒为0x00H
  33   4                     checkSum1+=(int)(packetBuff[n]);
  34   4                  }
  35   3                if(n==8)
  36   3                  {
  37   4                   buff=*p;
  38   4                   packetBuff[n]=buff;      //包长度的低字节
  39   4                   checkSum1+=(int)(packetBuff[n]);
  40   4                 }
  41   3                if(n==9)
  42   3                  {
  43   4                    buff= *(p+1);
  44   4                    packetBuff[n]=buff;       // 指令码
  45   4                    checkSum1+=(int)(packetBuff[n]);
  46   4                  }
  47   3              }
  48   2          }
  49   1        if(*p>=0x04)             //有指令也有参数的包
  50   1          {
  51   2            for(n=6;n<=6+*p;n++)
  52   2              {
  53   3                 if(n==6)
  54   3                 {
  55   4                   packetBuff[n]=0x01;      //包标识
C51 COMPILER V8.02   SENDFUNCTION                                                          06/04/2008 14:10:18 PAGE 2   

  56   4                   checkSum1+=(int)packetBuff[n];
  57   4                 }
  58   3                if(n==7)
  59   3                 {
  60   4                   packetBuff[n]=0x00;      //包长度 的 高字节 0x00H
  61   4                                            //包长度不会超过256字节,因此高字节恒为0x00H
  62   4                   checkSum1+=(int)packetBuff[n];
  63   4                 }
  64   3                if(n==8)
  65   3                  {
  66   4                    buff=*p;
  67   4                    packetBuff[n]=buff;      //包长度 的 低字节
  68   4                   checkSum1+=(int)packetBuff[n];
  69   4                  }
  70   3                if(n==9)
  71   3                  {
  72   4                    buff=*(p+1);
  73   4                    packetBuff[n]=buff;          //指令字节
  74   4                    checkSum1+=(int)packetBuff[n];
  75   4                  }
  76   3                if(n>=10 && n<9+*p-2)
  77   3                  {
  78   4                    buff=*(p+n-8);
  79   4                    packetBuff[n]=buff;       // 指令参数
  80   4                    checkSum1+=(int)packetBuff[n];
  81   4                  }
  82   3             }
  83   2          }
  84   1      
  85   1             packetBuff[n]=checkSum1/256;      //加效验位的高字节
  86   1             packetBuff[n+1]=checkSum1%256;    //加效验位低字节
  87   1             packetLength=*p+9  ;
  88   1             SendNum=0;
  89   1             TI=1;
  90   1      
  91   1           while(SendNum<packetLength)
  92   1             {
  93   2               if(TI==1)
  94   2                {
  95   3                 TI=0;
  96   3                 SBUF=*(packetBuff+SendNum);
  97   3                 SendNum++;
  98   3                }
  99   2             }
 100   1      
 101   1            while(TI==0){}
 102   1            if(TI==1)
 103   1            {
 104   2              TI=0;
 105   2              RI=0;
 106   2              ES=1;        //传送完毕开中断进行接收
 107   2            }
 108   1      
 109   1      }
C51 COMPILER V8.02   SENDFUNCTION                                                          06/04/2008 14:10:18 PAGE 3   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


size_t . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
ES . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00ACH  1
RI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0098H  1
TI . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      0099H  1
SBUF . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0099H  1
_SendFunction. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  p. . . . . . . . . . . . . . . . . .  AUTO     DATA   PTR      0000H  3
  n. . . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   0003H  1
  packetBuff . . . . . . . . . . . . .  AUTO     DATA   ARRAY    0004H  20
  checkSum1. . . . . . . . . . . . . .  AUTO     DATA   U_INT    0018H  2
  packetLength . . . . . . . . . . . .  AUTO     DATA   U_CHAR   001AH  1
  SendNum. . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   001BH  1
  Length . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   001CH  1
  buff . . . . . . . . . . . . . . . .  AUTO     DATA   U_CHAR   001DH  1
_?ix1000 . . . . . . . . . . . . . . .  STATIC   CODE   ARRAY    0000H  20


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    522    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      30
   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 + -