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

📄 main.lst

📁 此程序为twell8806驱动程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 968          
 969          void MonWriteI2Cn_(BYTE addr, BYTE *val, BYTE cnt) 
 970          {
 971   1              BYTE i;
 972   1      
 973   1              Printf("Write ");
 974   1              for(i=0; i<cnt; i++) {
 975   2                      Printf("%02xh ", (WORD)val[i]);
 976   2              }
 977   1              Printf("to [Adrs(%02xh)", (WORD)addr);
 978   1              if( !WriteI2Cn_(addr, val, cnt) )               //LJY001127
 979   1                      ePuts("---> Fail!! ");  
 980   1      }
 981          //=============================================================================
 982          //              I2C Edit Read                                                          
 983          //=============================================================================
C51 COMPILER V7.50   MAIN                                                                  08/20/2007 10:23:30 PAGE 17  

 984          BYTE MonReadI2C(BYTE addr, BYTE index)
 985          {
 986   1              BYTE val;
 987   1      
 988   1              val = ReadI2C(addr, index);
 989   1              Printf("Read [Adrs:%02xh,%02xh] %02xh", (WORD)addr, (WORD)index, (WORD)val);
 990   1      
 991   1              return val;
 992   1      }
 993          
 994          void MonReadI2Cmn(BYTE addr, BYTE *wrdata, BYTE argcnt)
 995          {
 996   1              BYTE i, rcnt;
 997   1      
 998   1              Printf("Read  [Adrs:%02xh ", (WORD)addr);
 999   1              for(i=0; i<argcnt-1; i++)
1000   1                      Printf(" Index:%02xh ", (WORD)wrdata[i] );
1001   1              Printf("] ");
1002   1      
1003   1              rcnt = wrdata[argcnt-1];
1004   1              ReadI2Cmn(addr, argcnt-1, rcnt, wrdata);
1005   1      
1006   1              for(i=0; i<rcnt; i++)
1007   1                      Printf("%02xh ", (WORD)wrdata[i]);
1008   1      }
1009          //=============================================================================
1010          //              Convert ASCII to Binery                                             
1011          //=============================================================================
1012          BYTE Asc1Bin(BYTE asc)
1013          {
1014   1              if(asc>='0' && asc <='9') return (asc - '0');
1015   1              if(asc>='a' && asc <='f') return (asc - 'a' + 0x0a);
1016   1              if(asc>='A' && asc <='F') return (asc - 'A' + 0x0a);
1017   1      }
1018          
1019          BYTE Asc2Bin(PDATA_P BYTE *s)
1020          {
1021   1              BYTE bin;
1022   1      
1023   1              bin = 0;
1024   1              while(*s != '\0' && *s !=' ') {
1025   2                      bin = bin<<4;
1026   2                      bin = bin + Asc1Bin(*s);
1027   2                      s++;
1028   2              }
1029   1              return (bin);
1030   1      }
1031          #endif // SERIAL
1032          
1033          
1034          ///////////////////////////////////////////////////////////////////////////////
1035          
1036          //=============================================================================
1037          //              Prompt                                                                         
1038          //=============================================================================
1039          #include <stdio.h>
1040          void Prompt(void)
1041          {
1042   1              Printf("\r\nI2C[%02x]>", (WORD)I2CAddressDeb);
1043   1      }
1044          
1045          #define FPHS_P_T                5
C51 COMPILER V7.50   MAIN                                                                  08/20/2007 10:23:30 PAGE 18  

