Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Організація робочого місця - це система заходів по його оздобленню заходами і предметами праці та їх розміщенню в певному порядку.

Читайте также:
  1. A. [мах. 2,5 балла] Соотнесите систематические группы растений (А–Б) с их признаками (1–5).
  2. EV3.6 Система управления аккумулятором (СУА)
  3. Fidelio Front Office - система автоматизации работы службы приема и размещения гостей.
  4. HLA - система; классы антигенов, биологические функции, практическое значение HLA-типирования.
  5. IC1.9.1 Система низкого давления (LPI)
  6. II. Британская система маяков
  7. III. Вегетативная нервная система

Оздоблення робочого місця – це система його укомплектовування основним і допоміжним технологічним устаткуванням, а також робочою документацією в кількості необхідній для ефективного виконання виробничого завдання.

Планування робочого місця – це взаємне просторове розміщення на відведеній виробничій площі основного та допоміжного обладнання, технологічного та організаційного оснащення, засобів зв`язку предметів праці та працюючого.

Планування робочого місця повинно вирішувати наступні задачі:

- найбільш економічне використання виробничої площі і скорочення відстані переходів робітників і транспортування матеріалів;

- раціональне розміщення обладнання і оснащення на робочому місці в співвідношенні з послідовністю технологічного процесу, щоб забезпечити робітнику зручну позу і можливість використання передових прийомів та методів праці;

- забезпечення економії руху і сил працюючого шляхом раціонального розташування матеріалів та інструментів в шафах та шухлядах, планшетах і т.п.;

- ізоляція робочого місця в шкідливих умовах праці від інших робочих місць.

· При аналізі планування робочого місця враховуються наступні показники:

- санітарні норми площі, згідно з якими на кожного робітника повинно приходити не менше 4,5 кв.м. виробничої площі, та не менше 15м3 об’єму виробничого приміщення;

- раціональність використання виробничої площі;

- відповідність антропометричним показникам: розташування робочої площини, виробничої меблі, розташування засобів керування, оргтехоздоблення, які забезпечують фізіологічно доцільну робочу позу;

- відповідність розташування обладнання і оснащення нормам техніки безпеки та умовам праці.

Безпосередньо електромеханіку доводиться мати діло з приладами, пристроями, і інструментами, більшість з яких живляться від змінної напруги, займається складанням схем, креслень деталей, монтажними і збірними роботами.

Характер виконуваної роботи визначає вимоги до поліпшення лабораторії, вона повинна бути сухою, освітленню і добре провітреною. Радіатори та труби центрального опалення повинні бути загородженні дерев’яними ґратами, щоб попередити контактні електротравми. При паянні повітря лабораторії парами каніфолі та припою, тому робоче місце треба обладнати витяжкою чи вентиляцією. Крім загальних підвісних ламп, здійснюючих рівномірне освітлення, на робочому місці повинні бути настільні лампи з відбивачами світла, покриті білою фарбою чи емаллю.

Бажано, щоб при лабораторії було приміщення для збереження приладів, матеріалів, деталей, інструментів та інших предметів, які використовуються кожен день.

Уздовж стін треба передбачити місце для настільного свердлильного верстату та різне обладнання для виконання різних допоміжних операцій. На стіні біля обладнання вивісити правила безпеки при роботі на цьому обладнанні.

· В групу інструментів необхідних для роботи електромеханіка входять:

- паяльник електричний потужністю до 40 Вт;

- паяльник електричний потужністю більше 40Вт;

- плоскогубці 2 шт.;

- круглогубці 2 шт.;

- кусачки торцеві і бокові 2 шт.;

- пінцети 2 шт.;

- монтажні або перочинні ножі 2 шт.;

- набір викруток;

- затискачі ручні, настільні та слюсарні;

- дриль ручна або електрична з набором свердел;

- запильники та надфілі різних розмірів і форм;

- пилка слюсарна ручна;

- керн для визначення місць свердлення;

- лінійки металеві;

- штангенциркуль;

- мікрометр;

- коловорот.

Забезпечення лабораторії матеріалами і деталями визначається плановою кількістю праці на рік. Необхідний деякий резерв матеріалів і деталей для запланованих конструкцій, передбачити які не завжди вдається перед новим роком. Найбільш ходовими матеріалами є: припій ПОС 61 і технічна каніфоль, папір для креслення, міліметрівка, калька, клей БФ2 або момент, дріт обмоточний марок ПЕВ-1, або ПЕВ-2, листовий гетинакс і склотекстоліт. Окремі матеріали з цього орієнтованого переліку можуть бути взаємозамінними.

Робота сучасного електромеханіка неможлива без використання замірювальних приладів. Вимірювальна апаратура необхідна для того щоб знайти несправну деталь, і полагодити прилад.

В лабораторії електромеханіка повинні бути:

- осцилограф типу Н313, ОМЛ-2М, ОМЛ-76-2 або інші;

- цифровий або стрілочний тестер;

- генератор типу Г4-1а.

В наш час майже всі електромонтажні з`єднання здійснюються пайкою. Технологічний процес включає в себе плавлення ізоляції і луження.Операції пайки, луження та опалювання ізоляції, супроводжуються забрудненням повітряної середи парами свинцю, олова, та інших еле­ментів, які входять у склад припою. Пари попадаючи в повітря робочого приміщення, конденсуються і перетворюються в аерозоль такої кон­денсації, залишки якої по своїй небезпечності приближуються к димам.

Промислова естетика - це галузь про чарівне в сфері промисло­вості. Промислова естетика відіграє значну роль при створенні сприятливих умов праці. Її впровадження сприяє підвищенню ефективності виробництва.

· При розробленні кольорового оформлення робочого місця виконувати слідуючи рекомендації:

- кольорове оформлення повинно відповідати характер у виробничого процесу, умовам праці і позитивно впливати на робітників;

- кольорове оформлення використовується і як засіб інформуван-ня та орієнтування в промислових умовах і обладнанні;

- промисловий одяг повинен бути: зручним, практичним в роботі відповідати естетичним вимогам працівника.

Необхідно враховувати зручне розташування предметів праці на робочому місці, забезпечення раціонального положення робітника у всіх позиціях. Розрізняють зовнішнє і внутрішнє планування робочих місць. Раціональне зовнішнє планування передбачає доцільне розміщення на робочому місці технологічного і допоміжного обладнання, інвентарю і організаційної оснастки. Раціональне внутрішнє планування робочого місця представляє собою найкраще розташування технологічного оснащення і інструменту в інструментальних шафах і тумбочках, заготовок і деталей на робочому місці, яке забезпечує максимальну економію трудових рухів.

