Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Мега8 Встроенный ген-р 1МГц. Листинг прилагается.
Отправлено
Fantomas 22 октября 2009, г. 22:55
В ответ на:
а весь код дать ? мега8 ? :) отправлено пользователем
nestandart 22 октября 2009, г. 22:50
;*** Прога начата 27 - 21-31, посвящается всем СЛАВЯНАМ ****
.include "m8def.inc" ;описание Меги8
.def Temp0=R16 ;Временные
.def Temp1=R17
.def ADC_Value=R18
.def ADC_Status=R19
.def SND_Stat=R20
.dseg
.cseg
.org 0
rjmp RESET ; Reset Handler
rjmp EXT_INT0 ; IRQ0 Handler
rjmp EXT_INT1 ; IRQ1 Handler
rjmp TIM2_COMP ; Timer2 Compare Handler
rjmp TIM2_OVF ; Timer2 Overflow Handler
rjmp TIM1_CAPT ; Timer1 Capture Handler
rjmp TIM1_COMPA ; Timer1 CompareA Handler
rjmp TIM1_COMPB ; Timer1 CompareB Handler
rjmp TIM1_OVF ; Timer1 Overflow Handler
rjmp TIM0_OVF ; Timer0 Overflow Handler
rjmp SPI_STC ; SPI Transfer Complete Handler
rjmp USART_RXC ; USART RX Complete Handler
rjmp USART_UDRE ; UDR Empty Handler
rjmp USART_TXC ; USART TX Complete Handler
rjmp ADC_INT ; ADC Conversion Complete Handler
rjmp EE_RDY ; EEPROM Ready Handler
rjmp ANA_COMP ; Analog Comparator Handler
rjmp TWSI ; Two-wire Serial Interface Handler
rjmp SPM_RDY ; Store Program Memory Ready Handler
;RESET: ; Reset Handler
EXT_INT0: ; IRQ0 Handler
EXT_INT1: ; IRQ1 Handler
;TIM2_COMP: ; Timer2 Compare Handler
TIM2_OVF: ; Timer2 Overflow Handler
TIM1_CAPT: ; Timer1 Capture Handler
TIM1_COMPA: ; Timer1 CompareA Handler
TIM1_COMPB: ; Timer1 CompareB Handler
TIM1_OVF: ; Timer1 Overflow Handler
TIM0_OVF: ; Timer0 Overflow Handler
SPI_STC: ; SPI Transfer Complete Handler
USART_RXC: ; USART RX Complete Handler
USART_UDRE: ; UDR Empty Handler
USART_TXC: ; USART TX Complete Handler
;ADC_INT: ; ADC Conversion Complete Handler
EE_RDY: ; EEPROM Ready Handler
ANA_COMP: ; Analog Comparator Handler
TWSI: ; Two-wire Serial Interface Handler
SPM_RDY: ; Store Program Memory Ready Handler
reti
RESET:
ldi r16,high(RAMEND) ; Main program start
out SPH,r16 ; Set Stack Pointer to top of RAM
ldi r16,low(RAMEND)
out SPL,r16
; Настройка Портов
; Настройка Портов
ldi Temp0,(0<<PB7)|(0<<PB6)|(0<<PB5)|(0<<PB2) ;Установка линий вывода (Низкого Уровня)
ldi Temp1,(1<<DDB7)|(1<<DDB6)|(1<<DDB5)|(1<<DDB2) ;Вывод Beeper и Relay
out PORTB,Temp0
out DDRB,Temp1
ldi Temp0,(0<<PC1)|(0<<PC0) ;Линии ввода АЦП
ldi Temp1,(0<<DDC1)|(0<<DDC0) ; АЦП
out PORTC,Temp0
out DDRC,Temp1
ldi Temp0,(0<<PUD) ; Разрешение Пулл-Апс
out SFIOR,Temp0
ldi Temp0,(0<<CS22)|(0<<CS21)|(1<<CS20) ; Timer2 /1
out TCCR2,Temp0
ldi Temp0,(1<<OCIE2) ; Timer2
out TIMSK,Temp0
; Тут будем инициализировать АЦП
ldi Temp0,(1<<REFS1)|(1<<REFS0)|(1<<ADLAR)|(0<<MUX3)|(0<<MUX2)|(0<<MUX1)|(0<<MUX0) ;Установили внутреннее опорное напряжение 2.56В
out ADMUX,Temp0 ;Равнение по Левому краю и ADC0 вход
ldi Temp0,(1<<ADEN)|(1<<ADIE) ;Инициализируем АЦП, разрешаем прерывания.
out ADCSRA,Temp0
sei ; Разрешили прерывания
sbi ADCSRA,ADSC ;Тестовый запуск ADC
ldi ADC_Status,0b00000001
ldi Temp0,50
out OCR2,Temp0
ldi Temp0,0
ldi Temp1,0
PauseADC_S:
dec Temp0
brne PauseADC_S
dec Temp1
brne PauseADC_S
Main:
andi ADC_Status,0b00000001
cpi ADC_Status,1
breq ADCN1
cbi ADMUX,MUX0 ;ADC0
sbi ADCSRA,ADSC ; На старт ))
rjmp PauseADC
ADCN1: sbi ADMUX,MUX0 ;ADC1
sbi ADCSRA,ADSC ; На старт ))
PauseADC:
ldi Temp0,0
PauseAD256:
dec Temp0
brne PauseAD256
cpi ADC_Value,2 ; Проверка входного напряжения
BRSH SoundON
rjmp Nex1
SoundON:
sbi PortB,2
Nex1: cpi ADC_Value,1
BRLO SoundOFF
rjmp Nex2
SoundOFF:
cbi PortB,2
Nex2:
rjmp Main
TIM2_COMP:
inc SND_Stat
andi SND_Stat,0b00000001
cpi SND_Stat,1
brne ex
sbi PortB,6
cbi PortB,7
reti
ex:
cbi PortB,6
sbi PortB,7
reti
ADC_INT:
in ADC_Value,ADCH
inc ADC_Status
reti
Составить ответ | Вернуться на конференцию.
Ответы
- + - nestandart (22.10.2009, 23:15:14 79.235.143.226, 243 байт)
- Спасибо ! - Fantomas (22.10.2009, 23:17:33 212.178.8.67, пустое)
- мдэ... - nestandart (22.10.2009, 23:12:45 79.235.143.226, 5329 байт)