АпаратнотАУпрограмний комплекс GSM-МТМ
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
iдентифiкацiСЧ переривання
mov dx,IIR[si]
in al,dx
; визначаСФмо причину переривання
; виявлено сотояние "BREAK" чи вiдбулася помилка
cmp al,0
je MSTAT_int
; данi прийнятi i доступнi для читання
cmp al,4
je RX_int
; буфер передавача порожнiй
cmp al,2
je TX_int
; змiнився стан лiнiй CTS, RI, DCD, DSR
cmp al,6
je LSTAT_int
; завершуСФмо обробку переривань
jmp FAR PTR exit_handler
LSTAT_int:
; зчитуСФмо регiстр стану лiнiСЧ i викликаСФмо функцiю
; set_err, що визначить причину переривання
mov dx,LSR[si]
in al,dx
mov al,0FFh
mov RING[si],al
call set_err
jmp next_inter
MSTAT_int:
; зчитуСФмо регiстр стану модему
mov dx,MSR[si]
in al,dx
mov al,0FFh
mov RING[si],al
jmp next_inter
TX_int:
; дивимося СЧсти чи данi для передачi модему
cmp size_s_data[si],0
jg have_data_for_send
; якщо буфер передавача порожнiй переустановлюСФмо регiстр
; керування перериваннями
mov dx,IER[si]
mov al,0Dh
out dx,al
jmp next_inter
have_data_for_send:
; передаСФмо символ модему вiдповiдно до стану
; лiнiй RS-232-З
call modem_protocol
; передаСФмо черговий символ з буфера передавача
mov bx,start_s_data[si]
mov al,send_buf[si][bx]
mov dx,DATREG[si]
out dx,al
inc bx
cmp bx,S_SIZE
jb ptr_no_max
mov bx,0
ptr_no_max:
mov start_s_data[si],bx
dec size_s_data[si]
jmp next_inter
; данi прийнятi i доступнi для читання
RX_int:
; зчитуСФмо прийнятий байти iз регiстра даних UART
mov dx,DATREG[si]
in al,dx
cmp size_r_data[si],R_SIZE
jl no_r_EOVFLOW
; буфер приймача переповнений, збiльшуСФмо вiдповiдний
; лiчильник помилок
inc WORD PTR EOVFLOW[si]
jmp next_inter
no_r_EOVFLOW:
mov bx,end_r_data[si]
mov reciave_buf[si][bx],al
inc size_r_data[si]
inc bx
cmp bx,R_SIZE
jb no_max_r_ptr
mov bx,0
no_max_r_ptr:
mov end_r_data[si],bx
jmp next_inter
exit_handler:
mov al,20h
out 20h,al
pop es
pop ds
pop di
pop bp
pop dx
pop cx
pop bx
pop ax
pop si
iret
int_hndlr4 ENDP
int_hndlr3 ENDP
int_hndlr2 ENDP
int_hndlr1 ENDP
COM_TEXT ENDS
END