На рисунку 10.1 зображено розташування предметів праці на робочому столі електромеханіка

 

Полка

4

7

3

8

1

· 2

·

·

· Рисунок 10.1 - Робоче місце електромеханіка

 

1 - тестер;

2 - стілець;

3 - осцилограф;

4 - ящик для інструментів;

5 - лампа;

6 - технічна документація;

7 - припій;

8 - паяльник

10.2 Організація робочого місця і режиму роботи оператора ЕОМ

Яку б тривогу не викликали деякі зі звітів статистичних даних, варто мати на увазі що багато хвороб, зв'язані з роботою на персональному комп'ютері, можна запобігти. Ознайомивши з найбільш розповсюдженими причинами комп'ютерних "напастей" можна уникнути їх, докорінно змінивши пристрій робочого місця і звичний ритм роботи.

Сьогодні фахівці в області ергономіки вже зрозуміли, що не можна знайти ідеальне положення, у якому можна перебувати і працювати протягом усього дня. Для більшості людей комфортабельним робочим місцем повинне бути таке, котре можна пристосувати не менш чим для 2 позицій. При цьому положення крісла, монітора і клавіатури повинні щораз відповідати характеру виконуваної роботи, антропологічним даним і звичкам працівника і виключати незручні пози і тривалі напруги. Наприклад, багато хто вважають, що для роботи на комп'ютері більше всього підходить вертикальне положення зі злегка нахиленим уперед сидінням.

10.2.1 Розташування дисплею

Положення тіла звичайно відповідає напрямку погляду. Дисплеї, розташовані занадто низько чи під неправильним кутом, є основними причинами появи сутулості. Рівень зору повинний приходитися на центр екрана. Лінія погляду повинна бути перпендикулярна центру екрана, і оптимальне її відхилення у вертикальній площині повинне знаходитися в межах 5 град, допустиме 10 град. Оптимальний огляд у горизонтальній площині від центральної осі екрана повинний бути в межах 15 град, припустимий 30 град. При розгляданні інформації, що знаходиться в крайніх положеннях екрана, кут розглядання, обмежений лінією погляду і поверхнею екрана, повинний бути не менш 45 градусів. Чим більше кут розглядання, тим легше сприймати інформацію з екрана і менше будуть утомлюватися очі. Для тих, хто носить окуляри, кут між напрямком прямого погляду і погляду на дисплей може бути більше. Відстань від дисплея до очей повинна лише небагато перевищувати звичну відстань між книгою й очима, тобто оптимально 60-70 см, припустимо не менш 50 см.

Наприклад, для режиму 25 рядків по 80 символів на екрані монітора персонального комп'ютера ІВМ PC XT/AT при S=3 мм мінімальна відстань L повинна бути 51.6 см.

10.2.2 Властивості крісла

Крісло повинне мати підлокітники і підйомно-поворотний пристрій для регуляції висоти сидіння і спинки, а також кута нахилу спинки. Бажано, щоб рельєф спинки крісла повторював форму спини. Висота поверхні сидіння повинна регулюватися в межах 40-50 см., кут нахилу спинки - у межах 90-110 град. Ширина сидіння повинна бути 40 см, глибина

не менш 38 см. Висота опорної поверхні спинки - не менш 30 см., її ширина - не менш 38 см.

Крісло варто встановлювати на такій висоті, щоб не відчувалося тиску на куприк (це може бути при низькому розташуванні крісла) чи на стегна (при занадто високому). Фахівці з ергономіки вважають, що кут між стегнами і хребтом повинний складати 90 град.

Працюючий за терміналом повинний сидіти прямо, спираючи в області нижніх вузлів лопаток на спинку крісла, не сутулячи, з невеликим нахилом голови вперед (до 5-7 град.). Передпліччя повинні спиратися на поверхню столу, знімаючи тим самим статична напруга плечового пояса і рук.

10.2.3 Розташування клавіатури

Руки повинні розташовуватися так, щоб вони знаходилися на відстані декількох десятків сантиметрів від тулуба. Крісло і клавіатура встановлюються так, щоб не приходилося далеко тягтися. При зміні положення тіла (наприклад, з вертикального на похиле) обов'язково варто перемінити і положення клавіатури. При цьому зручно скористатися регульованою підставкою клавіатури, але можна поставити клавіатуру і на коліна.

10.2.4 Параметри робочого стола

Довжина столу (зліва направо) повинна бути не менш 70 см., ширина повинна забезпечувати місце перед клавіатурою (не менш 30 см.) для розташування записів, тексті, програм та ін. Поверхня столу, на якій розташовуються клавіатура і записи, повинна мати нахил 12-15 град.; допускається і горизонтальна поверхня столу. Висота краю

столу, зверненого до працюючого за відеотерміналом, чи крісла стільця над підлогою і ширина простору для ніг під столом повинні прийматися відповідно до росту програміста. Ширина простору для ніг під столом повинна бути не менш 50 см., глибина - не менш 45 см. Зручна висота столу особливо важлива в тому випадку, коли на ньому розташовується клавіатура. Якщо стіл занадто високий і його висоту не можна змінити, а в клавіатури відсутня чи недостатньо висока підставка, варто вище підняти сидіння крісла, а під ноги підставити щось. Якщо стіл занадто низький, потрібно що-небудь підкласти під його ніжки.

10.2.5 Ритм роботи оператора ЕОМ

Згідно "Тимчасовим санітарним нормам і правилам для працівників обчислювальних центрів" при введенні даних, редагуванні програм, читанні інформації з екрана безупинна тривалість роботи з відеотерміналом не повинна перевищувати 4-х годин (при 8 – годинному робочому дні). Для зниження напруженості праці необхідно по можливості рівномірно розподіляти навантаження і раціонально чергувати характер діяльності.

Через кожну годину роботи має бути перерва на 5-10 хвилин, а через 2 години - на 15 хвилин. Один чи декілька раз у годину необхідно виконувати серію легких вправ на розтягування, що можуть зменшити напругу, що накопичується в м'язах при тривалій роботі на комп'ютері.

З метою профілактики й усунення перевтоми і перенапруги бажано після закінчення робочого дня і під час великих перерв проводити сеанси психофізіологічного розвантаження і зняття утоми.

11 Висновок

У даному дипломному проекті розроблено пристрій - електронний годинник-вольтметр-термометр. Розроблено схему електрична принципова цього пристрою і програма для мікроконтролера. У результаті ассемблирования отримана прошивка програми для пам'яті мікроконтролера. Застосування мікроконтролера дозволило спростити принципову схему і розширити функціональні можливості мікроконтролера, так як для зміни функцій пристрою достатньо внести зміни в програму мікроконтролера.

