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

📄 appli.lst

📁 压缩包中包括多个常用的汇编
💻 LST
📖 第 1 页 / 共 5 页
字号:
 721   2                  send_buf[1] = ADDRESS[1]; /* 开发板地址 */
 722   2                  send_buf[2] = 0x08;       /* 数据长度低字节 */
 723   2                  send_buf[3] = 0x00;       /* 数据长度高字节 */
 724   2                  send_buf[4] = 0x34;       /* 消息类型:时间数据 */
 725   2                  for (i=0; i<7; i++)
 726   2                  {
 727   3                      send_buf[i+5] = date[i];  /* 时间数据7位:年,月,日,星期,时,分,秒*/
 728   3                  }
 729   2                  send_buf[12] = 0x03;
 730   2      
 731   2                  crc_data = CalCRC16_1021(send_buf, 13);
 732   2      
 733   2                  send_buf[13] = ( crc_data & 0x00ff );         /* 校验位低字节 */
 734   2                  send_buf[14] = ( ( crc_data & 0xff00 ) >> 8 );/* 校验位高字节 */
 735   2      
C51 COMPILER V7.09   APPLI                                                                 10/09/2005 20:45:34 PAGE 13  

 736   2                  com_send_command(SYN);    /* 发送数据 */
 737   2                  com_send_command(SYN);
 738   2                  com_send_command(STX);
 739   2                  for (i=0; i<15; i++)
 740   2                  {
 741   3                      com_send_command(send_buf[i]);
 742   3                  }
 743   2                  break;
 744   2      
 745   2              case MSG_CUR_DATA :           /* 请求当前数据 */
 746   2      
 747   2                  analog_in_data = adc_1549();
 748   2      
 749   2                  send_buf[0] = ADDRESS[0]; /* 通讯组地址 */
 750   2                  send_buf[1] = ADDRESS[1]; /* 开发板地址 */
 751   2                  send_buf[2] = 0x06;       /* 数据长度低字节 */
 752   2                  send_buf[3] = 0x00;       /* 数据长度高字节 */
 753   2                  send_buf[4] = 0x35;       /* 消息类型:当前数据 */
 754   2      
 755   2                  send_buf[5] = cur_lumin;  /* 当前光强 */
 756   2                  send_buf[6] = cur_temp;   /* 当前温度 */
 757   2                  send_buf[7] = (analog_in_data & 0x00ff);          /* 模拟量输入低字节 */
 758   2                  send_buf[8] = ( (analog_in_data >> 8) & 0x00ff ); /* 模拟量输入高字节 */
 759   2      
 760   2                  if (SWITCH_IN)
 761   2                      send_buf[9] = 0x00;     /* 当前开关量为1,断开 */
 762   2                  else
 763   2                      send_buf[9] = 0x01;     /* 当前开关量为0,闭合 */
 764   2      
 765   2                  send_buf[10] = 0x03;
 766   2      
 767   2                  crc_data = CalCRC16_1021(send_buf, 11);
 768   2      
 769   2                  send_buf[11] = ( crc_data & 0x00ff );         /* 校验位低字节 */
 770   2                  send_buf[12] = ( ( crc_data & 0xff00 ) >> 8 );/* 校验位高字节 */
 771   2      
 772   2                  com_send_command(SYN);    /* 发送数据 */
 773   2                  com_send_command(SYN);
 774   2                  com_send_command(STX);
 775   2                  for (i=0; i<13; i++)
 776   2                  {
 777   3                      com_send_command(send_buf[i]);
 778   3                  }
 779   2                  break;
 780   2      
 781   2              case MSG_WATCHDOG :           /* 请求看门狗信息 */
 782   2      
 783   2                  send_buf[0] = ADDRESS[0]; /* 通讯组地址 */
 784   2                  send_buf[1] = ADDRESS[1]; /* 开发板地址 */
 785   2                  send_buf[2] = 0x08;       /* 数据长度低字节 */
 786   2                  send_buf[3] = 0x00;       /* 数据长度高字节 */
 787   2                  send_buf[4] = 0x36;       /* 消息类型:看门狗信息 */
 788   2      
 789   2                  for (i=0; i<7; i++)
 790   2                  {
 791   3                      send_buf[i+5] = watchdog_date[i];  /* 看门狗数据7位:年,月,日,星期,时,分,秒*/
 792   3                  }
 793   2                  send_buf[12] = 0x03;
 794   2      
 795   2                  crc_data = CalCRC16_1021(send_buf, 13);
 796   2      
 797   2                  send_buf[13] = ( crc_data & 0x00ff );         /* 校验位低字节 */
