рефераты рефераты
Главная страница > Курсовая работа: Цифровой термометр на микропроцессоре AVR-MEGA 128  
Курсовая работа: Цифровой термометр на микропроцессоре AVR-MEGA 128
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Цифровой термометр на микропроцессоре AVR-MEGA 128

;16–битный таймер, тактирование от MCLK, CIN разрешает счёт MEASURE PUSH.B #TPDMAX ;Сохранить в стеке для послед.использ.

CLR R8 ;Указатель для стека результата

MEASLOP MOV.B #(TPSSEL0*3)+ENA,&TPCTL

;TPCNT1 CLK=MCLK, EN1=1

;Конденсатор С заряжается на протяжении t>5нс.Используются выходы N–1

MOV.B #B16+TPDMAX–1,&TPD;один16-бит.счёт,выбор вых. заряда

MOV.B #TPDMAX–1,&TPE ; Разрешить выходы заряда

MOV.B #PRESET,&TPCNT2 ; Загрузить время заряда

BIS #CPUOFF,SR ; Режим понижен.потребления

MOV.B @SP,&TPE ;Разрешить только текущий датчик

CLR.B &TPCNT2

; Запрет.все прерыв.для обеспеч.непрерыв.работы тайм.и разряд конден.

DINT ; Запрет прерываний

CLR.B &TPCNT1 ; Очистить младший байт таймера

BIC.B @SP,&TPD ; Переключить все датчики в «0»

MOV.B #(TPSSEL0*3)+ENA+ENB,&TPCTL ;TPCNT1 CLK=MCLK,

; разрешить вход CIN

EINT ; Разрешить прерывания, общий старт

BIS #CPUOFF,SR ; Режим пониженного потребления

; EN=0:Завершение преобразования: 2X8 бит результата в MSTACK

; Сохранить результат в стеке

MOV.B &TPCNT2,MSTACK+1(R8)

; Сохранить старший байт результата

L$301 INCD R8 ; Инкремент адреса

RRA.B @SP ; Следующий выход TPD.X

JNC MEASLOP ; Если C=1 – завершение

INCD SP ; Убрать старший TPD из стека

; Вычисление сопротивления датчика

;Подпрограмма беззнакового умножения:MSTACK X TEN_K MRESLT_HW/MRESLT_LW

;Использованы рег.MSTACK,TEN_K,MLTPLR_HW,MRESLT_LW, MRESLT_HW, BITTEST

;Подпрограмма беззнакового умножения с накоплением

;(MSTACK X TEN_K) + MRESLT_HW|MRESLT_LW –> MRESLT_HW|MRESLT_LW

CALC_RES

MOV #10000,TEN_K ;Загрузить 10,000 десятичное в TEN_K

MPYU CLR MRESLT_LW ; 0 ? LSBS результата

CLR MRESLT_HW ; 0 ? MSBS результата

MACU CLR MLTPLR_HW ; 0 ? MSBS множителя

MOV #1,BITTEST ; Регистр проверки бит

L$002 BIT BITTEST,MSTACK ; Проверить текущий бит

JZ L$01 ; Если «0» ничего не делать

ADD TEN_K,MRESLT_LW ;Если «1»добавить множитель к резул

ADDC MLTPLR_HW,MRESLT_HW

L$01 RLA TEN_K ; Множитель X 2

RLC MLTPLR_HW

RLA BITTEST ; Проверить следующий бит

JNC L$002 ;Если бит в CARRY: завершить

; Подпрограмма беззнакового деления 32–бита на 16-бит

; Использованы регистры (MSTACK+2),MRESLT_LW,RESULT, LPCNTR, MRESLT_HW

; MRESLT_HW MRESLT_LW / (MSTACK+2) RESULT Остаток в MRESLT_HW

; По выходу: CARRY = 0: OK CARRY = 1: Частное > 16 Бит

DIVIDE CLR RESULT ; Очистить RESULT

MOV #17,LPCNTR ; Инициализация счётчика

DIV1 CMP MSTACK+2,MRESLT_HW

JLO DIV2

SUB MSTACK+2,MRESLT_HW

DIV2 RLC RESULT

JC RES_2_F ;Ошибка: RESULT > 16 Бит

