Сообщение от
NEO SPECTRUMAN
а зачем размещать его впритык?
если попробовать сдвинуть поближе?
Можно, но при этом уменьшится буфер для чтения по RS232.
А его глубину желательно сделать как можно больше.
Сообщение от
NEO SPECTRUMAN
...там указатель стека точно декрементится до записи?
а то последний адрес как бы 127
В семействе i8051 стек заполняется вверх, при выполнении PUSH и CALL
сперва производится инкремент адреса, затем запись в стек, соответственно при POP и RET сперва производится
чтение, затем декремент адреса.
Для 8051 при этом получается глубина стека 7 байт, адреса: 121..127
Может действительно при работе в прерываниях происходит переполнение стека.
Cкорректируйте исходник, увеличив стек до 16 байт и попробуйте с новой прошивкой:
Код:
len_bwr equ 8
buf_wr: ds len_bwr ;буфер передачи
;
len_brd equ 54-8 ;Длина буфера приема
len_ird equ 50-8 ;длина буфера для INT (если разрешен)
buf_rd: ds len_brd ;буфер приема
ds 0
;--------------------------------
org 120-16-16
; Bufer KBD
buf_kbd: ds 8 ;Буфер клавиатуры
; Буфер часов
tics: ds 1 ;50 тиков в секунду
b_time: ds 3 ;секунды,минуты,часы
b_date: ds 4 ;день,месяц,год,столетие
b_stek: ds 16 ;стек -> вверх
;_________________________________________