Программирование микроконтроллера
Программирование микроконтроллера
Друзья, доброго всем времени суток. У меня такая задача: необходимо описать в ассемблере измерение остаточного напряжения на аккумуляторе. Измерение производится посредством АЦП микроконтроллера PIC16F874 (данные приходят на вывод RE0).
Подкиньте кто-нибудь программку с комментариями.
Заранее, спасибо
Подкиньте кто-нибудь программку с комментариями.
Заранее, спасибо
- Реклама
-
TripleKill
- Вымогатель припоя
- Сообщения: 671
- Зарегистрирован: Вт июн 29, 2010 12:31:49
Re: Программирование микроконтроллера
MOVLW 0x8A
MOVWF ADCON1 ;Настройка каналов приёма АЦП и выравнивания результата. RA0, RA1, RA2, RA5 и RE0 - аналоговые входы, на RA3 - вход опорного напряжения.
MOVLW 0x28
MOVWF ADCON0 ;Выбор для измерения канала AN5 (RE0), установка предделителя тактирования АЦП
BSF ADCON0, 0 ;Включение модуля АЦП
BSF ADCON0, 2 ;Запуск оцифровки
L1: BTFSC ADCON0, 2 ;По окончании оцифровки бит GO/!DONE обнуляется контроллером, этого и ждём
GOTO L1
<здесь результат уже лежит в ADRESH и ADRESL, можете работать с ним>
P.S. Если кто-то ошибку увидит, поправьте плиз, давно на асме не писал ничего)
MOVWF ADCON1 ;Настройка каналов приёма АЦП и выравнивания результата. RA0, RA1, RA2, RA5 и RE0 - аналоговые входы, на RA3 - вход опорного напряжения.
MOVLW 0x28
MOVWF ADCON0 ;Выбор для измерения канала AN5 (RE0), установка предделителя тактирования АЦП
BSF ADCON0, 0 ;Включение модуля АЦП
BSF ADCON0, 2 ;Запуск оцифровки
L1: BTFSC ADCON0, 2 ;По окончании оцифровки бит GO/!DONE обнуляется контроллером, этого и ждём
GOTO L1
<здесь результат уже лежит в ADRESH и ADRESL, можете работать с ним>
P.S. Если кто-то ошибку увидит, поправьте плиз, давно на асме не писал ничего)
Re: Программирование микроконтроллера
а как установить конкретное значение?
Например, АЦП измеряет напряжение, и если оно больше 0,2В, устройство проводит дальнейшие действия.... тем самым, пытаюсь реализовать определение наличия батареи в заряднике
Например, АЦП измеряет напряжение, и если оно больше 0,2В, устройство проводит дальнейшие действия.... тем самым, пытаюсь реализовать определение наличия батареи в заряднике
Re: Программирование микроконтроллера
Считали значение АЦП сравнили с заданным порогом и сделали выводы.
Сравнивать можно вычитанием, сложением командами and, xor.
Сравнивать можно вычитанием, сложением командами and, xor.
Re: Программирование микроконтроллера
А как задать заданное значение? 
- Реклама
-
TripleKill
- Вымогатель припоя
- Сообщения: 671
- Зарегистрирован: Вт июн 29, 2010 12:31:49
Re: Программирование микроконтроллера
Очевидно, перевести его в код АЦП. код = (Uизмер. / Uопорное)*(2^10).
Десятая степень справедлива для пика, а вообще зависит от разрядности используемого АЦП.
Десятая степень справедлива для пика, а вообще зависит от разрядности используемого АЦП.
Re: Программирование микроконтроллера
Спасибо вам большое 
-
TripleKill
- Вымогатель припоя
- Сообщения: 671
- Зарегистрирован: Вт июн 29, 2010 12:31:49
Re: Программирование микроконтроллера
Да не за что)
На всякий случай: измеряемое напряжение не должно превышать опорное! если что, юзайте делители.
На всякий случай: измеряемое напряжение не должно превышать опорное! если что, юзайте делители.
Re: Программирование микроконтроллера
Это я знаю, там делители надо резисторные ставить 
-
Serёга
- Первый раз сказал Мяу!
- Сообщения: 32
- Зарегистрирован: Сб дек 22, 2012 09:02:51
- Откуда: Волгоград
- Контактная информация:
Re: Программирование микроконтроллера
Может проще компаратор поставить?
— Теперь я твердо знаю, что море — это все-таки море, а вкус глотка пива не меняется от моих рассуждений. Кроме того, я знаю, что задающий дурацкие вопросы неизбежно получает дурацкие ответы. Теперь я спокоен. Я знаю все, что мне нужно.


