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 | ; |