Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
.include "tn13def.inc"
.def tempL = r16 ; присваиваем регистру R16 имя tempH
.def tempH = r17 ; присваиваем регистру R17 имя tempL
.def Temp0 = r18 ; Temp
.def Temp1 = r19 ; Темр
.def BC = r20 ; Button Counter
.def Cnt =r21 ;временный регистр Cnt
.def Del =r22 ;временный регистр Del
.def Tc =r23 ;временный регистр Таймера
.def Tm =r24 ;временный регистр TuneMode
.def ADC_Value =r25 ;ADC_Value
.DSEG
.cseg
rjmp RESET
rjmp EXT_INT0
rjmp PCINT0_
rjmp TIM0_OVF
rjmp EE_RDY
rjmp ANA_COMP
rjmp TIM0_COMPA
rjmp TIM0_COMPB
rjmp WATCHDOG
rjmp ADC_INT
;RESET:
EXT_INT0:
PCINT0_:
TIM0_OVF:
EE_RDY:
ANA_COMP:
TIM0_COMPA:
TIM0_COMPB:
WATCHDOG:
;ADC_INT:
reti
RESET:
;=========================================INIT=========================================;
ldi r16,LOW(RAMEND) ; Инициализируем стек
out SPl,r16
; Define pull-ups and set outputs high
; Define directions for port pins
ldi Temp0,(0<<PB4)|(0<<PB3)|(1<<PB2)|(1<<PB1)|(1<<PB0) ;Установка линий 2х входов и одного вывода (НL)
ldi Temp1,(0<<DDB4)|(0<<DDB3)|(0<<DDB2)|(1<<DDB1)|(1<<DDB0) ;Выход 0 ВысУров, ибо 6403 запуск от низкого.
out PORTB,Temp0
out DDRB,Temp1
ldi Temp1,(0<<ISC01)|(0<<ISC00) ;
out MCUCR,Temp1
; Установка минимального ШИМ
ldi Temp0,0b10000011 ; Установка уровня выхода
out TCCR0A,Temp0
ldi Temp0,0b00000010 ; Установка предделителя (/8)
out TCCR0B,Temp0
ldi Temp0,0b00000100 ; Разрешаем выход ШИМ "А"
out TIMSK0,Temp0
ldi Temp0,0b11111111 ; Заносим значение @@@ в регистр OCR1A
out OCR0A,Temp0
;Инициализация переменной ВС, выбор режима...))
rcall EEPROM_Read ; Вызываем подпрограмму чтения константы из памяти
andi BC,0b00000011
;Инициализация переменной Tm...))
ldi Tm,0b00000000
; Тут будем инициализировать АЦП
ldi Temp0,(1<<REFS0)|(1<<ADLAR)|(1<<MUX1)|(1<<MUX0) ;Установили внутреннее опорное напряжение 1.1В
out ADMUX,Temp0 ;Ровнение по Левому краю и ADC3 вход
ldi Temp0,(1<<ADEN)|(1<<ADIE) ;Инициализируем АЦП, разрешаем прерывания.
out ADCSRA,Temp0
sei ; Разрешили прерывания
Tune:
ldi Temp0,(1<<ADC0D)|(1<<ADC2D)|(1<<ADC1D) ;Запрещаем все, кроме одной, лапки АЦП.
out DIDR0,Temp0
sbi ADCSRA,6
ldi Temp0,0
ldi Temp1,254
Pause1:
dec Temp0
brne Pause1
dec Temp1
brne Pause1
cpi ADC_Value,0b01000101
;10111010-0.8
;(0b10110011 - 0,77V) (0b10101110 - 0,75V)
;cpi tempH,0b10101110
BRSH main
in Tm,OCR0A ; Заносим значение ---> в регистр OCR0A
dec Tm
out OCR0A,Tm
rjmp Tune
;=========================================MAIN============
ADC_INT:
in ADC_Value,ADCH
reti
main:
rjmp main
;*********************************************************
Составить ответ | Вернуться на конференцию
Ответы
- Вроде теги ставил - Fantomas (09.09.2008 23:46:48 79.140.14.131, 3234 байт)
- а где должен остановиться процесс ? в "ADC_INT:" ничего не останавливает, только сохраняет. - - nestandart (10.09.2008 01:01:41 87.180.58.250, пустое)
- Научись сначала правописанию - отступы (табы_ на каждой строчке кода кроме меток, только символические имена бит, а не sbi blabla,6, членораздельные комментарии - "ставим АЦП в режим ручного запуска", например. Константу 0b00101001, с которой сравниваешь АЦП - в виде обычного десятичного числа - не буду я переводить, лень. Задержку укажи - на сколько она, поясни, что за 6403 и нах она в коде нужна, приведи полностью или убери EEPROM_Read и т.д. - MBedder (10.09.2008 00:48:52 80.92.96.19, пустое)
- Ну если тебе влом поставить теги, то мне тем более влом смотреть твой корявый текст - MBedder (09.09.2008 23:33:47 80.92.96.19, пустое)