Valek87 писал(а):
Мне нужно, чтобы они работали параллельно. Мигал светодиод с опред.частотой (прог-ма ту, кот. мы обсуждали так долго) и эта подпрограммка.
для этого нужно чтобы процессор был 2х ядерным
а вот выполнение основной программы с небольшими "перерывами" на прерывания (у тебя переключение светодиода) это сколько угодно
;****************************************************
; ОСНОВНОЙ ЦИКЛ
;****************************************************
Inf:
rjmp Inf ;бесконечный цикл
в котором у тебя пока ничего кроме зацикливания хода выполнения не происходит, и лишь периодически, раз в 5 мс, переключается состояние светодиода (в прерывании)
;****************************************************
; ОСНОВНОЙ ЦИКЛ
;****************************************************
Inf:
rjmp Inf ;бесконечный цикл
в котором у тебя пока ничего кроме зацикливания хода выполнения не происходит, и лишь периодически, раз в 5 мс, переключается состояние светодиода (в прерывании)
cpi r17, 0b00000000 ;сравниваем с 0
breq V4 ;breq - переход, если равно на V4
rjmp F4 ;переход если не равно на F4
V4: ;код если равно
F4: ;код если не равно
при том, чтобы выполнять параллельно 2е программы в системе должно быть 2 ядра, всего лишь.
И независимо от того, МК работает, или нормальный компьютер.
В данный момент времени может выполняться только один участок кода. Задача программиста - переключать эти участки в зависимости от логики программы, чтобы получить нужный результат.
; ***** INTERRUPT VECTORS ************************************************
.org 0x00 ;RESET
rjmp RESET
.org INT0addr ; External Interrupt Request 0
reti
.org INT1addr ; External Interrupt Request 1
reti
.org INT2addr ; External Interrupt Request 2
reti
.org PCI0addr ; Pin Change Interrupt Request 0
reti
.org PCI1addr ; Pin Change Interrupt Request 1
reti
.org PCI2addr ; Pin Change Interrupt Request 2
reti
.org PCI3addr ; Pin Change Interrupt Request 3
reti
.org WDTaddr ; Watchdog Time-out Interrupt
reti
.org OC2Aaddr ; Timer/Counter2 Compare Match A
reti
.org OC2Baddr ; Timer/Counter2 Compare Match B
reti
.org OVF2addr ; Timer/Counter2 Overflow
reti
.org ICP1addr ; Timer/Counter1 Capture Event
reti
.org OC1Aaddr ; Timer/Counter1 Compare Match A
rjmp TIM1_COMPA
.org OC1Baddr ; Timer/Counter1 Compare Match B
reti
.org OVF1addr ; Timer/Counter1 Overflow
reti
.org OC0Aaddr ; Timer/Counter0 Compare Match A
reti
.org OC0Baddr ; Timer/Counter0 Compare Match B
reti
.org OVF0addr ; Timer/Counter0 Overflow
reti
.org SPIaddr ; SPI Serial Transfer Complete
reti
.org URXC0addr ; USART0, Rx Complete
reti
.org UDRE0addr ; USART0 Data register Empty
reti
.org UTXC0addr ; USART0, Tx Complete
reti
.org ACIaddr ; Analog Comparator
reti
.org ADCCaddr ; ADC Conversion Complete
reti
.org ERDYaddr ; EEPROM Ready
reti
.org TWIaddr ; 2-wire Serial Interface
reti
.org SPMRaddr ; Store Program Memory Read
reti
.org URXC1addr ; USART1 RX complete
reti
.org UDRE1addr ; USART1 Data Register Empty
reti
.org UTXC1addr ; USART1 TX complete
reti