| ??? 01/04/06 23:27 Read: times |
#106530 - more than a couple of comments... Responding to: ???'s previous message |
Dear Jon,
You will certainly hate me but... I first wanted to comment on it line by line and also on the text, just it turned out to be really too much... To ease it a little bit, let me say that the formatting is really now very nice. I throw in the following (leaving the commenting to the reader):
CR EQU 13
LF EQU 10
RX_TAIL EQU 08H
RX_HEAD EQU 09H
TX_TAIL EQU 0AH
TX_HEAD EQU 0BH
RX_BUFF EQU 0CH
RX_BUFF_END EQU 13H
TX_BUFF EQU RX_BUFF_END+1 ;14H
TX_BUFF_END EQU 1FH
NEEDTI BIT 01H ;20H.1
SP_INIT EQU 30H
ORG 0
LJMP MAIN
ORG 23H
LJMP SER_ISR
ORG 40H
MAIN:
MOV SP,#SP_INIT
SER_INIT:
MOV SCON,#01010000B ;8N1
MOV TMOD,#00100001B
MOV TH1,#-3 ;9600Bd @ XTAL=11.0592MHz
SETB TR1
;
MOV RX_TAIL,#RX_BUFF
MOV RX_HEAD,#RX_BUFF
MOV TX_TAIL,#TX_BUFF
MOV TX_HEAD,#TX_BUFF
SETB NEEDTI
;
SETB ES
SETB EA
;
MOV DPTR,#SINIT
LCALL TEXT_OUT
;
LOOP:
LCALL GET_RX_NR
CJNE A,#4,MAIN_X2
MAIN_X2:
JC LOOP
MOV R2,A
MAIN_X3:
LCALL GET_CHAR
LCALL PUT_CHAR_WAIT
DJNZ R2,MAIN_X3
SJMP LOOP
;
;
SINIT:
DB CR,LF
DB 'SERIAL PORT INITIALISED!'
DB CR,LF,0
;***************************
GET_RX_NR:
CLR C
MOV A,RX_HEAD
SUBB A,RX_TAIL
JNC GET_RX_NR_X1
CPL A
INC A
GET_RX_NR_X1:
RET
;***************************
GET_CHAR_WAIT:
; LCALL GET_CHAR
; JC GET_CHAR_WAIT
; RET
MOV A,RX_TAIL
CJNE A,RX_HEAD,GET_CHAR_X1
SJMP GET_CHAR_WAIT
GET_CHAR:
MOV A,RX_TAIL
CJNE A,RX_HEAD,GET_CHAR_X1
SETB C
RET
GET_CHAR_X1:
INC A
CJNE A,#RX_BUFF_END+1,GET_CHAR_X2
MOV A,#RX_BUFF
GET_CHAR_X2:
XCH A,RX_TAIL
MOV R0,A
MOV A,@R0
CLR C
RET
;***************************
PUT_CHAR_WAIT:
; LCALL PUT_CHAR
; JC PUT_CHAR_WAIT
; RET
MOV R0,A
MOV A,TX_HEAD
INC A
CJNE A,#TX_BUFF_END+1,PUT_CHAR_WAIT_X1
MOV A,#TX_BUFF
PUT_CHAR_WAIT_X1:
CJNE A,TX_TAIL,PUT_CHAR_X2
SJMP PUT_CHAR_WAIT_X1
PUT_CHAR:
MOV R0,A
MOV A,TX_HEAD
INC A
CJNE A,#TX_BUFF_END+1,PUT_CHAR_X1
MOV A,#TX_BUFF
PUT_CHAR_X1:
CJNE A,TX_TAIL,PUT_CHAR_X2
MOV A,R0
SETB C
RET
PUT_CHAR_X2:
XCH A,TX_HEAD
XCH A,R0
MOV @R0,A
JNB NEEDTI,PUT_CHAR_X3
CLR NEEDTI
SETB TI
PUT_CHAR_X3:
CLR C
RET
;***************************
TEXT_OUT:
CLR A
MOVC A,@A+DPTR
INC DPTR
JZ TEXT_OUT_X1
LCALL PUT_CHAR_WAIT
SJMP TEXT_OUT
TEXT_OUT_X1:
RET
;***************************
SER_ISR:
PUSH PSW
PUSH ACC
MOV A,R0
PUSH ACC
JNB RI,SER_ISR_TX
SER_ISR_RX:
CLR RI
MOV A,RX_HEAD
INC A
CJNE A,#RX_BUFF_END+1,SER_ISR_RX1
MOV A,#RX_BUFF
SER_ISR_RX1:
CJNE A,RX_TAIL,SER_ISR_RX2
;in PC, a beep comes here...
SJMP SER_ISR_TX
SER_ISR_RX2:
XCH A,RX_HEAD
MOV R0,A
MOV @R0,SBUF
SER_ISR_TX:
JNB TI,SER_ISR_END
CLR TI
MOV A,TX_TAIL
CJNE A,TX_HEAD,SER_ISR_TX1
SETB NEEDTI
SJMP SER_ISR_END
SER_ISR_TX1:
INC A
CJNE A,#TX_BUFF_END+1,SER_ISR_TX2
MOV A,#TX_BUFF
SER_ISR_TX2:
XCH A,TX_TAIL
MOV R0,A
MOV SBUF,@R0
SER_ISR_END:
POP ACC
MOV R0,A
POP ACC
POP PSW
RETI
END
Just one more remark for the hardware part, you mentioned you will replace the DTE/DCE by PC/modem... And I would spare down the 25-pin DSUB description, I think it is really rarely used today. Jan Waclawek |
| Topic | Author | Date |
| Feedback needed | 01/01/70 00:00 | |
| Couple of ideas | 01/01/70 00:00 | |
| Missing | 01/01/70 00:00 | |
| the source... | 01/01/70 00:00 | |
| Stupid EIA | 01/01/70 00:00 | |
| Maybe a Name change? | 01/01/70 00:00 | |
| minor but annoying ... | 01/01/70 00:00 | |
| USB | 01/01/70 00:00 | |
| Limited Experience | 01/01/70 00:00 | |
| known bad USB/serial | 01/01/70 00:00 | |
| FYI - Targus PA088 | 01/01/70 00:00 | |
| thoughts | 01/01/70 00:00 | |
| I am so stupid | 01/01/70 00:00 | |
| Kickstart | 01/01/70 00:00 | |
| attribution | 01/01/70 00:00 | |
| The ONE thing I always have to look up a | 01/01/70 00:00 | |
| Ok - Second revision, but still working, | 01/01/70 00:00 | |
| Nice | 01/01/70 00:00 | |
| OK | 01/01/70 00:00 | |
| MAX202 vs. MAX232A | 01/01/70 00:00 | |
| or the 232A | 01/01/70 00:00 | |
| Polled; Interrupt | 01/01/70 00:00 | |
| polled tx | 01/01/70 00:00 | |
| Assorted small ideas | 01/01/70 00:00 | |
| Not a good idea | 01/01/70 00:00 | |
| Serial speeds? | 01/01/70 00:00 | |
| Enhanced specifications | 01/01/70 00:00 | |
| That's a strange spec | 01/01/70 00:00 | |
| formal stuff | 01/01/70 00:00 | |
| formal | 01/01/70 00:00 | |
| who's the intended audience | 01/01/70 00:00 | |
| 3rd Revision | 01/01/70 00:00 | |
| Busy? | 01/01/70 00:00 | |
| more than a couple of comments... | 01/01/70 00:00 | |
| So..... | 01/01/70 00:00 | |
| what I like or not... | 01/01/70 00:00 | |
| comments | 01/01/70 00:00 | |
| Comments on Comments | 01/01/70 00:00 | |
| bah... | 01/01/70 00:00 | |
| more problems | 01/01/70 00:00 | |
| RE: Problems | 01/01/70 00:00 | |
| Something Strange | 01/01/70 00:00 | |
| Nope.... | 01/01/70 00:00 | |
| interrupt | 01/01/70 00:00 | |
| All members will enjoy | 01/01/70 00:00 | |
Intel serial intro app note | 01/01/70 00:00 |



