Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Не могу справится с этим помогите. Нужно эту программу написать в асемблере для pic16f877 и связать со схемой в протеусе

Алан Сеитов Ученик (95), открыт 15 часов назад
Реализовать программу отображения показаний термометра в Цельсиях и Фаренгейтах на 14-сегментных индикаторах. Показания в Цельсиях осуществить в виде -50°С…+50°С. Показания в Фаренгейтах осуществить в виде -58,0°F…+122,0°F. Данные в Цельсиях хранить в двоично-десятичном виде в таблице памяти программ. Данные из памяти выводить через каждую 1 сек.
1 ответ
Egor Mexelion Мастер (1113) 15 часов назад
; Настройка конфигурации микроконтроллера
LIST P=16F877
INCLUDE <P16F877.INC>
__CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF

; Определение регистров
TEMP_C EQU 0x20 ; Текущая температура в Цельсиях
TEMP_F EQU 0x21 ; Текущая температура в Фаренгейтах
COUNTER EQU 0x22 ; Счетчик задержки
SEGMENTS EQU PORTB ; Порт для вывода на индикаторы
DIGIT_SEL EQU PORTC ; Порт выбора индикатора

; Таблица данных температуры (Цельсий: от -50 до +50)
TABLE:
DT -50, -49, ..., 0, ..., +50

; Начало программы
ORG 0x00
GOTO MAIN

MAIN:
CLRF TEMP_C ; Сброс текущей температуры
CLRF TEMP_F ; Сброс температуры в Фаренгейтах

LOOP:
CALL READ_TEMP ; Чтение температуры из таблицы
CALL DISPLAY_C ; Отображение температуры в Цельсиях
CALL CONVERT_TO_F ; Конвертация в Фаренгейты
CALL DISPLAY_F ; Отображение температуры в Фаренгейтах
CALL DELAY_1S ; Задержка в 1 секунду
GOTO LOOP ; Повтор цикла

; Чтение температуры из таблицы
READ_TEMP:
; Логика загрузки температуры в TEMP_C
RETURN

; Отображение температуры в Цельсиях
DISPLAY_C:
; Преобразование TEMP_C в сегменты и вывод на индикатор
MOVF TEMP_C, W
CALL ENCODE_SEGMENTS
RETURN

; Конвертация в Фаренгейты
CONVERT_TO_F:
; F = (C * 9 / 5) + 32
MOVF TEMP_C, W
MULWF 0x09 ; Умножение на 9
DIVWF 0x05 ; Деление на 5
ADDWF 0x20, W ; Добавление 32
MOVWF TEMP_F
RETURN

; Отображение температуры в Фаренгейтах
DISPLAY_F:
; Преобразование TEMP_F в сегменты и вывод на индикатор
MOVF TEMP_F, W
CALL ENCODE_SEGMENTS
RETURN

; Преобразование числа в сегменты
ENCODE_SEGMENTS:
; Код преобразования для 14-сегментных индикаторов
RETURN

; Задержка в 1 секунду
DELAY_1S:
; Используем таймер для генерации задержки
RETURN

END
Алан СеитовУченик (95) 15 часов назад
Я тоже в чат гпт делал, но он бред выдает. В протеусе потом не работатет
Похожие вопросы