1046          
1047          #ifdef SERIAL
1048          void DebugKeyIn(BYTE ikey)
1049          {
1050   1              BYTE i; 
1051   1              static bit comment=0;
1052   1      
1053   1              //----- if comment, echo back and ignore -----
1054   1              if( comment ) {
1055   2                      if( ikey=='\r' ) 
1056   2                              comment = 0;
1057   2                      else {
1058   3                              RS_tx(ikey);
1059   3                              return;
1060   3                      }
1061   2              }
1062   1              else if( ikey==';' ) {
1063   2                      comment = 1;
1064   2                      RS_tx(ikey);
1065   2                      return;
1066   2              }
1067   1      
1068   1              //----- command ------------------------------
1069   1              if ((ikey == '\r')||(ikey == '/')) {
1070   2      
1071   2                      comment = 0;
1072   2      
1073   2                      if (ikey == '/') {      // Repeat 
1074   3                              PutsP(commdbuf);
1075   3                              commdptr = bptr;
1076   3                              commdbuf[0]=arg[0];
1077   3                      }
1078   2                      commdbuf[commdptr] = '\0';
1079   2                      bptr = commdptr;
1080   2                      commdptr = 0; 
1081   2                      argn = 0;
1082   2                      eol     = 0;
1083   2                      cerror = 0;
1084   2                                                              // Ex) I2C[xx]>C 00 0 00                                                                
1085   2                      while(commdbuf[commdptr]==' ') commdptr++;
1086   2      
1087   2                      if (commdbuf[commdptr]=='\0') eol = 1;
1088   2      
1089   2                      arg[argn++] = commdbuf[commdptr++];
1090   2      
1091   2                      while(!cerror && !eol) {
1092   3                              if (commdbuf[commdptr]!=' '&& commdbuf[commdptr] !='\0') {
1093   4                                      cerror = 1;break;
1094   4                              }
1095   3                              while(commdbuf[commdptr]==' ') commdptr++;
1096   3                              if (commdbuf[commdptr] =='\0'){
1097   4                                      eol = 1;break;
1098   4                              }
1099   3                              arg[argn++] = Asc2Bin(&commdbuf[commdptr]);
1100   3                              while(commdbuf[commdptr]!=' ' && commdbuf[commdptr]!='\0' ) {
1101   4                                      commdptr++;
1102   4                              }
1103   3                      }
1104   2      
1105   2                      if (cerror) {
1106   3                              Puts(" <- Error!!");
1107   3                              Prompt();
C51 COMPILER V7.50   MAIN                                                                  08/20/2007 10:23:30 PAGE 19  

1108   3                              commdptr = 0;
1109   3                              commdbuf[0]='\0';
1110   3                      }
1111   2                      else {
1112   3                              //--------------------------------------------------
1113   3                              // Check Indirect command
1114   3                              switch(arg[0]) {
1115   4                              case 'i':       
1116   4                              case 'I':
1117   4                              case 'o':
1118   4                              case 'O':
1119   4                                              indirect=1;     break;
1120   4                              case ',':
1121   4                              case '>':
1122   4                              case '<':
1123   4                              case '.':                       break;
1124   4                              default: indirect=0;    break;
1125   4                              }
1126   3      
1127   3                              //--------------------------------------------------    
1128   3                              switch(arg[0]) {
1129   4      
1130   4                              //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1131   4                              case '(':       // New read
1132   4                                      indirect=0;
1133   4                                      i = ReadI2C( arg[1], arg[2] );
1134   4                                      Printf("\n<R>%02bx[%02bx]=%02bx", arg[1], arg[2], i);
1135   4                                      break;
1136   4      
1137   4                              case ')':       // New write
1138   4                                      indirect=0;
1139   4                                      WriteI2C( arg[1], arg[2], arg[3] );
1140   4      
1141   4                                      i = ReadI2C( arg[1], arg[2] );
1142   4                                      Printf("\n<R>%02bx[%02bx]=%02bx", arg[1], arg[2], i);
1143   4                                      break;
1144   4      
1145   4                              case '&':       // New Dump
1146   4                                      indirect=0;
1147   4                                      for(i=arg[2]; i<=arg[3]; i++) {
1148   5                                              Printf("\n<R>%02bx[%02bx]=%02bx", arg[1], i, ReadI2C(arg[1], i) );
1149   5                                              if( i==0xff ) break;
1150   5                                      }
1151   4                                      break;
1152   4                              case '^':
1153   4                                      for(i=0x80; i<=0xfe; i++) { //Access Ticon Register.
1154   5                                              WriteI2C( arg[1], 0xc5, i );
1155   5                                              Printf("\n<R>%02bx[%02bx]=%02bx", arg[1], 0xc5, ReadI2C(arg[1], 0xc5) );
1156   5                                              Printf("\n<R>%02bx[%02bx]=%02bx", arg[1], 0xc6, ReadI2C(arg[1], 0xc6) );
1157   5                                      }
1158   4                                      break;
1159   4      
1160   4                              case '%':       // Dump OSD
1161   4                                      for(i=0; i<8; i++) {
1162   5                                              BYTE a;
1163   5                                              WriteI2C( arg[1], 0x9e, i );
1164   5                                              Printf("\n<R>%02bx[%02bx]=%02bx", arg[1], 0x9e, ReadI2C(arg[1], 0x9e) );
1165   5                                              for(a=0x9e; a<=0xad; a++) {
1166   6                                                      Printf("\n<R>%02bx[%02bx]=%02bx", arg[1], a, ReadI2C(arg[1], a) );
1167   6                                              }
1168   5                                      }
1169   4                                      break;
C51 COMPILER V7.50   MAIN                                                                  08/20/2007 10:23:30 PAGE 20  

1170   4                                              
1171   4                              //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1172   4                              //------------------------------------------------------------------
1173   4      /*
1174   4                              case '#':
1175   4                                      {
1176   4                                              BYTE i, j;
1177   4      
1178   4                                              for(j=0; j<8; j++) {
1179   4                                                      Printf("\r\nWindow %bd :", j );
1180   4                                                      WriteTW88(0x9e, j);
1181   4                                                      for(i=0x9e; i<=0xad; i++) {
1182   4                                                              Printf(" %02bx", ReadTW88(i) );
1183   4                                                      }
1184   4                                              }
1185   4                                      }
1186   4                                      break;
1187   4      
1188   4      
1189   4                              case 'a':
1190   4                              case 'A':
1191   4                                      switch( arg[1] ) {
1192   4                                      case 0:
1193   4                                              while(1) {
1194   4                                                      Printf("\r\nReg1:0x%x, Reg1C:0x%x", (WORD)ReadDecoder(CSTATUS), (WORD)ReadDecoder(SDT) );
1195   4                                                      if( RS_ready() ) {
1196   4                                                              RS_rx();
1197   4                                                              break;
1198   4                                                      }
1199   4                                              }
1200   4                                              break;
1201   4      
1202   4                                      case 1:
1203   4                                              {
1204   4                                              BYTE IRint;
1205   4                                              while(1) {
1206   4                                                      
1207   4                                                      IRint = P3_2;
1208   4                   

⌨️ 快捷键说明

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