📄 main.lst
字号:
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 + -