Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2014, 17:37   #1
NickSim
Новичок
Джуниор
 
Регистрация: 03.03.2014
Сообщений: 0
По умолчанию Написание прошивки для микроконтроллера

Нужно написать прошивку под микроконтроллер PIC16F877,который будет стоять на цифровом зарядном устройстве.Зарядка будет заряжать различные типы аккумуляторов.

Кто готов взяться пишите свои контакты для более детального общения
NickSim вне форума Ответить с цитированием
Старый 04.03.2014, 08:35   #2
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от NickSim Посмотреть сообщение
Нужно написать прошивку под микроконтроллер PIC16F877,который будет стоять на цифровом зарядном устройстве.Зарядка будет заряжать различные типы аккумуляторов.

Кто готов взяться пишите свои контакты для более детального общения
Более подробно опишите задачу. Схемку приложите. Либо в аську стучите, обсудим.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 04.03.2014 в 08:40.
WorldMaster вне форума Ответить с цитированием
Старый 02.04.2014, 08:33   #3
dandrey
Новичок
Джуниор
 
Аватар для dandrey
 
Регистрация: 28.07.2010
Сообщений: 0
По умолчанию если еще актуально

могу реализовать
интересует бюджет

для контактов
skype: dandy60
dandrey вне форума Ответить с цитированием
Старый 03.04.2014, 09:22   #4
Viktor2004
Пользователь
 
Регистрация: 14.09.2007
Сообщений: 12
По умолчанию

Лет 10 назад делал, когда работал электриком в парке аттракционов.
Там вышло из строя зарядное устройство которым мы электромобили заряжали, я определил что не работает контроллер. Выпаял его, пробовал прочитать, а там защита от записи. Пошел тогда в магазин, купил контроллер. Такого как там стоял там не было, взял другой, подходящий по функционалу. Ножек оказалось больше. спаял переходник и написал программу сам.
Давно это было. Помню на входы подаются после делительного моста напряжение, ток, температура радиатора (это аналоговые входы) Ну а выходы - включение вентилятора охлаждения радиатора, 5 сигнальных лампочек и главное реле, которое включает аккумулятор на зарядное напряжение.
Там при подключении аккумулятора контроллер проверяет правильная ли полярность подключения, не разряжен ли аккум ниже нижнего предела, тот ли аккум подключен, именно 12V, а не какой другой. Короче, в листинге программы разберетесь.
Под Вашу микросхему переделаете без труда.
Зарядка работает без сбоев.
Если программа поможет, пользуйтесь. Мне не жалко.
Изображения
Тип файла: jpg WP_20140403_001.jpg (76.3 Кб, 136 просмотров)
Вложения
Тип файла: rar eurocharger 2000.rar (44.5 Кб, 16 просмотров)

Последний раз редактировалось Viktor2004; 03.04.2014 в 10:01.
Viktor2004 вне форума Ответить с цитированием
Старый 03.04.2014, 09:23   #5
Viktor2004
Пользователь
 
Регистрация: 14.09.2007
Сообщений: 12
По умолчанию

Первая половина программы


list p=16F73
#include <p16F73.inc> ;используется контроллер PIC16C710
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC
VOLTAGE EQU H'20' ;подключаемое напряжение
CURRENT EQU H'21' ;ток заряда
TEMP EQU H'22' ;температура радиатора
TNORM EQU B'01000001' ;порог температуры. При уменьшении - перегрев
V0MIN EQU B'01110000' ;нижний порог готовности
V0 EQU B'10000001' ;нижний порог включения заряда
VMAX EQU B'11110000' ;верхний порог включения заряда
SZAR EQU H'23' ;статус подключенного аккумулятора
STZAR EQU H'24' ;второй регистр статуса
CUR_MIN EQU 10

ORG 0x000
GOTO PUSK
ORG 0x04
GOTO SERVICE_INT
PUSK CLRF PORTA ;очистка порта A
BSF STATUS,RP0 ;включить банк 1
CLRF ADCON1 ;все вхожы аналоговые
MOVLW b'101111' ;RA<3:0> вход RA4 выход
MOVWF TRISA ;
MOVLW b'00000000' ;RA<7:3> выход
MOVWF TRISB ;
BCF STATUS,RP0 ;включить банк 0
MOVLW b'00000000'
MOVWF PORTB ;очистка порта B