· Список використаних джерел

1 Голубцов М.С. Микроконтроллеры AVR: от простого к сложному Москва. Солон- пресс 2003.

2 http://www.atmel.ru/ - описание AVR микроконтроллеров, русскоязычный сайт.

3 http://www.dontronics.com/atmel.html - программные проекты по AVR.

4 http://www.gaw.ru/, http://www.cec-mc.ru - информация о МК фирмы ATMEL

5 Справочник по цифровым и логическим элементам. Авторы разработчики ПО: Шульгин О.А., Шульгина И.Б., Воробьев А.Б.

6 Щелкунов Н.Н., „Микропроцессорные средства и системы” –М.: Радио и связь, 1989.

7 Белов А.В. „Самоучитель по микропроцессорной технике”

8 Боборыкин А.В. „Однокристальные микроЭВМ” – М.: МИКАП, 1994.

9 Проектування мікропроцесорних систем, В. П. Малахов, Д. П. Яковлев; Одеса: Астропринт, 2002.

Додаток А

Лістинг програми

; ------ Processor: ATMEL AT89C2051 PC24 ------

; ------ Code is timed for 10 MHz clock ------

.INCLUDE LIBREG.ASM;8051 SFR set

; ------ Constantes ------

STACK.EQU 056H;stack location

;SYS.EQU 01EH;RC5 system

SYS.EQU 0H;RC5 system

VMIN.EQU 100;/10 V min limit

RTCVL.EQU 0E6H;20mS timer load value

RTCVH.EQU 0BEH

V1S.EQU 50;program timer RTPCS value 1S/20mS=50

INDLTMV.EQU 4;x1S indication timer value

CYCSTMV.EQU 25;x20mS cycle timer

CNTSTMV.EQU 50;x20mS control timer

SNDSTMV.EQU 10;x20mS sound timer

ALSTMV.EQU 5;x20mS alarm sound timer

; ------ Ports ------

SER.EQU INT0;RC-5 Line

THERM1.EQU P1.4;1-Wire thermometer 1

THERM2.EQU P1.3;1-Wire thermometer 2

THERM3.EQU P1.2;1-Wire thermometer 3

THERM4.EQU T0;1-Wire thermometer 4

DATA.EQU RXD;Serial Port Data

CLK.EQU TXD;Serial Port Clock

CS1.EQU P1.7;LCD-Driver 1 CS Line

CS2.EQU P1.6;LCD-Driver 2 CS Line

RST.EQU INT1;Real Time Clock RST Line

COMP.EQU P3.6;Comparator Out

RC.EQU P1.5;RC Network

SND.EQU T1;Sound Beeper Line

; ------ Variables ------

; Bit addressing memory

RTPC.EQU 020H;Real time program counter

T040M.EQU M_20H.0;40mS period bit

T080M.EQU M_20H.1;80mS period bit

T160M.EQU M_20H.2;160mS period bit

T320M.EQU M_20H.3;320mS period bit

T640M.EQU M_20H.4;640mS period bit

T1S28.EQU M_20H.5;1.28S period bit

T2S56.EQU M_20H.6;2.56S period bit

T5S12.EQU M_20H.7;5.12S period bit

RTPCS.EQU 021H;Real time program counter (1S part)

DPS.EQU 022H;decimal points

DP1.EQU M_22H.0;decimal point 1

DP2.EQU M_22H.1;decimal point 2

DP3.EQU M_22H.2;decimal point 3

DP4.EQU M_22H.3;decimal point 4

DP5.EQU M_22H.4;decimal point 5

DP6.EQU M_22H.5;decimal point 6

DP7.EQU M_22H.6;decimal point 7

DP8.EQU M_22H.7;decimal point 8

CNT1.EQU 023H;control byte for LCD driver 1

SEG1.EQU M_23H.0;segment 1

SEG2.EQU M_23H.1;segment 2

SEG3.EQU M_23H.2;segment 3

SEG4.EQU M_23H.3;segment 4

CNT2.EQU 024H;control byte for LCD driver 2

SEG5.EQU M_24H.0;segment 5

SEG6.EQU M_24H.1;segment 6

SEG7.EQU M_24H.2;segment 7

SEG8.EQU M_24H.3;segment 8

MINUS.EQU M_25H.0;minus temperature

SEC.EQU M_25H.1;second bit

BIT_LK.EQU M_25H.2;bit LOCK

EDBEG.EQU M_25H.3;begin edit flag

TOV.EQU M_25H.4;T overflow flag

ALENB.EQU M_25H.5;alarm enable flag

ALS.EQU M_25H.6;alarm sound flag

VCLK.EQU M_25H.7;voltmeter clock

ED_FLAGS.EQU 026H

ED_TM.EQU M_26H.0;timer edit flag

ED_AL.EQU M_26H.1;alarm edit flag

ED_CL.EQU M_26H.2;clock edit flag

VMF.EQU M_27H.0;voltmeter min flag

; Internal data memory

DIG1.EQU 030H

DIG2.EQU 031H

DIG3.EQU 032H

DIG4.EQU 033H

DIG5.EQU 034H

DIG6.EQU 035H

DIG7.EQU 036H

DIG8.EQU 037H

CODE.EQU 038H

INDPH.EQU 039H;indication phase (0-T1,1-T2,2-T3,3-TM,4-VOLT)

POS.EQU 03AH

CL1.EQU 03BH

CL2.EQU 03CH

CL3.EQU 03DH

CL4.EQU 03EH

TM1.EQU 03FH

TM2.EQU 040H

TM3.EQU 041H

TM4.EQU 042H

AL1.EQU 043H

AL2.EQU 044H

AL3.EQU 045H

AL4.EQU 046H

VL1.EQU 047H

VL2.EQU 048H

VL3.EQU 049H

CTMV.EQU 04AH

VCNT.EQU 04BH

VH.EQU 04CH

VL.EQU 04DH

HR.EQU 04EH

INDLTM.EQU 04FH

CYCSTM.EQU 050H

CNTSTM.EQU 051H

SNDSTM.EQU 052H

; ------ Vectors Area ------

.ORG 0000H;reset vector

LJMP INIT

.ORG 0003H;INT0 vector

LJMP RC5

INIT: MOV SP,#STACK

SJMP INIT1

.ORG 000BH;INT TIMER 0 vector

LJMP RTC

; ------ Main Program ------

INIT1: CLR RST

CLR CLK;clock line init

CLR A

MOV VH,A

MOV VL,A

MOV R37,A

MOV CODE,A

MOV VCNT,A

