Мне нужно прочитать данные из usart, используя прерывание int0, но я не понимаю, как это сделать. Это задание от моего преподавателя в университете. Я могу читать данные из usart, используя прерывание usart. Я пытался разрешить чтение из usart с помощью кнопки, но я думаю, что это странно. Усарт может читать только один байт. Можно ли прочитать несколько байтов от usart? Может быть, есть какие-то настройки в виртуальном терминале?
Мой проект в протеусе.
.equ bitrate=9600
.equ baud =1000000/(16*bitrate)-1
;====================================================================
; RESET and INTERRUPT VECTORS
;====================================================================
; Reset Vector
.org 0
rjmp Start
.org 0x001
rjmp int0_interrupt
;.org 0x002
;rjmp int1_interrupt
.org 0x00b
rjmp usart_rxc
;====================================================================
; CODE SEGMENT
;====================================================================
Start:
ldi r16, low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16
ldi r16, high(baud)
out ubrrh,r16
ldi r16, low(baud)
out ubrrl, r16
ldi r16,0xff
out ddra,r16
ldi r16,0b00000010 ;
out portd,r16
ldi r16,$0a;
out mcucr,r16
ldi r16,$c0;
out gimsk,r16
clr r16;
out gifr,r16
ldi r16, 0b10010000;
out ucsrb,r16
ldi r16,0b10000110
out ucsrc,r16
ldi r16,$70
mov xl,r16
clr xh
clr r18
sei;
m1:
cpi r18,3
brne m1
rjmp k
int0_interrupt:
cpi r17,0x00
breq c1
cpi r17,0xff
breq c2
c1:
ldi r17, 0xff
out porta,r17
rjmp exit
c2:
ldi r17,0x00
out porta,r17
rjmp exit
exit:
reti
usart_rxc:
cpi r17, 0xff
brne exit2
in r20,udr
st x+,r20
exit2:
reti
k:
Loop:
rjmp Loop