;инициализация таймера
CLRF TMR0
BSF STATUS,RP0
MOVLW b'01000111'
MOVWF OPTION_REG
BCF STATUS,RP0

start MOVLW b'01001001' ;синхронизация от Fosc/2, канал 1, A/D включен
MOVWF ADCON0
BSF PIR1, ADIF ;сбросить флажок прерывания A/D
; Если необходимое время для выборки истекло,
;то может быть начато A/D-преобразование
BSF ADCON0, GO ;пуск A/D-преобразования
; После завершения A/D-преобразования будет установлен флажок
; ADIF, а GO/DONE сброшен.

loop1 BTFSC ADCON0, GO ;ожидание конца A/D преобразования
GOTO loop1
MOVF ADRES, 0 ;аналоговое значение в W
MOVWF VOLTAGE ;значение в VOLTAGE

MOVLW b'01010001' ;синхронизация от Fosc/2, канал 2, A/D включен
MOVWF ADCON0
BSF PIR1, ADIF ;сбросить флажок прерывания A/D
; Если необходимое время для выборки истекло,
;то может быть начато A/D-преобразование
BSF ADCON0, GO ;пуск A/D-преобразования
; После завершения A/D-преобразования будет установлен флажок
; ADIF, а GO/DONE сброшен.
loop2 BTFSC ADCON0, GO ;ожидание конца A/D преобразования
GOTO loop2
MOVF ADRES, 0 ;аналоговое значение в W
MOVWF CURRENT ;значение в регистр B

MOVLW b'01011001' ;синхронизация от Fosc/2, канал 3, A/D включен
MOVWF ADCON0
BSF PIR1, ADIF ;сбросить флажок прерывания A/D
; Если необходимое время для выборки истекло,
;то может быть начато A/D-преобразование
BSF ADCON0, GO ;пуск A/D-преобразования
; После завершения A/D-преобразования будет установлен флажок
; ADIF, а GO/DONE сброшен.
loop3 BTFSC ADCON0, GO ;ожидание конца A/D преобразования
GOTO loop3
MOVF ADRES, 0 ;аналоговое значение в W
MOVWF TEMP ;значение в регистр B

CALL TEM ;проверить темпервтуру
CALL VOLT ;проверить напряжение
CALL CUR ;проверить ток заряда
CALL VENT
CALL SBIT
CALL RELE
CALL ALARM
CALL ENDER


GOTO start
Viktor2004 вне форума Ответить с цитированием
Старый 03.04.2014, 09:23   #6
Viktor2004
Пользователь
 
Регистрация: 14.09.2007
Сообщений: 12
По умолчанию

Вторая половина программы

;Проверка подключаемого напряжения, выставление флагов

VOLT MOVF VOLTAGE,0 ;измеренное напряжение
SUBLW V0MIN ;сравнение с нижним порогом готовности
BTFSC STATUS,C
GOTO NULL
BCF SZAR,4 ;напряжение больше ниж.порога гот.

MOVF VOLTAGE,0 ;измеренное напряжение
SUBLW V0 ;сравнить с нижним порогом включения заряда
BTFSC STATUS,C
GOTO ONE
BCF SZAR,5
BCF PORTB,4 ;выключить индикатор READY

MOVF VOLTAGE,0 ;измеренное напряжение
SUBLW VMAX ;сравнить с верхним порогом включения заряда
BTFSC STATUS,C
GOTO TWO
BCF SZAR,6

MOVF VOLTAGE,0 ;измеренное напряжение
SUBLW VMAX ;сравнить с верхним порогом включения заряда
BTFSS STATUS,C
GOTO THREE
BCF SZAR,3
RETURN


CUR MOVF CURRENT,0 ;измерение тока
SUBLW CUR_MIN
BTFSS STATUS,C
GOTO FOUTH
BCF SZAR,2
RETURN

TEM MOVF TEMP,0 ;аналоговое значение в W
SUBLW TNORM ;сравнить с пределом и при перегреве установить C
BTFSC STATUS,C ;проверка отсутствия C
GOTO FIFTH
BCF STZAR,7 ;если C сброшен, то выключить вентилятор
RETURN