MOV INDPH,A;set indication phase 0

MOV INDLTM,A;indication timer clear

MOV CYCSTM,A;cycle timer clear

MOV CNTSTM,A;control timer clear

MOV ED_FLAGS,A

CPL A

MOV CTMV,A

MOV HR,A

MOV R3,#99;set T limit

CLR BIT_LK;lock off

SETB ALENB;alarm enable

CLR ALS;clear alarm sound flag

LCALL GET_VOLT

CLR VMF;clear voltmeter min flag

; LCD clear

MOV A,#CH_BL

MOV DIG1,A

MOV DIG2,A

MOV DIG3,A

MOV DIG4,A

MOV CNT1,#0F0H

MOV DIG5,A

MOV DIG6,A

MOV DIG7,A

MOV DIG8,A

MOV CNT2,#0H

MOV DPS,#0H

LCALL LCD

SETB DP3

LCALL GET_CL

; Get alarm values from RTC

MOV A,#11000001B

LCALL SHRD

MOV AL1,A

MOV A,#11000011B

LCALL SHRD

MOV AL2,A

MOV A,#11000101B

LCALL SHRD

MOV AL3,A

MOV A,#11000111B

LCALL SHRD

MOV AL4,A

; Get timer values from RTC

MOV A,#11001001B

LCALL SHRD

MOV TM1,A

MOV A,#11001011B

LCALL SHRD

MOV TM2,A

MOV A,#11001101B

LCALL SHRD

MOV TM3,A

MOV A,#11001111B

LCALL SHRD

MOV TM4,A

LCALL START_T1

LCALL START_T2

LCALL START_T3

MOV TMOD,#11H;timer 0 and timer 1 init

CLR TR0;timer 0 stop

CLR TR1;timer 1 stop

MOV TL0,#RTCVL;timer 0 load

MOV TH0,#RTCVH

MOV RTPC,#0H;program counter load

MOV RTPCS,#V1S;1S value load

SETB PX0;high INT0 priority

SETB IT0;fall INT0 activating

SETB EX0;enable INT0

CLR PT0;timer 0 int low priority

SETB ET0;timer 0 int enable

SETB TR0;timer 0 start

SETB EA;interrupts enable

MAIN: CLR EX0;RC int disable

MOV A,R37;command code load

ANL R37,#0C0H;clear com. bits

SETB EX0;RC int enable

MOV R0,A

ANL A,#3FH;control bits clear

JNZ PRESS

SJMP MAIN1;no press or unused code

PRESS: MOV A,R0

CJNE A,CODE,DIF;jump if new command

SJMP MAIN1

DIF: MOV CODE,A;new press, store code

ANL A,#3FH;control bits clear

MOV R7,A

LCALL SOUND

;Control Functions Analysis and Processing

CJNE R7,#COD_EN,LB2

ACALL ENTER;enter function

SJMP LB1

LB2: JNC LB1

ACALL NUM;0..9 functions

LB1: CJNE R7,#COD_ES,$+5H

ACALL ESCAPE

CJNE R7,#COD_BK,$+5H

ACALL BACK

CJNE R7,#COD_LK,$+5H

ACALL LOCK

CJNE R7,#COD_LS,$+5H

ACALL LIST

CJNE R7,#COD_AL,$+5H

ACALL ALARM

CJNE R7,#COD_TM,$+5H

ACALL TIMER

CJNE R7,#COD_TC,$+5H

ACALL TCLEAR

CJNE R7,#COD_AD,$+5H

ACALL ALDS

CJNE R7,#COD_CL,$+5H

ACALL CLOCK

MAIN1: JNB VCLK,SKIPV

CLR VCLK

MOV A,VCNT

JZ SKIPV

; Analog to digital conversion

CLR A

CLR RC

MOV R0,#10

DJNZ R0,$

V_UP: INC A

JZ OUTOFR

JB COMP,V_UP

OUTOFR: DEC A

SETB RC

ADD A,VL

MOV VL,A

MOV A,VH

ADDC A,#0H

MOV VH,A

DEC VCNT

SKIPV: MOV A,CYCSTM

JNZ MAIN3

MOV CYCSTM,#CYCSTMV;cycle timer load

MOV A,INDLTM

JNZ SPHASE

MOV INDLTM,#INDLTMV;indication timer load

MOV A,INDPH

JB BIT_LK,PHM5

INC A

CJNE A,#5H,PHM5

CLR A

PHM5: MOV INDPH,A

SPHASE: CLR DP5

JB ED_TM,IDTM

MOV A,ED_FLAGS

JNZ MAIN2

MOV A,INDPH

JZ IDT1

DEC A

JZ IDT2

DEC A

JZ IDT3

DEC A

JZ IDCL

IDVL: SETB DP5

MOV A,#CH_BL

MOV DIG1,A

MOV DIG2,#CH_U

MOV DIG4,VL1

MOV DIG5,VL2

MOV DIG6,VL3

MOV DIG7,A

MOV DIG8,A

SJMP MAIN2

IDCL: CPL SEC

MOV DIG1,#CH_C

MOV DIG2,#CH_L

MOV DIG4,CL1

MOV DIG5,CL2

MOV DIG6,#CH_MN

JB SEC,INDCL1

MOV DIG6,#CH_BL

INDCL1: MOV DIG7,CL3

MOV DIG8,CL4

SJMP MAIN2

IDT3: ACALL INDT3

SJMP MAIN2

IDT2: ACALL INDT2

SJMP MAIN2

IDT1: ACALL INDT1

SJMP MAIN2

IDTM: ACALL INDTM

MAIN2: LCALL LCD

MAIN3: MOV A,CNTSTM

JNZ MAIN4

MOV CNTSTM,#CNTSTMV

CLR TOV

MOV R3,#55;set T1 limit 55

LCALL READ_T1

MOV R3,#99;set T2,T3 limits 99

LCALL READ_T2

LCALL READ_T3

LCALL GET_VOLT

LCALL GET_CL;get time from clock

LCALL TINC;timer INC and alarm check

MAIN4: JNB ALS,MAIN5

MOV A,SNDSTM

JNZ MAIN5

MOV SNDSTM,#ALSTMV

SJMP DOSND

MAIN5: MOV C,TOV

ORL C,VMF

JNC MAIN6

MOV A,SNDSTM

JNZ MAIN6

MOV SNDSTM,#SNDSTMV

DOSND: CLR A

LCALL SOUND

MAIN6: LJMP MAIN

; ------ Subroutines Area ------

; ------ Keys Functions ------

; Numeric keys

NUM: MOV C,ED_CL

ORL C,ED_AL

JNC NUM1

