| ??? 10/28/02 10:41 Read: times |
#31540 - RE: [C51] is bug in keil c51 7.01 ? |
the src file and compiler direcive can found in last post
RSEG ?PR?serial?SERIAL_S1
USING 2
serial:
PUSH ACC
PUSH DPH
PUSH DPL
PUSH PSW
USING 2
MOV PSW,#010H
; SOURCE LINE # 47
; register char buf;
; if (RI0 != 0){
; SOURCE LINE # 49
JB RI0,$ + 5H
AJMP ?C0006
; RI0 = 0;
; SOURCE LINE # 50
CLR RI0
; buf = SBUF0 ;
; SOURCE LINE # 51
;---- Variable 'buf?141' assigned to Register 'R6' ----
MOV R6,SBUF0
; //STX CHK : if error reset serial buffer
; //if (newpack) return; //if last pack no read exit //DEBUG!
; if (buf == STX){//REALLY RECIVE OF stx RESET PACK
; SOURCE LINE # 54
MOV A,R6
XRL A,#02H
JNZ ?C0007
; outchar(ACK); //echo
; SOURCE LINE # 55
MOV R7,#06H
LCALL _outchar
; PACK_PN = 0;
; SOURCE LINE # 56
MOV PACK_PN,A
; PACK_DN = 0;
; SOURCE LINE # 57
MOV PACK_DN,A
; PackData[0] = 0;
; SOURCE LINE # 58
MOV R0,#LOW (PackData)
MOVX @R0,A
; CMD_LOC[0] = &PackData;
; SOURCE LINE # 59
MOV R0,#LOW (CMD_LOC)
MOV A,#LOW (PackData)
MOVX @R0,A
; DataPointer = &PackData;
; SOURCE LINE # 60
MOV DataPointer,#0FEH
MOV DataPointer+01H,#HIGH (PackData)
MOV DataPointer+02H,A
; PackState = 1; //inpack = 1;
; SOURCE LINE # 61
MOV PackState,#01H
; //reset SendPack
; InSPack = 0;
; SOURCE LINE # 63
; StartSPack = 0;
; SOURCE LINE # 64
AJMP ?C0028
; //
; return;
; }
; SOURCE LINE # 67
?C0007:
; if (inpack){
; SOURCE LINE # 68
JNB inpack,?C0009
; if (buf == ETX){
; SOURCE LINE # 69
CJNE R6,#03H,?C0010
; outchar(NAK);
; SOURCE LINE # 70
MOV R7,#015H
LCALL _outchar
; PackState = 0x0A;
; SOURCE LINE # 71
MOV PackState,#0AH
AJMP ?C0008
; //isr_send_signal (SerialCMD); RTX51;
; return;
; }
; SOURCE LINE # 74
?C0010:
; if (buf == ESC) {
; SOURCE LINE # 75
CJNE R6,#01BH,?C0011
; outchar(ESC);
; SOURCE LINE # 76
MOV R7,#01BH
LCALL _outchar
; PackState = 0;
; SOURCE LINE # 77
MOV PackState,#00H
AJMP ?C0008
; return;
; }
; SOURCE LINE # 79
?C0011:
; outchar(buf);
; SOURCE LINE # 80
MOV R7,AR6
LCALL _outchar
; if (buf == 0) CMD_LOC[++PACK_PN] = DataPointer;
; SOURCE LINE # 81
MOV A,R6
JNZ ?C0012
INC PACK_PN
MOV A,#LOW (CMD_LOC)
ADD A,PACK_PN
MOV R0,A
MOV A,DataPointer+02H
MOVX @R0,A
?C0012:
; //PackData[PACK_DN] = DataPointer; not req. see next line !
; *DataPointer = buf;
; SOURCE LINE # 83
MOV R3,DataPointer
MOV R2,DataPointer+01H
MOV R1,DataPointer+02H
MOV A,R6
LCALL ?C?CSTPTR
; DataPointer++;
; SOURCE LINE # 84
MOV A,#01H
ADD A,DataPointer+02H
MOV DataPointer+02H,A
CLR A
ADDC A,DataPointer+01H
MOV DataPointer+01H,A
; PACK_DN++;
; SOURCE LINE # 85
INC PACK_DN
SJMP ?C0008
; return;
; }//end inpack
; SOURCE LINE # 87
?C0009:
; if (!StartSPack && !InSPack) return; //realy in send pack
; SOURCE LINE # 88
JB StartSPack,?C0013
JNB InSPack,?C0008
?C0013:
; if (StartSPack){
; SOURCE LINE # 89
JNB StartSPack,?C0014
; if (buf == ACK) {
; SOURCE LINE # 90
MOV A,R6
XRL A,#06H
JNZ ?serial?ERSP
; StartSPack = 0;
; SOURCE LINE # 91
CLR StartSPack
; InSPack = 1;
; SOURCE LINE # 92
SETB InSPack
; }
; SOURCE LINE # 93
SJMP ?C0018
; else goto ERSP;
; SOURCE LINE # 94
; }
; SOURCE LINE # 95
?C0014:
; else if (buf != *(SDPointer -1)) goto ERSP; //cheack good echo
; SOURCE LINE # 96
MOV R3,SDPointer
MOV R2,SDPointer+01H
MOV R1,SDPointer+02H
MOV DPTR,#0FFFFH
LCALL ?C?CLDOPTR
XRL A,R6
JNZ ?serial?ERSP
?C0018:
; if (buf == NAK){
; SOURCE LINE # 97
CJNE R6,#015H,?C0020
; InSPack = 0;
; SOURCE LINE # 98
CLR InSPack
SJMP ?C0008
; return; //end of good send;
; }
; SOURCE LINE # 100
?C0020:
; if (!*SDPointer){
; SOURCE LINE # 101
MOV R3,SDPointer
MOV R2,SDPointer+01H
MOV R1,SDPointer+02H
LCALL ?C?CLDPTR
MOV R6,A
JNZ ?C0021
; outchar(ETX);
; SOURCE LINE # 102
MOV R7,#03H
LCALL _outchar
SJMP ?C0008
; return;
; }
; SOURCE LINE # 104
?C0021:
; outchar(*SDPointer);
; SOURCE LINE # 105
MOV R7,AR6
LCALL _outchar
; SDPointer++;
; SOURCE LINE # 106
MOV A,#01H
ADD A,SDPointer+02H
MOV SDPointer+02H,A
CLR A
ADDC A,SDPointer+01H
MOV SDPointer+01H,A
SJMP ?C0008
; return;
; //--------------- send ERROR Routine
; ERSP:
; SOURCE LINE # 109
?serial?ERSP:
; outchar(ESC);
; SOURCE LINE # 110
MOV R7,#01BH
LCALL _outchar
; InSPack = 0;
; SOURCE LINE # 111
?C0028:
CLR InSPack
; StartSPack = 0;
; SOURCE LINE # 112
CLR StartSPack
SJMP ?C0008
; return;
; //------------------ti
; }
; SOURCE LINE # 115
?C0006:
; if (TI0 != 0){
; SOURCE LINE # 116
JNB TI0,?C0008
; TI0 = 0 ;
; SOURCE LINE # 117
CLR TI0
; TI_E = 0;
; SOURCE LINE # 118
CLR TI_E
; }
; SOURCE LINE # 119
; }
; SOURCE LINE # 120
?C0008:
POP PSW
POP DPL
POP DPH
POP ACC
RETI
; END OF serial
|
| Topic | Author | Date |
| [C51] is bug in keil c51 7.01 ? | 01/01/70 00:00 | |
| RE: [C51] is bug in keil c51 7.01 ? | 01/01/70 00:00 | |
| RE: [C51] is bug in keil c51 7.01 ? -zbi | 01/01/70 00:00 | |
| RE: [C51] is bug in keil c51 7.01 ? -zbi | 01/01/70 00:00 | |
| RE: [C51] is bug in keil c51 7.01 ? -zbi | 01/01/70 00:00 | |
| RE: Please re-post the code! | 01/01/70 00:00 | |
| RE: parentheses, braces, brackets | 01/01/70 00:00 | |
| RE: [C51] is bug in keil c51 7.01 ? | 01/01/70 00:00 | |
| RE: [C51] is bug in keil c51 7.01 ? | 01/01/70 00:00 | |
| RE: [C51] is bug in keil c51 7.01 ? | 01/01/70 00:00 | |
| RE: [C51] is bug in keil c51 7.01 ? | 01/01/70 00:00 | |
| RE: [C51] is bug in keil c51 - jon | 01/01/70 00:00 | |
| RE: [C51] is bug in keil c51 7.01 ? | 01/01/70 00:00 | |
| RE: [C51] No bug! | 01/01/70 00:00 | |
| RE: [C51] No bug! | 01/01/70 00:00 | |
RE: [C51] is bug in keil c51 7.01 ? | 01/01/70 00:00 |