VENT MOVF PORTB,0 ;7 бит - реле заряда
IORWF STZAR,0 ;ИЛИ статус температуры (7 бит)
MOVWF H'25' ;результат в регистр 25
BTFSC H'25',7 ;проверить 7 бит есть ли температура или идет заряд
GOTO SIX ;включить вентилятор
BCF PORTA,4 ;выключить вентилятор
RETURN
SIX BSF PORTA,4
RETURN


NULL BSF SZAR,4 ;напряжение ниже разрешенного порога
BCF SZAR,5
BCF SZAR,6
BCF SZAR,3
BCF PORTB,4 ;выключить индикатор READY
RETURN
ONE BSF SZAR,5 ;напряжение в пределах нулевого
BSF PORTB,4 ;включить индикатор READY
BCF SZAR,6
BCF SZAR,3
RETURN
TWO BSF SZAR,6 ;напряжение в пределах разрешения заряда
BCF SZAR,3
RETURN
THREE BSF SZAR,3 ;напряжение выше разрешения заряда
RETURN
FOUTH BSF SZAR,2 ;ток заряда выше минимума
RETURN
FIFTH BSF STZAR,6 ;температура выше нормы
RETURN

SBIT BTFSC PORTB,7 ;был заряд или нет
BSF H'26',6 ;установить бит (PORTB,6)
BTFSC SZAR,5 ;напрядение равно нулевому
BCF H'26',6 ;сбросить бит
RETURN

RELE CLRF TMR0
BCF INTCON,2
LOOP4 BTFSS INTCON,2 ;T01F
GOTO LOOP4
BTFSC H'26',6 ;если бит заряда сброшен
GOTO OFF ;
BTFSS SZAR,6 ;если напряжение разрешено для заряда
GOTO OFF ;
BSF PORTB,7 ;включить реле заряда
BSF PORTB,5 ;CHARGING

OFF CLRF TMR0
BCF INTCON,2
LOOP5 BTFSS INTCON,2 ;T01F
GOTO LOOP5
BTFSS H'26',6 ;если бит заряда установлен
RETURN ;
BTFSC SZAR,2 ;если ток ниже минимума
RETURN ;
BCF PORTB,7 ;сбросить реле заряда
BCF PORTB,5 ;CHARGING
RETURN

ALARM BTFSC SZAR,4
CALL SEVEN
BTFSC SZAR,3
CALL SEVEN

BTFSC SZAR,4
RETURN
BTFSC SZAR,3
RETURN
BCF PORTB,3 ;выключить АВАРИЯ
RETURN

SEVEN BCF PORTB,7 ;выключить реле заряда
BCF PORTB,5 ;выключить индикатор заряда
BSF PORTB,3 ;включить индикатор АВАРИЯ
RETURN



ENDER BTFSS H'26',6 ;если бит заряда установлен
GOTO NO_END ;
BTFSC PORTB,7 ;если реле выключено
GOTO NO_END ;
BSF PORTB,6 ;включить индикатор
RETURN

NO_END BCF PORTB,6 ;выключить индикатор
RETURN


SERVICE_INT
RETURN

END
Viktor2004 вне форума Ответить с цитированием
Старый 03.04.2014, 09:56   #7
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Да уж нету ничего хуже чем разбираться в чудом коде к тому же на асме.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 03.04.2014, 10:06   #8
Viktor2004
Пользователь
 
Регистрация: 14.09.2007
Сообщений: 12
По умолчанию

Я комменты писал подробно и программа отлаженная и рабочая полностью.
А что там подробнее уже сам не помню. Давно это было.

Последний раз редактировалось Viktor2004; 03.04.2014 в 10:08.
Viktor2004 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для микроконтроллера Vladimir12 Помощь студентам 21 08.06.2015 00:06
Програмирование собственной прошивки для телефона. -=Ивашка=- Мобильные ОС (Android, iOS, Windows Phone) 22 15.11.2012 21:47
Программа для микроконтроллера Drac0Sha Фриланс 1 12.11.2012 19:39
программа на си для микроконтроллера МК 8052 Н Симпапулька Помощь студентам 8 13.11.2010 18:18