Subversion Repositories pentevo

Rev

Rev 291 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 291 Rev 352
Line 14... Line 14...
14
UART_TX_LN:     .BYTE   1
14
UART_TX_LN:     .BYTE   1
15
UART_RX_HD:     .BYTE   1
15
UART_RX_HD:     .BYTE   1
16
UART_RX_TL:     .BYTE   1
16
UART_RX_TL:     .BYTE   1
17
UART_RX_LN:     .BYTE   1
17
UART_RX_LN:     .BYTE   1
18
;        .ORG    $0300                   ;см. SERVICE.ASM
18
;        .ORG    $0300                   ;см. SERVICE.ASM
19
;.EQU    UART_TXBSIZE    =128            ;размер буфера д.б. равен СТЕПЕНЬ_ДВОЙКИ байт (...32,64,128,256)
19
;.EQU    UART_TXBSIZE    =128            ;размер буфера д.б. равен СТЕПЕНЬ_ДВОЙКИ байт (32,64,128 или 256)
20
;UART_TX_BUFF:   .BYTE   UART_TXBSIZE    ;адрес д.б. кратен UART_TXBSIZE
20
;UART_TX_BUFF:   .BYTE   UART_TXBSIZE    ;адрес д.б. кратен UART_TXBSIZE
21
;.EQU    UART_RXBSIZE    =128            ;размер буфера д.б. равен СТЕПЕНЬ_ДВОЙКИ байт
21
;.EQU    UART_RXBSIZE    =128            ;размер буфера д.б. равен СТЕПЕНЬ_ДВОЙКИ байт (32,64,128 или 256)
22
;UART_RX_BUFF:   .BYTE   UART_RXBSIZE    ;адрес д.б. кратен UART_RXBSIZE
22
;UART_RX_BUFF:   .BYTE   UART_RXBSIZE    ;адрес д.б. кратен UART_RXBSIZE
23
.CSEG
23
.CSEG
24
;
24
;
25
;--------------------------------------
25
;--------------------------------------
26
;
26
;
Line 103... Line 103...
103
        ORI     XL,LOW(UART_RX_BUFF)
103
        ORI     XL,LOW(UART_RX_BUFF)
104
        STS     UART_RX_HD,XL
104
        STS     UART_RX_HD,XL
105
        POPX
105
        POPX
106
        INC     TEMP
106
        INC     TEMP
107
        STS     UART_RX_LN,TEMP
107
        STS     UART_RX_LN,TEMP
108
        CPI     TEMP,UART_RXBSIZE-16
108
        CPI     TEMP,UART_RXBSIZE-20
109
        BRCS    U1RX9
109
        BRCS    U1RX9
-
 
110
        SBRC    FLAGS1,4
110
        RTS_SET
111
        RTS_SET
111
U1RX9:
112
U1RX9:
112
        POP     DATA
113
        POP     DATA
113
        POP     TEMP
114
        POP     TEMP
114
        OUT     SREG,TEMP
115
        OUT     SREG,TEMP
Line 123... Line 124...
123
        PUSH    TEMP
124
        PUSH    TEMP
124
 
125
 
125
        LDS     TEMP,UART_TX_LN
126
        LDS     TEMP,UART_TX_LN
126
        TST     TEMP ;есть что в буфере?
127
        TST     TEMP ;есть что в буфере?
127
        BREQ    U1TX1
128
        BREQ    U1TX1
-
 
129
        SBRS    FLAGS1,4
-
 
130
        RJMP    U1TX2
-
 
131
        SBIC    PINB,6
-
 
132
        RJMP    U1TX1
128
 
133
 
129
        PUSHX
134
U1TX2:  PUSHX
130
        PUSH    DATA
135
        PUSH    DATA
131
        LDI     XH,HIGH(UART_TX_BUFF)
136
        LDI     XH,HIGH(UART_TX_BUFF)
132
        LDS     XL,UART_TX_TL
137
        LDS     XL,UART_TX_TL
133
        LD      DATA,X+
138
        LD      DATA,X+
134
        OUTPORT UDR1,DATA
139
        OUTPORT UDR1,DATA
Line 138... Line 143...
138
        DEC     TEMP
143
        DEC     TEMP
139
        STS     UART_TX_LN,TEMP
144
        STS     UART_TX_LN,TEMP
140
        POP     DATA
145
        POP     DATA
141
        POPX
146
        POPX
142
        RJMP    U1TX9
147
        RJMP    U1TX9
143
U1TX1:
148
 
144
        INPORT  TEMP,UCSR1B
149
U1TX1:  INPORT  TEMP,UCSR1B
145
        CBR     TEMP,(1<<UDRIE) ;Запрещаем прерывания Empty Data Register
150
        CBR     TEMP,(1<<UDRIE) ;Запрещаем прерывания Empty Data Register
146
        OUTPORT UCSR1B,TEMP
151
        OUTPORT UCSR1B,TEMP
-
 
152
 
147
U1TX9:  POP     TEMP
153
U1TX9:  POP     TEMP
148
        OUT     SREG,TEMP