DEC LPCNTR ; Декремент счётчика

JZ DIV3 ; 0: выход без ошибки

RLA MRESLT_LW

RLC MRESLT_HW

JNC DIV1

SUB MSTACK+2,MRESLT_HW

SETC

JMP DIV2

DIV3 CLRC ;Ошибки нет, C = 0

; Перевод сопротивления датчика в градусы Цельсия для отображения RES_2_F

CLR R12 ;Указат.на значение в табл.R

MOV #064H,R13 ;Поместить мин.темп.-1 в индик

JMP FIRST_CMP ;При первом сравн.1 не добав.

CHECK_R INCD R12 ;INC указат.на знач.в таб.cопрот.

DADD #1,R13 ;Десятичный инкремент счётчика

FIRST_CMP CMP RESIS_TAB(R12),RESULT

;Сравнить табличное значение с вычисленным сопротивлением

JNC CHECK_R ;Переход,если R датч.<табличного

;по адресу указателя

;Отобразить ”С” и знак «°» на ЖКИ

DISPLAY MOV.B #A+E+F+D,LCDM1+1 ;”С” ? дисплейная память ЖК

MOV.B #A+B+F+D,LCDM1+2 ;” °” (знак градуса)

; Отобразить значение, хранящееся в R13 в формате BCD на ЖКИ

MOV R13,R12 ;Копир.число в виде BCD в R12

MOV #LCDM1+4,R14 ;Младшая цифра в памяти ЖКИ; R14

BIC #0FFF0H,R13 ;Погасить всё,кроме младшей цифры

MOV.B LCD_TAB(R13),0(R14) ; Отпр.мл.цифру в ЖКИ

MOV R12,R13 ; Восстановить значение в R13

RRA R13 ; 4 сдвига

RRA R13

RRA R13

RRA R13

BIC #0FFF0H,R13 ; Погасить всё, кроме млад.цифры

MOV.B LCD_TAB(R13),1(R14) ;Отправить старшую цифру в ЖКИ

JMP BEGIN ; Переход к началу программы

; ЖКИ модуля STK

LCD_TYPE

A EQU01H

B EQU02H

C EQU10H

D EQU04H

E EQU80H

F EQU20H

G EQU08H

H EQU40H

LCD_TAB BYTE A+B+C+D+E+F ; Отображает”0”

.BYTE B+C ; Отображает”1”

.BYTE A+B+D+E+G ; Отображает”2”

.BYTE A+B+C+D+G ; Отображает”3”

.BYTE B+C+F+G ; Отображает”4”

.BYTE A+C+D+F+G ; Отображает”5”

.BYTE A+C+D+E+F+G ; Отображает”6”

.BYTE A+B+C ; Отображает”7”

.BYTE A+B+C+D+E+F+G ; Отображает”8”

.BYTE A+B+C+D+F+G ; Отображает”9”

; Табл.сопротив.30–40 °C. Значения = KОмыX1000–в 3 децимальных цифры

.EVEN ; Выравнивание по чётному адресу

RESIS_TAB

.WORD 12953 ;300C

.WORD 12666

.WORD 12378

.WORD 12090

.WORD 11858

.WORD 11626

.WORD 11393

.WORD 11161

.WORD 10929

.WORD 10353 ;400C

; Вектора прерываний

.EVEN ; Выравнивание по чётному адресу

.SECT ”INT_VECT”,I_VECTORS–31

.WORD RESET ; PORT0, Биты 2 .. 7

.WORD BTINT ; BASIC TIMER

.WORD RESET ; Нет источника

.WORD RESET ; Нет источника

.WORD RESET ; Нет источника

.WORD TPINT ; TIMER PORT

.WORD RESET ; Нет источника

.WORD RESET ; Нет источника

.WORD RESET ; Нет источника

.WORD RESET ; Нет источника

.WORD RESET ; WATCHDOG/TIMER, Режим таймера

.WORD RESET ; Нет источника

.WORD RESET ; UART

.WORD RESET ; P0.0

.WORD RESET ; NMI, Сбой генератора

.WORD RESET ; POR,Внеш. Reset, WATCHDOG

.END


Страницы: 1, 2, 3, 4

рефераты
Новости