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

📄 mainloop.lst

📁 这是一个89c52的USB固件系统的源码 使用keilc 生成hex文件 可直接烧录
💻 LST
📖 第 1 页 / 共 5 页
字号:
 840   1        ex = (long)(*((long *)(&(XBYTE[lpdata(cur_order,4)]))));
 841   1        ey = (long)(*((long *)(&(XBYTE[lpdata(cur_order,5)]))));
 842   1      
 843   1        l1 = ex-bx;
 844   1        l2 = ey-by;
 845   1        if (l1 < 0)
 846   1          l1 = -l1;
 847   1        if (l2 < 0)
 848   1          l2 = -l2;
 849   1        xyt = XBYTE[xytype(cur_order)];
 850   1        uvt = XBYTE[uvtype(cur_order)];
 851   1        cur_work_seg = (long)(*((long *)(&(XBYTE[ncorder(cur_order)]))));
 852   1        if (xyt == 1){  //直线
 853   2              if (anti_work_flag == 0)
 854   2            cur_off ++;
 855   2              else
 856   2            cur_off --;
 857   2          if (l1 > l2){  //X计数
 858   3                if (ex > bx){  //ex > bx
 859   4                  if (anti_work_flag == 0){
C51 COMPILER V7.09   MAINLOOP                                                              10/14/2004 20:25:36 PAGE 15  

 860   5                    cur_x ++;
 861   5                        x_z();
 862   5                      }
 863   4                      else{
 864   5                    cur_x --;
 865   5                        x_z();
 866   5                      }
 867   4                }
 868   3                else{    //ex < bx
 869   4                  if (anti_work_flag == 0){
 870   5                    cur_x --;
 871   5                        x_f();
 872   5                      }
 873   4                      else{
 874   5                    cur_x ++;
 875   5                        x_z();
 876   5                      }
 877   4                }
 878   3                if (anti_work_flag == 0){
 879   4                  if (cur_x == ex) //末点
 880   4                        bz = 1;
 881   4                      else
 882   4                        bz = 0;
 883   4            }
 884   3                else{
 885   4                  if (cur_x == bx) //末点
 886   4                        bz = 1;
 887   4                      else
 888   4                        bz = 0;
 889   4                }
 890   3                if (bz == 1){
 891   4                  if (anti_work_flag == 0){
 892   5                        if (ey > cur_y)
 893   5                          y_z();
 894   5                        else if (ey < cur_y)
 895   5                          y_f();
 896   5                    cur_y = ey;
 897   5                XBYTE[xytype(cur_order)] = 0;
 898   5                    cur_order1 = (cur_order+1)%MAX_ORDER;
 899   5                    cur_order = (cur_order+1)%MAX_ORDER;
 900   5                    cur_off = 0;
 901   5                        if (diandbz == 1){
 902   6                          diandbz = 0;
 903   6                          work_status = 0;
 904   6                  cc = 0x8c;
 905   6                  RAMCS = 1;
 906   6                  MCU_D12CS = 0;
 907   6                  D12_WriteEndpoint(3, 1, &cc);  
 908   6                        }
 909   5                        else{
 910   6                          if (XBYTE[xytype(cur_order)] == 0){
 911   7                            work_status = 2;
 912   7                                e_order = 0;
 913   7                        cur_order1 = 0;
 914   7                                cur_order = 0;
 915   7                            send_req_order(0);
 916   7                                close_gao_pin();
 917   7                         }
 918   6                        }
 919   5                      }
 920   4                      else{
 921   5                        if (by > cur_y)
C51 COMPILER V7.09   MAINLOOP                                                              10/14/2004 20:25:36 PAGE 16  

 922   5                          y_z();
 923   5                        else if (by < cur_y);
 924   5                          y_f();
 925   5                    cur_y = by;
 926   5                        cur_off = 0;
 927   5                        anti_work_flag = 0;
 928   5                    cur_jing = old_cur_jing;
 929   5                      }
 930   4                }
 931   3                else{  //中间点
 932   4              l3 = by + 1.0*(ey-by)*(cur_x-bx)/(ex-bx);
 933   4                  if (l3 != cur_y){  //Y也要走
 934   5                    if (ey > by)
 935   5                          y_z();
 936   5                        else
 937   5                          y_f();
 938   5                    cur_y = l3;
 939   5                      }
 940   4                }
 941   3              }
 942   2              else{//Y计数
 943   3                if (ey > by){  //ey > by
 944   4                  if (anti_work_flag == 0){
 945   5                    cur_y ++;
 946   5                        y_z();
 947   5                      }
 948   4                      else{
 949   5                    cur_y --;
 950   5                        y_f();
 951   5                      }
 952   4                }
 953   3                else{   // ey < by
 954   4                  if (anti_work_flag == 0){
 955   5                    cur_y --;
 956   5                        y_f();
 957   5                      }
 958   4                      else{
 959   5                    cur_y ++;
 960   5                        y_z();
 961   5                      }
 962   4                }
 963   3                if (anti_work_flag == 0){
 964   4                  if (cur_y == ey) //末点
 965   4                        bz = 1;
 966   4                      else
 967   4                        bz = 0;
 968   4            }
 969   3                else{
 970   4                  if (cur_y == by) //末点
 971   4                        bz = 1;
 972   4                      else
 973   4                        bz = 0;
 974   4                }
 975   3                if (bz == 1){
 976   4                  if (anti_work_flag == 0){
 977   5                        if (ex > cur_x)
 978   5                          x_z();
 979   5                        else if (ex < cur_x)
 980   5                          x_f();
 981   5                    cur_x = ex;
 982   5                XBYTE[xytype(cur_order)] = 0;
 983   5                    cur_order1 = (cur_order+1)%MAX_ORDER;
C51 COMPILER V7.09   MAINLOOP                                                              10/14/2004 20:25:36 PAGE 17  

 984   5                    cur_order = (cur_order+1)%MAX_ORDER;
 985   5                    cur_off = 0;
 986   5                        if (diandbz == 1){
 987   6                          diandbz = 0;
 988   6                          work_status = 0;
 989   6                  cc = 0x8c;
 990   6                  RAMCS = 1;
 991   6                  MCU_D12CS = 0;
 992   6                  D12_WriteEndpoint(3, 1, &cc);  
 993   6                        }
 994   5                        else{
 995   6                          if (XBYTE[xytype(cur_order)] == 0){
 996   7                            work_status = 2;
 997   7                                e_order = 0;
 998   7                        cur_order1 = 0;
 999   7                                cur_order = 0;
1000   7                            send_req_order(0);
1001   7                                close_gao_pin();
1002   7                              }
1003   6                        }
1004   5                      }
1005   4                      else{
1006   5                        if (bx > cur_x)
1007   5                          x_z();
1008   5                        else if (bx < cur_x)
1009   5                          x_f();
1010   5                    cur_x = bx;
1011   5                        anti_work_flag = 0;
1012   5                    cur_jing = old_cur_jing;
1013   5                    cur_off = 0;
1014   5                      }
1015   4                }
1016   3                else{//中间点
1017   4              l3 = bx + 1.0*(ex-bx)*(cur_y-by)/(ey-by);
1018   4                  if (l3 != cur_x){//X也要走
1019   5                        if (ex > bx)
1020   5                          x_z();
1021   5                        else
1022   5                          x_f();
1023   5                    cur_x = l3;
1024   5                      }
1025   4            }
1026   3              }
1027   2        }
1028   1        else if ((xyt == 2)||(xyt == 3)){
1029   2          bx = (long)(*((long *)(&(XBYTE[lpdata(cur_order,0)]))));
1030   2          by = (long)(*((long *)(&(XBYTE[lpdata(cur_order,1)]))));
1031   2          r = (ex*1.0-bx)*(ex*1.0-bx)+(ey*1.0-by)*(ey*1.0-by);
1032   2      
1033   2              if ((cur_x > bx)&&(cur_y >= by)){
1034   3                if (cur_x-bx > cur_y-by)
1035   3                  cc = 1;
1036   3                else
1037   3                  cc = 2;
1038   3              }
1039   2              else if ((cur_x <= bx)&&(cur_y > by)){
1040   3                if (bx-cur_x > cur_y-by)
1041   3                  cc = 4;
1042   3                else
1043   3                  cc = 3;
1044   3              }
1045   2              else if ((cur_x < bx)&&(cur_y <= by)){
C51 COMPILER V7.09   MAINLOOP                                                              10/14/2004 20:25:36 PAGE 18  

1046   3                if (bx-cur_x > by-cur_y)
1047   3                  cc = 5;
1048   3                else
1049   3                  cc = 6;
1050   3              }
1051   2              else{
1052   3                if (cur_x-bx > by-cur_y)
1053   3                  cc = 8;
1054   3                else
1055   3                  cc = 7;
1056   3              }
1057   2      
1058   2          if (xyt == 2){//ni yuan
1059   3            if ((cc == 2)||(cc == 3)){
1060   4                  if (XBYTE[xy(cur_order)] == 0){
1061   5                        if (anti_work_flag == 0)
1062   5                          cur_off ++;
1063   5                        else
1064   5                          cur_off --;
1065   5                      }
1066   4                      if (anti_work_flag == 0){
1067   5                        cur_x --;
1068   5                        x_f();
1069   5                      }
1070   4                      else{
1071   5                        cur_x ++;
1072   5                        x_z();
1073   5                      }
1074   4                }
1075   3                else if ((cc == 6)||(cc == 7)){
1076   4                  if (XBYTE[xy(cur_order)] == 0){
1077   5                        if (anti_work_flag == 0)
1078   5                          cur_off ++;
1079   5                        else
1080   5                          cur_off --;
1081   5                      }
1082   4                      if (anti_work_flag == 0){
1083   5                    cur_x ++;
1084   5                        x_z();
1085   5                      }
1086   4                      else{
1087   5                    cur_x --;
1088   5                        x_f();
1089   5                      }
1090   4                }
1091   3                else if ((cc == 4)||(cc == 5)){
1092   4                  if (XBYTE[xy(cur_order)] == 1){
1093   5                        if (anti_work_flag == 0)
1094   5                          cur_off ++;
1095   5                        else
1096   5                          cur_off --;
1097   5                      }
1098   4                      if (anti_work_flag == 0){
1099   5                    cur_y --;
1100   5                        y_f();
1101   5                      }
1102   4                      else{
1103   5                    cur_y ++;
1104   5                        y_z();
1105   5                      }
1106   4                }
1107   3                else{
C51 COMPILER V7.09   MAINLOOP                                                              10/14/2004 20:25:36 PAGE 19  

1108   4                  if (XBYTE[xy(cur_order)] == 1){
1109   5                        if (anti_work_flag == 0)
1110   5                          cur_off ++;
1111   5                        else
1112   5                          cur_off --;
1113   5                      }
1114   4                      if (anti_work_flag == 0){
1115   5                    cur_y ++;
1116   5                        y_z();
1117   5                      }
1118   4                      else{
1119   5                    cur_y --;
1120   5                        y_f();
1121   5                      }

⌨️ 快捷键说明

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