Показать сообщение отдельно
Старый 13.02.2007, 07:16   #46
_SDY_
Пользователь
 
Регистрация: 17.03.2006
Возраст: 47
Город: Владивосток
Регион: 25
Машина: Карина
Сообщений: 60
_SDY_ will become famous soon enough
По умолчанию

А есть еще один вариант (на современной элементной базе :-))). Один корпус ATTiny11 или ATTiny12.
Это - исходник прошивки:

8<----8<----8<----8<----8<----8<----8<----8<----

.include "TN11DEF.INC" ; include chip definition
;------------------------------
.def temp1=r16
.def temp2=r17
.def temp3=r18
.def PulseFlag=r19
.def Counter=r20
;------------------------------
rjmp RESET ; Reset Handle
rjmp INT0VECT ; External Interrupt0 Vector Address
rjmp NOVECT ; Pin change Interrupt Vector Address
rjmp OVF0VECT ; Overflow0 Interrupt Vector Address
rjmp NOVECT ; (EEPROM ready Interrupt Vector Address ATTiny12) Analog Comparator Interrupt Vector Address ATTiny11
rjmp NOVECT ; Analog Comparator Interrupt Vector Address ATTiny12
;------------------------------
RESET:
; init timer
ldi temp1, (1<<CS02)|(1<<CS00) ; enable timer, CLK/1024
out TCCR0, temp1
ldi temp1, (1<<TOIE0) ; enable Timer0 Overflow int
out TIMSK, temp1
; init int0
ldi temp1, (1<<INT0) ; enable int0
out GIMSK, temp1
ldi temp1, (1<<ISC00) ; int0 at change
out MCUCR, temp1
; init ports
ldi temp1, (1<<PINB0) ; 0 - output pin
out DDRB, temp1
; init val
ldi PulseFlag, 0
ldi Counter, 4
; enable interrupts
sei
;------------------------------
MAIN:
rjmp MAIN
;------------------------------
OVF0VECT:
in temp1, SREG ; Store the Status register in reg temp1
dec Counter
brne EX_OVF0VECT
ldi Counter, 4
; here's approx 1sec delay

tst PulseFlag
breq CLRPINB0
dec PulseFlag
mov temp3, PulseFlag
andi temp3, 1
breq CLRPINB0
sbi PORTB, PINB0
rjmp EX_OVF0VECT
CLRPINB0:
cbi PORTB, PINB0

EX_OVF0VECT:
out SREG, temp1 ; Restore Status register
reti
;------------------------------
INT0VECT:
in temp2, SREG ; Store the Status register in reg temp2

tst PulseFlag
brne EX_INT0VECT
ldi PulseFlag, 4

EX_INT0VECT:
out SREG, temp2 ; Restore Status register
reti
;------------------------------
NOVECT:
reti

8<----8<----8<----8<----8<----8<----8<----8<----

4-я нога - земля, 8-я нога - питание, на 6-ю ногу через резисторный делитель подать сигнал вкл/выкл заднего хода, с 5-й ноги снимать импульсы.

Итого - 3 детали :-) два резистора, одна микросхема (всего о восьми ногах), а не куча логики.
_SDY_ вне форума   Ответить с цитированием