C51 COMPILER V7.09   APPLI                                                                 10/09/2005 20:45:34 PAGE 14  

 798   2                  send_buf[14] = ( ( crc_data & 0xff00 ) >> 8 );/* 校验位高字节 */
 799   2      
 800   2                  com_send_command(SYN);    /* 发送数据 */
 801   2                  com_send_command(SYN);
 802   2                  com_send_command(STX);
 803   2                  for (i=0; i<15; i++)
 804   2                  {
 805   3                      com_send_command(send_buf[i]);
 806   3                  }
 807   2                  break;
 808   2      
 809   2              case MSG_ALARM_STATE :        /* 请求报警情况 */
 810   2      
 811   2                  send_buf[0] = ADDRESS[0]; /* 通讯组地址 */
 812   2                  send_buf[1] = ADDRESS[1]; /* 开发板地址 */
 813   2                  send_buf[2] = 0x02;       /* 数据长度低字节 */
 814   2                  send_buf[3] = 0x00;       /* 数据长度高字节 */
 815   2                  send_buf[4] = 0x37;       /* 消息类型:报警状态 */
 816   2      
 817   2                  send_buf[5] = 0x00;
 818   2                  if (SWITCH_IN)
 819   2                  {
 820   3                      send_buf[5] |= 0x01;  /* 开关量输入为1 */
 821   3                  }
 822   2                  else
 823   2                  {
 824   3                      send_buf[5] &= 0xfe;  /* 开关量输入为0 */
 825   3                  }
 826   2      
 827   2      
 828   2                  if (cur_temp <= alarm_limit.lumin_uthreshold) /* 当前光强小于超低光强阈值 */
 829   2                  {
 830   3                      send_buf[5] |= 0x02;
 831   3                  }
 832   2                  else if (cur_temp >= alarm_limit.lumin_othreshold) /* 当前光强大于超高光强阈值 */
 833   2                  {
 834   3                      send_buf[5] |= 0x04;
 835   3                  }
 836   2                  else
 837   2                  {
 838   3                      send_buf[5] &= 0xf9;   /* 光强无报警 */
 839   3                  }
 840   2      
 841   2                  if (cur_temp <= alarm_limit.temp_uthreshold) /* 当前温度小于超低温度阈值 */
 842   2                  {
 843   3                      send_buf[5] |= 0x08;
 844   3                  }
 845   2                  else if (cur_temp >= alarm_limit.temp_othreshold) /* 当前温度大于超高温度阈值 */
 846   2                  {
 847   3                      send_buf[5] |= 0x10;
 848   3                  }
 849   2                  else
 850   2                  {
 851   3                      send_buf[5] &= 0xe7;   /* 温度无报警 */
 852   3                  }
 853   2      
 854   2                  send_buf[6] = 0x03;
 855   2      
 856   2                  crc_data = CalCRC16_1021(send_buf, 7);
 857   2      
 858   2                  send_buf[7] = ( crc_data & 0x00ff );         /* 校验位低字节 */
 859   2                  send_buf[8] = ( ( crc_data & 0xff00 ) >> 8 );/* 校验位高字节 */