MOV R00,R7

DEC R0;perform digit value

MOV A,POS;position check

DEC A

JZ ND1

DEC A

JZ ND2

DEC A

JZ ND3

DEC A

JZ ND4

JB EDBEG,NUM1

SETB EDBEG

MOV DIG6,#CH_BL

MOV A,#CH_MN

MOV DIG4,A

MOV DIG5,A

MOV DIG7,A

MOV DIG8,A

MOV POS,#1H

ND1: MOV A,R0;POS=1

ADD A,#0FDH

JC NUM1;jump if R0>2

MOV DIG4,R0

SJMP NUME

ND2: MOV A,DIG4;POS=2

XRL A,#2H

JNZ ND21;jump if DIG4<2

MOV A,R0

ADD A,#0FCH

JC NUM1;jump if DIG4=2 and R0>3

ND21: MOV DIG5,R0

SJMP NUME

ND3: MOV A,R0;POS=3

ADD A,#0FAH

JC NUM1;jump if R0>5

MOV DIG7,R0

SJMP NUME

ND4: MOV DIG8,R0;POS=4

NUME: INC POS;next position

NUM1: MOV CYCSTM,#0H;display changes

RET

; Clock set function

CLOCK: MOV A,ED_FLAGS

JNZ CLRET

SETB ED_CL;set clock edit flag

CLR EDBEG

MOV DIG1,#CH_P;perform DIGs

MOV DIG2,#CH_C

MOV DIG3,#CH_BL

MOV DIG4,CL1

MOV DIG5,CL2

MOV DIG6,#CH_MN

MOV DIG7,CL3

MOV DIG8,CL4

MOV POS,#5H

MOV CYCSTM,#0H;display changes

LCALL SET_CL

CLRET: RET

; Alarm time set function

ALARM: MOV A,ED_FLAGS

JNZ ALRET

SETB ED_AL

CLR EDBEG

MOV DIG1,#CH_P

MOV DIG2,#CH_A

MOV DIG3,#CH_BL

MOV DIG4,AL1

MOV DIG5,AL2

MOV DIG6,#CH_MN

MOV DIG7,AL3

MOV DIG8,AL4

MOV POS,#5H

MOV CYCSTM,#0H

ALRET: RET

; Backspace function

BACK: MOV C,ED_CL

ORL C,ED_AL

JNC BRET

SETB EDBEG

MOV DIG6,#CH_BL

MOV A,POS

DEC A

JZ BRET;jump if POS=1

DEC POS

DEC A

JNZ BPN2

MOV DIG4,#CH_MN

BPN2: DEC A

JNZ BPN3

MOV DIG5,#CH_MN

BPN3: DEC A

JNZ BPN4

MOV DIG7,#CH_MN

BPN4: MOV DIG8,#CH_MN

MOV CYCSTM,#0H;display changes

BRET: RET

; Enter function

ENTER: JBC ED_TM,ENTM

MOV A,POS

CJNE A,#5H,ENRET

JBC ED_CL,ENCL

JBC ED_AL,ENAL

ENRET: RET

ENCL: MOV CL1,DIG4

MOV CL2,DIG5

MOV CL3,DIG7

MOV CL4,DIG8

LCALL SET_CL;set clock

MOV CYCSTM,#0H

MOV INDLTM,#0H

RET

ENAL: MOV AL1,DIG4

MOV AL2,DIG5

MOV AL3,DIG7

MOV AL4,DIG8

SET_AL: MOV R0,AL1;save alarm values in RTC

MOV A,#11000000B

LCALL SHWR

MOV R0,AL2

MOV A,#11000010B

LCALL SHWR

MOV R0,AL3

MOV A,#11000100B

LCALL SHWR

MOV R0,AL4

MOV A,#11000110B

LCALL SHWR

SETB ALENB

SETB DP3

ENTM: MOV CYCSTM,#0H

RET

; Escape function

ESCAPE: JBC ED_TM,ES1

JBC ED_AL,ES1

JBC ED_CL,ES1

RET

ES1: MOV CYCSTM,#0H

RET

; Timer function

TIMER: SETB ED_TM

MOV CYCSTM,#0H

RET

; Timer clear function

TCLEAR: JNB ED_TM,TCRET

SET_TM: MOV R0,CL1;save timer values in RTC

MOV TM1,R0

MOV A,#11001000B

LCALL SHWR

MOV R0,CL2

MOV TM2,R0

MOV A,#11001010B

LCALL SHWR

MOV R0,CL3

MOV TM3,R0

MOV A,#11001100B

LCALL SHWR

MOV R0,CL4

MOV TM4,R0

MOV A,#11001110B

LCALL SHWR

MOV CYCSTM,#0H

TCRET: RET

; Alarm disable function

ALDS: CLR ALENB

CLR ALS

CLR DP3

RET

; Lock function

LOCK: CPL BIT_LK

MOV CYCSTM,#0H

RET

; List function

LIST: CLR BIT_LK

MOV CYCSTM,#0H

MOV INDLTM,#0H

RET

; ------ End Of Keys Functions ------

; T1 indication

INDT1: ACALL INDT

MOV DIG2,#1

LCALL READ_T1

ACALL INDTA

LCALL ST_T1;start T1 conversion

RET

INDT2: ACALL INDT

MOV DIG2,#2

LCALL READ_T2

ACALL INDTA

LCALL ST_T2;start T2 conversion

RET

INDT3: ACALL INDT

MOV DIG2,#3

LCALL READ_T3

ACALL INDTA

LCALL ST_T3;start T3 conversion

RET

INDTA: JNC FAIL

JNB MINUS,TPL1

MOV DIG4,#CH_MN

TPL1: MOV DIG5,R2

MOV DIG6,R1

RET

FAIL: MOV DIG4,#CH_BL

MOV DIG5,#CH_F

MOV DIG6,#CH_A

MOV DIG7,#CH_I

MOV DIG8,#CH_L

RET

INDT: MOV DIG1,#CH_T

MOV DIG4,#CH_BL

MOV DIG7,#CH_GR

MOV DIG8,#CH_C

RET

INDTM: MOV DIG1,#CH_BL

MOV DIG2,#CH_C

MOV DIG6,#CH_MN

CLR C

MOV A,CL4

SUBB A,TM4

JNC IDMT1

SUBB A,#5H

ANL A,#0FH

SETB C

IDMT1: MOV DIG8,A

MOV A,CL3

SUBB A,TM3

JNC IDMT2

SUBB A,#9H

ANL A,#0FH

SETB C

IDMT2: MOV DIG7,A

MOV A,CL2

SUBB A,TM2

JNC IDMT3

