Страница 1 из 1

Термометр окружающей среды на PIC16F877

Добавлено: Вс дек 07, 2008 12:39:43
zuze
Дело в том преподаватель показал одну программу "временную задержку на 1 секунду методом вложенных циклов" и задал задачу, и отпустил домой.

Вот задача

Измерить температуру окружающей среды и вывести её на экран ЖКИ, сравнить с заданной температурой и выдать световые и звуковые сигналы если температура выше заданной.

Примечание:
1. Весь код нужен для оборудования Дебаггер MPLAB-ICD2 и демо-плата PICDEM 2 Plus

2. Микроконтроллер: PIC16F877.

3. Код обязательно на ассемблере

4. Среда программирования MPLAB IDE 7.50

Дал оборудование всего лишь на несколько дней до вторника.

Задача явно не из простых для человека который первый раз программирует микроконтроллеры.
Я превык к обычному программированию, а тут ступор какой-то.


Помогите пожалуйста написать код.

Я пытался сделать но у меня кроме начального появления на ЖКИ двух строк текста ( LCD IS READY и Temperature) и слабого горения диода RB0 ни чего не работает

Вот код (я даже пробовал добавить звук), но что со звуком что без звука результат один.

Добавлено: Вс дек 07, 2008 22:34:50
zuze
Я так понял в моём коде ввод начальных строк на экран ходит по кругу и мой термометр не чиго не измеряет до этого не доходит код.

Помогите разобратся, как избавится от зацикливания кода.

Добавлено: Пн дек 08, 2008 13:03:29
zuze
Я переделал код на этот, но без световых и звуковых сигналов пока.

Показывает температуру у меня в комнате 19С.

Я хотел, если температура больше 17С (заданна в коде), то выдавать звуковые и световые сигналы.

Попытался разобратся со световыми сигналами сначала.

К сожалению они не заработали, а состояние ЖКИ возвращается к надписи на нём на первой строчке " Temperature ", на в торой строчке
" measurement " и термометр дальше ни чего не мериет.

Помогите пожалуйста его поправить.

Добавлено: Пн дек 08, 2008 16:47:10
zuze
Я забыл поставить return, теперь поставил.

К сожалению светодиоды не заработали, но уже термометр не зависает при этом, а дальше мерит температуру.

Код: Выделить всё

; Мерцание светодиодов, подключённых к порту В
FLASH
        banksel TRISB           ;Настройка выводов на выдачу
        bcf             TRISB,3
        bcf             TRISB,2
        bcf             TRISB,1
        banksel PORTB
        bsf             PORTB,1 ;Включение  1-госветодиода
        call    delay_100ms
        call    delay_100ms
        banksel PORTB
        bcf             PORTB,1 ;Выключеие 1-го светодиода
        bsf             PORTB,2
        call    delay_100ms
        call    delay_100ms
        banksel PORTB
        bcf             PORTB,2
        bsf             PORTB,3
        call    delay_100ms
        call    delay_100ms
        banksel PORTB
        bcf             PORTB,3
        return
        
; Сравнение текущей температуры с заданной - (170C)
compare_temp
        banksel temperature
        movf    temperature,w           
        sublw   B'00010001'             ;17
        btfss   STATUS,0
        goto    FLASH
        call    delay_100ms
        call    stan_table
        return
Что же сделать, что бы заработали диоды?

Добавлено: Вт дек 09, 2008 00:22:08
zuze
Не работает опять, что же я не так делаю?

Код: Выделить всё

start
   movlw B'11111011'
   movwf TRISB
   ........

flash
   movlw 0xff
   movwf PORTB
   call  delay_1s   
   movlw 0
   movwf PORTB  
   call    delay_1s 
   goto    flash

compare_temp
        banksel temperature
        movf    temperature,w           
        sublw   B'00010001'             
        btfss   STATUS,0
        goto    flash
        call    delay_100ms 
        call    stan_table
        return

Добавлено: Вт дек 09, 2008 22:04:57
zuze
Я сегодня дал преподу на проверку код без световых и звуковых сигналов, он сказал что и так сойдёт.
И его аппаратуру пришлось вернуть сегодня он даёт только на 3 дня, а они прошли.

Так что прошу прощения за лишние безпокойство.

Тему можно закрыть.