![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 03.03.2014
Сообщений: 0
|
![]()
Нужно написать прошивку под микроконтроллер PIC16F877,который будет стоять на цифровом зарядном устройстве.Зарядка будет заряжать различные типы аккумуляторов.
Кто готов взяться пишите свои контакты для более детального общения |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
![]()
Более подробно опишите задачу. Схемку приложите. Либо в аську стучите, обсудим.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. Последний раз редактировалось WorldMaster; 04.03.2014 в 08:40. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 28.07.2010
Сообщений: 0
|
![]()
могу реализовать
интересует бюджет для контактов skype: dandy60 |
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 14.09.2007
Сообщений: 12
|
![]()
Лет 10 назад делал, когда работал электриком в парке аттракционов.
Там вышло из строя зарядное устройство которым мы электромобили заряжали, я определил что не работает контроллер. Выпаял его, пробовал прочитать, а там защита от записи. Пошел тогда в магазин, купил контроллер. Такого как там стоял там не было, взял другой, подходящий по функционалу. Ножек оказалось больше. спаял переходник и написал программу сам. Давно это было. Помню на входы подаются после делительного моста напряжение, ток, температура радиатора (это аналоговые входы) Ну а выходы - включение вентилятора охлаждения радиатора, 5 сигнальных лампочек и главное реле, которое включает аккумулятор на зарядное напряжение. Там при подключении аккумулятора контроллер проверяет правильная ли полярность подключения, не разряжен ли аккум ниже нижнего предела, тот ли аккум подключен, именно 12V, а не какой другой. Короче, в листинге программы разберетесь. Под Вашу микросхему переделаете без труда. Зарядка работает без сбоев. Если программа поможет, пользуйтесь. Мне не жалко. Последний раз редактировалось Viktor2004; 03.04.2014 в 10:01. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 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 |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 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 |
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
![]()
Да уж нету ничего хуже чем разбираться в чудом коде к тому же на асме.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 14.09.2007
Сообщений: 12
|
![]()
Я комменты писал подробно и программа отлаженная и рабочая полностью.
А что там подробнее уже сам не помню. Давно это было. Последний раз редактировалось Viktor2004; 03.04.2014 в 10:08. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа для микроконтроллера | 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 |