SUBB A,#5H

ANL A,#0FH

SETB C

IDMT3: MOV R0,A

MOV A,CL1

SUBB A,TM1

JNC IDMT4

SUBB A,#0CH

ANL A,#0FH

SWAP A

ORL A,R0

ADD A,#094H

DA A

MOV R0,A

ANL A,#0FH

XCH A,R0

SWAP A

ANL A,#0FH

IDMT4: MOV DIG5,R0

MOV DIG4,A

RET

; ------ 1-Wire thermometers support ------

; Start conversion in 1-wire thermometer DS1821.

; 1-wire port line called as THERM1.

; Calls TRESET1, TOUCHBY1

START_T1: LCALL TRESET1;Issue reset pulse.

JNC ACSRET1;Fail if no part on bus.

MOV A,#0CH;Write status command.

LCALL TOUCHBY1;Send command byte.

MOV A,#00H;Continuously conversion.

LCALL TOUCHBY1;Send command byte.

ST_T1: LCALL TRESET1;Issue reset pulse.

JNC ACSRET1;Fail if no part on bus.

MOV A,#0EEH;Start convert command.

LCALL TOUCHBY1;Send command byte.

SETB C

ACSRET1: RET

; This procedure transmits the Reset signal to the 1-Wire

; device and watches for a presence pulse. On return,

; the Carry bit is set if a presence pulse was detected,

; otherwise the Carry is cleared. The code is timed for

; an 10 MHz crystal.

TRESET1: MOV A,#4;Load outer loop variable.

CLR THERM1;Start the reset pulse.

MOV B,#200; 2. Set time interval.

DJNZ B,$;400. Wait with Data low.

SETB THERM1; 1. Release Data line.

MOV B,#6; 2. Set time interval.

CLR C; 1. Clear presence flag.

WAITL1: JB THERM1,WH1;Exit loop if line high.

DJNZ B,WAITL1;Hang around for 3360

DJNZ ACC,WAITL1;us if line is low.

SJMP SHORT1;Line could not go high.

WH1: MOV B,#101;Delay for presence detect.

HL1: ORL C,/THERM1;202. Catch presence pulse.

DJNZ B,HL1;202. Wait with Data high.

SHORT1: RET;Return.

; This procedure sends the byte in the accumulator

; to the 1-Wire device, and returns a byte from the

; 1-Wire device in the accumulator. Note that the NOPs

; in the following code are intended to give the

; optimum performance when using a 10 MHz crystal.

TOUCHBY1: PUSH B;Save the B register.

MOV B,#8;Setup for 8 bits.

B_LOOP1: RRC A;1. Get bit in carry.

LCALL TOUCHB1;2. Send bit.

DJNZ B,B_LOOP1;2. Get next bit.

RRC A; Get final bit in ACC.

POP B;Restore B register.

RET;Return to caller.

TOUCHB1: CLR THERM1; 1. Start the time slot.

INC DPTR; 2.

INC DPTR; 2.

MOV THERM1,C; 2. Send out the data bit.

INC DPTR; 2.

INC DPTR; 2.

INC DPTR; 2.

MOV C,THERM1; 1. Sample input data bit.

PUSH B; 2. Save B register.

MOV B,#16; 2. Delay until the end

DJNZ B,$;32. of the time slot.

POP B;Restore B register.

SETB THERM1;Terminate time slot.

RET;Return to caller.

; Read temperature from 1-wire thermometer DS1821.

; Returns C=1 in case of valid code, else C=0.

; Returns R1=DIG1, R2=DIG2, MINUS of themperature (-55..99).

; 1-wire port line called as THERM1.

; Calls TRESET1, TOUCHBY1

READ_T1: LCALL TRESET1;Issue reset pulse.

JNC RT1;Fail if no part on bus.

MOV A,#0AAH;Read temperature command.

LCALL TOUCHBY1;Send command byte.

MOV A,#0FFH;perform read

LCALL TOUCHBY1;Read temperature.

LCALL TCONV;HEX to BCD conversion

SETB C

RT1: RET

; Start conversion in 1-wire thermometer DS1821.

; 1-wire port line called as THERM2.

; Calls TRESET2, TOUCHBY2

START_T2: LCALL TRESET2;Issue reset pulse.

JNC ACSRET2;Fail if no part on bus.

MOV A,#0CH;Write status command.

LCALL TOUCHBY2;Send command byte.

MOV A,#00H;Continuously conversion.

LCALL TOUCHBY2;Send command byte.

ST_T2: LCALL TRESET2;Issue reset pulse.

JNC ACSRET2;Fail if no part on bus.

MOV A,#0EEH;Start convert command.

LCALL TOUCHBY2;Send command byte.

SETB C

ACSRET2: RET

; This procedure transmits the Reset signal to the 1-Wire

; device and watches for a presence pulse. On return,

; the Carry bit is set if a presence pulse was detected,

; otherwise the Carry is cleared. The code is timed for

; an 10 MHz crystal.

TRESET2: MOV A,#4;Load outer loop variable.

CLR THERM2;Start the reset pulse.

MOV B,#200; 2. Set time interval.

DJNZ B,$;400. Wait with Data low.

SETB THERM2; 1. Release Data line.

MOV B,#6; 2. Set time interval.

CLR C; 1. Clear presence flag.

WAITL2: JB THERM2,WH2;Exit loop if line high.

DJNZ B,WAITL2;Hang around for 3360

DJNZ ACC,WAITL2;us if line is low.

SJMP SHORT2;Line could not go high.

WH2: MOV B,#101;Delay for presence detect.

HL2: ORL C,/THERM2;202. Catch presence pulse.

DJNZ B,HL2;202. Wait with Data high.

SHORT2: RET;Return.

; This procedure sends the byte in the accumulator

; to the 1-Wire device, and returns a byte from the

; 1-Wire device in the accumulator. Note that the NOPs

; in the following code are intended to give the

; optimum performance when using a 10 MHz crystal.

TOUCHBY2: PUSH B;Save the B register.

MOV B,#8;Setup for 8 bits.

B_LOOP2: RRC A;1. Get bit in carry.

LCALL TOUCHB2;2. Send bit.

DJNZ B,B_LOOP2;2. Get next bit.

RRC A; Get final bit in ACC.

POP B;Restore B register.

RET;Return to caller.

TOUCHB2: CLR THERM2; 1. Start the time slot.

INC DPTR; 2.

INC DPTR; 2.

MOV THERM2,C; 2. Send out the data bit.

INC DPTR; 2.

INC DPTR; 2.

INC DPTR; 2.

MOV C,THERM2; 1. Sample input data bit.