C51 COMPILER V7.09   APPLI                                                                 10/09/2005 20:45:34 PAGE 15  

 860   2      
 861   2                  com_send_command(SYN);    /* 发送数据 */
 862   2                  com_send_command(SYN);
 863   2                  com_send_command(STX);
 864   2                  for (i=0; i<9; i++)
 865   2                  {
 866   3                      com_send_command(send_buf[i]);
 867   3                  }
 868   2                  break;
 869   2      
 870   2              case MSG_GET_ADDRESS :        /* 请求设备地址 */
 871   2      
 872   2                  send_buf[0] = ADDRESS[0]; /* 通讯组地址 */
 873   2                  send_buf[1] = ADDRESS[1]; /* 开发板地址 */
 874   2                  send_buf[2] = 0x03;       /* 数据长度低字节 */
 875   2                  send_buf[3] = 0x00;       /* 数据长度高字节 */
 876   2                  send_buf[4] = 0x39;       /* 消息类型:设备地址 */
 877   2      
 878   2                  send_buf[5] = ADDRESS[0]; /* 通讯组地址 */
 879   2                  send_buf[6] = ADDRESS[1]; /* 开发板地址 */
 880   2      
 881   2                  send_buf[7] = 0x03;
 882   2      
 883   2                  crc_data = CalCRC16_1021(send_buf, 8);
 884   2      
 885   2                  send_buf[8] = ( crc_data & 0x00ff );         /* 校验位低字节 */
 886   2                  send_buf[9] = ( ( crc_data & 0xff00 ) >> 8 );/* 校验位高字节 */
 887   2      
 888   2                  com_send_command(SYN);    /* 发送数据 */
 889   2                  com_send_command(SYN);
 890   2                  com_send_command(STX);
 891   2                  for (i=0; i<10; i++)
 892   2                  {
 893   3                      com_send_command(send_buf[i]);
 894   3                  }
 895   2                  break;
 896   2      
 897   2              case MSG_ACK:
 898   2                  send_command(ACK);
 899   2                  break;
 900   2      
 901   2              case MSG_NAK:
 902   2                  send_command(NAK);
 903   2                  break;
 904   2      
 905   2              default:
 906   2                  break;
 907   2          }
 908   1      }
 909          
 910          /* 系统上电初始化 */
 911          void system_init(void)
 912          {
 913   1          u_char loop;
 914   1      
 915   1          EA = 0;           /* CPU关中断      */
 916   1          pint_read  = 0;   /* 串口中断读指针 */
 917   1          pint_write = 0;   /* 串口中断写指针 */
 918   1          msg_readp  = 0;   /* msg读指针      */
 919   1          msg_writep = 0;   /* msg写指针      */
 920   1          msg_number = 0;   /* 消息数         */
 921   1          prec_num=0;
C51 COMPILER V7.09   APPLI                                                                 10/09/2005 20:45:34 PAGE 16  

 922   1      
 923   1          /* 初始化定时器变量 */
 924   1          for (loop=0; loop<MAX_TNUM; loop++)
 925   1          {
 926   2              timer_sign[loop]  = 0;    /* 定时标志 1:开始        */
 927   2              timer_type[loop]  = 0;    /* 定时类型 0:一般 1:循环 */
 928   2              timer_len[loop]   = 0;    /* 时长 100ms 的倍数      */
 929   2              timer_count[loop] = 0;    /* 定时计数               */
 930   2              timer_map[loop]   = loop;
 931   2              timer_id[loop] = 0;
 932   2          }
 933   1          timer_number = 0;
 934   1          timer_int = 0;
 935   1          int_times = 0;
 936   1          /* 初始化定时器变量结束 */
 937   1      
 938   1          SCON = 0x48;
 939   1          PCON = 0x80;
 940   1          TMOD = 0x21;
 941   1          TCON = 0x54;
 942   1          TH1  = 0xFD;    /* 波特率为19200  */
 943   1          TL1  = 0xFD;
 944   1          TR1  = 1;       /* 定时器1启动计数*/
 945   1          TH0 = -(46080 / 256);/* 定时50毫秒*/
 946   1          TL0 = -(46080 % 256);
 947   1          TR0  = 1;       /* 定时器0启动计数*/
 948   1          ES   = 1;       /* 串口开中断     */
 949   1          ET0  = 1;       /* 定时器0开中断  */
 950   1          PT0  = 1;       /* 定时器高优先级 */
 951   1          PS   = 0;       /* 串口低优先级   */
 952   1          REN  = 1;       /* 串口接收允许   */
 953   1          EX1  = 1;       /* 开外部中断1    */
 954   1          EA   = 1;       /* 开CPU中断      */
 955   1      
 956   1          loop = SBUF;    /* 清串口缓冲区   */
 957   1          for (loop=0; loop<MAX_RINTL; loop++)
 958   1          {
 959   2              pint_buf[loop] = 0;
 960   2          }
 961   1      }
 962          
 963          /* 查询是否有系统消息 */

⌨️ 快捷键说明

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