154
        OUT     SREG,TEMP
149
        POP     TEMP
155
        POP     TEMP
150
        RETI
156
        RETI
151
;
157
;
Line 153... Line 159...
153
;Put byte to UART buffer
159
;Put byte to UART buffer
154
;in:    DATA
160
;in:    DATA
155
UART_PUTCHAR:
161
UART_PUTCHAR:
156
        PUSH    TEMP
162
        PUSH    TEMP
157
        PUSHX
163
        PUSHX
-
 
164
 
-
 
165
U_PCHR1:SBRC    FLAGS1,4
-
 
166
        RCALL   UART_CHK_CTS
158
U_PCHR1:LDS     TEMP,UART_TX_LN
167
        LDS     TEMP,UART_TX_LN
159
        CPI     TEMP,UART_TXBSIZE ;буфер полный?
168
        CPI     TEMP,UART_TXBSIZE ;буфер полный?
160
        BRCC    U_PCHR1
169
        BRCC    U_PCHR1
-
 
170
 
161
        LDI     XH,HIGH(UART_TX_BUFF)
171
        LDI     XH,HIGH(UART_TX_BUFF)
162
        LDS     XL,UART_TX_HD
172
        LDS     XL,UART_TX_HD
163
        ST      X+,DATA
173
        ST      X+,DATA
164
        CLI
174
        CLI
165
        LDS     TEMP,UART_TX_LN
175
        LDS     TEMP,UART_TX_LN
Line 168... Line 178...
168
        SEI
178
        SEI
169
        ANDI    XL,UART_TXBSIZE-1
179
        ANDI    XL,UART_TXBSIZE-1
170
        ORI     XL,LOW(UART_TX_BUFF)
180
        ORI     XL,LOW(UART_TX_BUFF)
171
        STS     UART_TX_HD,XL
181
        STS     UART_TX_HD,XL
172
 
182
 
-
 
183
        SBRS    FLAGS1,4
173
        INPORT  TEMP,UCSR1B
184
        RJMP    U_PCHR8
174
        SBRC    TEMP,UDRIE      ;Проверяем запрет прерывания Empty Data Register
185
        SBIC    PINB,6
175
        RJMP    U_PCHR9
186
        RJMP    U_PCHR9
-
 
187
U_PCHR8:INPORT  TEMP,UCSR1B
176
        SBR     TEMP,(1<<UDRIE) ;Разрешаем прерывания Empty Data Register
188
        SBR     TEMP,(1<<UDRIE) ;Разрешаем прерывания Empty Data Register
177
        OUTPORT UCSR1B,TEMP
189
        OUTPORT UCSR1B,TEMP
178
U_PCHR9:
190
 
179
        POPX
191
U_PCHR9:POPX
180
        POP     TEMP
192
        POP     TEMP
181
        RET
193
        RET
182
;
194
;
183
;--------------------------------------
195
;--------------------------------------
184
;Get byte from UART buffer
196
;Get byte from UART buffer
Line 196... Line 208...
196
        CLI
208
        CLI
197
        LDS     TEMP,UART_RX_LN
209
        LDS     TEMP,UART_RX_LN
198
        DEC     TEMP
210
        DEC     TEMP
199
        STS     UART_RX_LN,TEMP
211
        STS     UART_RX_LN,TEMP
200
        SEI
212
        SEI
201
        CPI     TEMP,UART_RXBSIZE-17
213
        CPI     TEMP,UART_RXBSIZE-21
202
        BRCC    U_GCHR1
214
        BRCC    U_GCHR1
203
        RTS_CLR
215
        RTS_CLR
204
U_GCHR1:ANDI    XL,UART_RXBSIZE-1
216
U_GCHR1:ANDI    XL,UART_RXBSIZE-1
205
        ORI     XL,LOW(UART_RX_BUFF)
217
        ORI     XL,LOW(UART_RX_BUFF)
206
        STS     UART_RX_TL,XL
218
        STS     UART_RX_TL,XL
Line 258... Line 270...
258
MSG_DUMPHEAD:
270
MSG_DUMPHEAD:
259
        .DB     $0D,$0A,$3B,"     .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F",0
271
        .DB     $0D,$0A,$3B,"     .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F",0
260
;
272
;
261
;--------------------------------------
273
;--------------------------------------
262
;
274
;
-
 
275
UART_CHK_CTS:
-
 
276
        SBIC    PINB,6
-
 
277
        RET
-
 
278
        PUSH    TEMP
-
 
279
        LDS     TEMP,UART_TX_LN
-
 
280
        TST     TEMP
-
 
281
        BREQ    UART_CHKCTS9
-
 
282
        INPORT  TEMP,UCSR1B
-
 
283
        SBR     TEMP,(1<<UDRIE) ;Разрешаем прерывания Empty Data Register
-
 
284
        OUTPORT UCSR1B,TEMP
-
 
285
UART_CHKCTS9:
-
 
286
        POP     TEMP
-
 
287
        RET
-
 
288
;
-
 
289
;--------------------------------------
-
 
290
;