PUSH B; 2. Save B register.

MOV B,#16; 2. Delay until the end

DJNZ B,$;32. of the time slot.

POP B;Restore B register.

SETB THERM2;Terminate time slot.

RET;Return to caller.

; Read temperature from 1-wire thermometer DS1821.

; Returns C=1 in case of valid code, else C=0.

; Returns R1=DIG1, R2=DIG2, MINUS of themperature (-55..99).

; 1-wire port line called as THERM2.

; Calls TRESET2, TOUCHBY2

READ_T2: LCALL TRESET2;Issue reset pulse.

JNC RT2;Fail if no part on bus.

MOV A,#0AAH;Read temperature command.

LCALL TOUCHBY2;Send command byte.

MOV A,#0FFH;perform read

LCALL TOUCHBY2;Read temperature.

LCALL TCONV;HEX to BCD conversion

SETB C

RT2: RET

; Start conversion in 1-wire thermometer DS1821.

; 1-wire port line called as THERM3.

; Calls TRESET3, TOUCHBY3

START_T3: LCALL TRESET3;Issue reset pulse.

JNC ACSRET3;Fail if no part on bus.

MOV A,#0CH;Write status command.

LCALL TOUCHBY3;Send command byte.

MOV A,#00H;Continuously conversion.

LCALL TOUCHBY3;Send command byte.

ST_T3: LCALL TRESET3;Issue reset pulse.

JNC ACSRET3;Fail if no part on bus.

MOV A,#0EEH;Start convert command.

LCALL TOUCHBY3;Send command byte.

SETB C

ACSRET3: RET

; This procedure transmits the Reset signal to the 1-Wire

; device and watches for a presence pulse. On return,

; the Carry bit is set if a presence pulse was detected,

; otherwise the Carry is cleared. The code is timed for

; an 10 MHz crystal.

TRESET3: MOV A,#4;Load outer loop variable.

CLR THERM3;Start the reset pulse.

MOV B,#200; 2. Set time interval.

DJNZ B,$;400. Wait with Data low.

SETB THERM3; 1. Release Data line.

MOV B,#6; 2. Set time interval.

CLR C; 1. Clear presence flag.

WAITL3: JB THERM3,WH3;Exit loop if line high.

DJNZ B,WAITL3;Hang around for 3360

DJNZ ACC,WAITL3;us if line is low.

SJMP SHORT3;Line could not go high.

WH3: MOV B,#101;Delay for presence detect.

HL3: ORL C,/THERM3;202. Catch presence pulse.

DJNZ B,HL3;202. Wait with Data high.

SHORT3: RET;Return.

; This procedure sends the byte in the accumulator

; to the 1-Wire device, and returns a byte from the

; 1-Wire device in the accumulator. Note that the NOPs

; in the following code are intended to give the

; optimum performance when using a 10 MHz crystal.

TOUCHBY3: PUSH B;Save the B register.

MOV B,#8;Setup for 8 bits.

B_LOOP3: RRC A;1. Get bit in carry.

LCALL TOUCHB3;2. Send bit.

DJNZ B,B_LOOP3;2. Get next bit.

RRC A; Get final bit in ACC.

POP B;Restore B register.

RET;Return to caller.

TOUCHB3: CLR THERM3; 1. Start the time slot.

INC DPTR; 2.

INC DPTR; 2.

MOV THERM3,C; 2. Send out the data bit.

INC DPTR; 2.

INC DPTR; 2.

INC DPTR; 2.

MOV C,THERM3; 1. Sample input data bit.

PUSH B; 2. Save B register.

MOV B,#16; 2. Delay until the end

DJNZ B,$;32. of the time slot.

POP B;Restore B register.

SETB THERM3;Terminate time slot.

RET;Return to caller.

; Read temperature from 1-wire thermometer DS1821.

; Returns C=1 in case of valid code, else C=0.

; Returns R1=DIG1, R2=DIG2, MINUS of themperature (-55..99).

; 1-wire port line called as THERM3.

; Calls TRESET3, TOUCHBY3

READ_T3: LCALL TRESET3;Issue reset pulse.

JNC RT3;Fail if no part on bus.

MOV A,#0AAH;Read temperature command.

LCALL TOUCHBY3;Send command byte.

MOV A,#0FFH;perform read

LCALL TOUCHBY3;Read temperature.

LCALL TCONV;HEX to BCD conversion

SETB C

RT3: RET

; Themperature HEX to BCD conversion

; Input A=0..0C9H

; Returns R1=DIG1, R2=DIG2, MINUS of themperature (-55..99).

TCONV: JNB ACC.7,TPL

SETB MINUS

CPL A

INC A

MOV R2,A

SJMP L99

TPL: CLR MINUS

MOV R2,A

CLR C

SUBB A,R3

JC L99

SETB TOV;set T overflow flag

MOV R02,R3;if R2>R3 then R2=R3 (R3=99 OR 55)

L99: MOV A,R2

MOV B,#10;HEX to BCD conversion

DIV AB

MOV R1,B

MOV R2,A

RET

; ------ 3-Wire Clock support ------

SET_CL: MOV A,#10001110B;CONTROL

MOV R0,#00000000B

LCALL SHWR

MOV A,#10010000B;TRICKLE CHARGER

MOV R0,#10101011B;8K, 2 DIODES

LCALL SHWR

MOV A,CL1

SWAP A

ORL A,CL2

MOV R0,A

MOV A,#10000100B;HR

LCALL SHWR

MOV A,CL3

SWAP A

ORL A,CL4

MOV R0,A

MOV A,#10000010B;MIN

LCALL SHWR

MOV A,#10000000B;SEC

MOV R0,#00H

LCALL SHWR

RET

GET_CL: MOV A,#10000101B;HR

LCALL SHRD

MOV R0,A

SWAP A

ANL A,#0FH

MOV CL1,A

MOV A,R0

ANL A,#0FH

MOV CL2,A

MOV A,#10000011B;MIN

LCALL SHRD

MOV R0,A

SWAP A

ANL A,#0FH

MOV CL3,A

MOV A,R0

ANL A,#0FH

MOV CL4,A

RET

;Data read into serial port

;Input: A = address, Out: A = data

SHRD: SETB RST

MOV R1,#8H;bit counter load

SHRD1: RRC A

MOV DATA,C

SETB CLK

CLR CLK

DJNZ R1,SHRD1

MOV R1,#8H;bit counter load

SHRD2: MOV C,DATA

RRC A

SETB CLK

CLR CLK

DJNZ R1,SHRD2

CLR RST

RET

;Data write via serial port

;Input: A = address, R0 = data

