_WELCOMETO Radioland

Главная Схемы Документация Студентам Программы Поиск Top50  
Поиск по сайту



Навигация
Главная
Схемы
Автоэлектроника
Акустика
Аудио
Измерения
Компьютеры
Питание
Прог. устройства
Радио
Радиошпионаж
Телевидение
Телефония
Цифр. электроника
Другие
Добавить
Документация
Микросхемы
Транзисторы
Прочее
Файлы
Утилиты
Радиолюб. расчеты
Программирование
Другое
Студентам
Рефераты
Курсовые
Дипломы
Информация
Поиск по сайту
Самое популярное
Карта сайта
Обратная связь

Студентам


Студентам > Курсовые > Разработка медицинского цифрового термометра

Разработка медицинского цифрового термометра

Страница: 3/5

out portA,r0              

in r0,portA      

sbi r0,1                 ; установит W/R в 1

out portA,r0

 

ret

 

2.3 НАПИСАНИЕ ПРОГРАММЫ

 

  Текст программы составленный по структурной схеме на рис.6 приведен ниже

 

.include "Atmega103.inc"

 

.def flag=r1

.def flagszap  =0

.def flagklav  =1

.def flagsbr   =2

.def flagvyvod =3

.def flagdan   =4

.def flagpr    =5

 

 

.def tmp=r20

.cseg

 

.org 0H

 rjmp main

 

 

main:

rcall init               ; инициализация контроллера

rcall initlcd            ; инициализация ЖКИ

rcall priglashenie       ;программа выдачи начального приглашения

m1:

in r30,PinC       ; программа опроса клавиатуры и флагов

 

ldi r31,FEh  

cp  r30,r31       ;если равно, то переходим на подпрограмму ввода

rcall vvod

 

ldi r31,FDh  

cp  r30,r31       ;если равно, то переходим на подпрограмму вывода

rcall vyvod

 

ldi r31,7Fh  

cp  r30,r31       ;если равно, то переходим на подпрограмму сброса

rcall sbros

 

sbrc USR,RxC     ; проверяем если бит USR,RxC=1, то переходим на    

                   подпрограмму приема данных от компьютера, если не

                   равен то пропускаем следующую команду

rcall priem      ; подпрограмма приема данных, после своего окончания

                   работы она скидывает флаг USR,RxC

sbrs flagdan     ; проверяем если 0, то переход на m2, если нет, то

                   пропускаем следующую команду

rjmp  m2

sbrs flagpr

rjmp  m2

rcall outdan    ; подпрограмма выдачи данных на компьютер, после

                  выполнения выдачи данных сбрасывает флаг данных и

                  приемника

 

 

m2:

 

rjmp m1

 

 

 

init:

ldi r31,ramend      ; указываем стек

out SPL,r31

 

ldi r31,ffh         ; порт B настроить на вывод

out ddrb,r31

 

ldi  r31, 00h       ; Port С to ввод

out  DDRС, r31

 

ldi  r31,FFh        ; подключаем резисторы

out  PortС, r31

 

ldi tmp,00011101    ; инициализация UART

out UCR,tmp         ; ldi tmp,25          ;9600 бит/сек при fclk=4МГц

out UBBR,tmp        ;

 

                   ;инициализация встроенного АЦП

set ADCSR.ADEN      ;разрешаем работу АЦП

set ADCSR.ADFR    ;устанавливаем режим циклического преобразования

ldi ADPS,05H        ;устанавливаем тактовую частоту 125 KHz при                          

                    ;внешнем кварце 4MHz

ret

 

 

icom:

in r0,portA       

sbi r0,2                 ; установит RS в 1

out portA,r0

in r0,portA       

сbi r0,1                 ; установит W/R в 0

out portA,r0

in r0,portA       

sbi r0,0                 ; установит Е в 1

out portC,r0

 

out portB,r25            ;записать в ЖКИ команду из регистра r25

 

in r0,portA       

cbi r0,0                 ;сбросить Е в 0

out portA,r0              

in r0,portA      

sbi r0,1                 ; установит W/R в 1

out portA,r0

 

ret

 

 

 

initlcd:

rcall del       

ldi r25,30h            

rcall icom      ; осуществляем запись команды в регистр ЖКИ       

rcall del

ldi r25,30h             

rcall icom      ; осуществляем запись команды в регистр ЖКИ      

rcall del

ldi r25,30h            

rcall icom 

ldi r25,38h      ; устанавливаем разрядность шины данных=8,

                   количество строк =2, шрифт 5х7 точек                     

rcall icom       ; осуществляем запись команды в регистр ЖКИ      

ldi r25,08h      ; включить дисплей, зажечь курсор                    

rcall icom             

ldi r25,01h      ; очистить дисплей и установить курсор в нулевую позицию

rcall icom             

ldi r25,06h      ;устанавливаем направление сдвига курсор в право,

                  запретить сдвиг дисплея вместе со сдвигом курсора                   

rcall icom             

ret

 

 

del:

        ldi r17,150             ;задержка ~15 ms при кварце 4 МГц

l:      ldi r18,200             ;

l1:     dec r18                 ;