SHWR: SETB RST

MOV R1,#8H;bit counter load

SHWR1: RRC A

MOV DATA,C

SETB CLK

CLR CLK

DJNZ R1,SHWR1

MOV R1,#8H;bit counter load

MOV A,R0

SHWR2: RRC A

MOV DATA,C

SETB CLK

CLR CLK

DJNZ R1,SHWR2

CLR RST

RET

; Timer INC

TINC: MOV A,CL4

CJNE A,CTMV,DOTINC

RET;return if CTMV=CL4

DOTINC: MOV CTMV,A

MOV A,CL1

SWAP A

ORL A,CL2

CJNE A,HR,DOBEEP

SJMP GOON

DOBEEP: MOV HR,A

CLR A

LCALL SOUND;beep per HR

GOON: SETB ALS

JNB ALENB,NOAL

MOV A,AL1

CJNE A,CL1,NOAL

MOV A,AL2

CJNE A,CL2,NOAL

MOV A,AL3

CJNE A,CL3,NOAL

MOV A,AL4

CJNE A,CL4,NOAL

CLR ALS

NOAL: CPL ALS

RET

; Get volmeter value

GET_VOLT: MOV A,VCNT

JNZ GVR;ret if voltmeter not ready

MOV VCNT,#16

CLR VCLK

MOV A,VL

SWAP A

ANL A,#0FH

MOV R0,A

MOV A,VH

SWAP A

ANL A,#0F0H

ORL A,R0

CJNE A,#VMIN,GV1

GV1: MOV VMF,C

MOV B,#100

DIV AB

MOV VL1,A

MOV A,B

MOV B,#10

DIV AB

MOV VL2,A

MOV VL3,B

CLR A

MOV VH,A

MOV VL,A

GVR: RET

;LCD driver load

;Input: DIG1..DIG8, CNT1, CNT2

LCD: MOV DIG3,#CH_BL

JNB BIT_LK,NOLK

MOV DIG3,#CH_L

NOLK: MOV DPTR,#FONT

CLR CS1

CLR CS2

MOV A,DIG1

MOVC A,@A+DPTR

LCALL SHIFT

MOV A,DIG2

MOVC A,@A+DPTR

LCALL SHIFT

MOV A,DIG3

MOVC A,@A+DPTR

MOV C,DP3

MOV ACC.0,C

LCALL SHIFT

MOV A,DIG4

MOVC A,@A+DPTR

LCALL SHIFT

MOV A,CNT1

LCALL SHIFT

SETB CS1

SETB CS2

NOP

CLR CS2

MOV A,DIG5

MOVC A,@A+DPTR

MOV C,DP5

MOV ACC.0,C

LCALL SHIFT

MOV A,DIG6

MOVC A,@A+DPTR

LCALL SHIFT

MOV A,DIG7

MOVC A,@A+DPTR

LCALL SHIFT

MOV A,DIG8

MOVC A,@A+DPTR

LCALL SHIFT

MOV A,CNT2

LCALL SHIFT

SETB CS2

RET

;Data shift into serial port

;Input: A = data

SHIFT: MOV R1,#8H;bit counter load

SH1: RRC A

MOV DATA,C

SETB CLK

CLR CLK

DJNZ R1,SH1

RET

SOUND: CLR EA;makes sound with freq. from A

CPL A

ANL A,#0FH

RL A

RL A

ADD A,#060H

MOV R1,#0AFH

SO1: MOV R0,A

DJNZ R0,$

CPL SND

DJNZ R1,SO1

SETB SND

SETB EA

RET

; ------ Interrupt Holders ------

; TIMER 0 Interrupt

; System clock 20mS

RTC: PUSH PSW

PUSH ACC

CLR TR0;timer 0 stop

MOV TH0,#RTCVH;timer 0 load for 20 mS

MOV TL0,#RTCVL

SETB TR0;timer start

INC RTPC;Real Time Program Counter INC

DJNZ RTPCS,RTC1

MOV RTPCS,#V1S

; 1S program counters

MOV A,INDLTM

JZ RTC1

DEC INDLTM

; 20mS program counters

RTC1: MOV A,CYCSTM

JZ RTC2

DEC CYCSTM

RTC2: MOV A,CNTSTM

JZ RTC3

DEC CNTSTM

RTC3: MOV A,SNDSTM

JZ RTC4

DEC SNDSTM

RTC4: SETB VCLK

POP ACC

POP PSW

RETI

; ------RC5 Program Decoder------

; RC5 program decoder is interrupt holder.

; Input - bit SER (interrupt line), low active level.

; Out - byte R37 (register R7 in bank 3),

; D0-D5 - command bits

; D6 - control bit of local keyboard

; (D6 does not change)

; D7 - control bit RC

; Uses register bank 3

RC5: PUSH PSW;RC5-code program decoding

PUSH DPH

PUSH DPL

SETB RS0

SETB RS1;bank 3

MOV R5,A

MOV R6,#1H

MOV R2,#2H

MOV R3,#4H

WLOW: JNB SER,WLOW

MOV R0,#1AH

MOV R1,#0F6H

SAMPLE: MOV A,R6

NOP

JB ACC.1,THIGH

JNB SER,TRANS

NOTRAN: DJNZ R1,SAMPLE

NORC5: MOV A,R5

POP DPL

POP DPH

POP PSW

RETI

THIGH: JNB SER,NOTRAN

TRANS: XRL A,#2H

MOV R6,A

MOV A,R1

ADD A,#46H

JC NORC5

MOV A,R1

ADD A,#87H

MOV A,R6

JNC T2

XRL A,#1H

MOV R6,A

MOV R1,#0F4H

JB ACC.0,SAMPLE

STDATA: CLR C

CPL C

JB ACC.1,DAT1

CLR C

DAT1: MOV A,@R0

RLC A

MOV @R0,A

MOV R1,#0F3H

JNC SAMPLE

INC R0

MOV A,R0

CPL A

MOV R1,#0F2H

JB ACC.2,SAMPLE

WLW: JNB SER,WLW

MOV R0,#0FAH

TERM: JNB SER,NORC5

INC DPTR

INC DPTR

INC DPTR

NOP

DJNZ R0,TERM

MOV A,R2;system nom. and control bit in R2

ANL A,#1FH

CJNE A,#SYS,NORC5;system number check

MOV DPTR,#RCTAB;table address load

MOV A,R3;command code load

MOVC


Дата добавления: 2015-10-30; просмотров: 160 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
L-інтенсивність відмов пристрою| Краткая инструкция по форматированию (полная в приложении)

mybiblioteka.su - 2015-2024 год. (0.424 сек.)