Описание алгоритма работы и программы




 

Для более простой реализации нажатия кнопок «Сброс» и «Всего» будем использовать два счетчика: С1 и С.

С1 счётчик, который будет считать все детали пройденные после включения конвейера; С счётчик, который считает после очередного нажатия кнопки «Сброс».

ОПИСАНИЕ АЛГОРИТМА РАБОТЫ:

а) инициализация обнуляет счетчики количества деталей (регистры R0, R1, R2, R3);

б) предустановки. Очищает содержимое регистров R0, R1, R2, R3;

в) ожидает появления на вход Р0.7 импульса высокого уровня (прохождение детали), если импульс пришел, то ожидается появление импульса низкого уровня (деталь прошла);

г) после этого увеличивается содержимое счетчика на 1;

д) проводим проверку кнопки «Сброс» и «Всего»;

е) выводим на индикатор содержимое счетчика;

ж) осуществляем проверку счетчика С1.

Программа функционирования микропроцессорной системы осуществляющей подсчет и индикацию деталей на конвейере.

;инициализация

INIT: MOV R1,#0h

MOV R3,#0h

JNB P0.7,L1;ожидание появления сигнала высокого уровня

L2: JB P0.7,L2;ожидание появления сигнала низкого уровня

;увеличиваем содержимое абсолютного счетчика

;R0-младший разряд, R1-старший разряд

INC R0

MOV A,R0

DA A;десятичная коррекция аккумулятора

MOV R0,A

MOV A,0h

ADDC A,R1;если R0 переполнен

DA A

MOV R1,A

;Аналогично ведется подсчет деталей и в относительном режиме

;проверка нажатия кнопки "Сброс"

L1: JB P0.0,L3;если "Сброс" отжата (высокий уровень), то переход на метку L3

MOV R2,#0h;если "Сброс" нажата,то обнуляем счетчик С

MOV R3,#0h

;проверка нажатия кнопки "Всего"

L3: JB P0.1,L4;если "Всего" отжата (высокий уровень), то переход на метку L4

MOV A,R0;если "Всего" нажата,то выводим на индикатор

MOV R2,A;содержимое абсолютного счетчика

MOV A,R1

MOV R3,A

;вывод на индикацыю

L4: MOV A,R2

MOV P1,A

MOV A,R3

MOV P2,A

;проверка абсолютного счетчика на переполнение

MOV A,#99h

XRL A,R1

JNZ L1

MOV A,#99h

XRL A,R0

JNZ L1

JMP INIT;возврат на инициализацию, если счетчик переполнен

Mon May 17 2004 00:03

2500 A.D. 8051 Macro Assembler - Version 4.02a

------------------------------------------------

 

Input Filename: TEXT.asm

Output Filename: TEXT.obj

 

1;Программа функционирования микропроцессорной системы осуществляющей

2;подсчет и индикацию деталей на конвейере.

5;инициализация

6 0000 79 00 INIT: MOV R1,#0h

7 0002 7B 00 MOV R3,#0h

8 0004 30 82 0C JNB P0.2,L1;ожидание появления сигнала высокого уровня

9 0007 20 82 FD L2: JB P0.2,L2;ожидание появления сигнала низкого уровня

10;увеличиваем содержимое абсолютного счетчика

11;R0-младший разряд, R1-старший разряд

12 000A 08 INC R0

13 000B E8 MOV A,R0

14 000C D4 DA A;десятичная коррекция аккумулятора

15 000D F8 MOV R0,A

16 000E E5 00 MOV A,0h

17 0010 39 ADDC A,R1;если R0 переполнен

18 0011 D4 DA A

19 0012 F9 MOV R1,A

20;Аналогично ведется подсчет деталей и в относительном режиме

21;проверка нажатия кнопки "Сброс"

22 0013 20 80 04 L1: JB P0.0,L3;если "Сброс" отжата (высокий уровень), то переход на метку L3

23 0016 7A 00 MOV R2,#0h;если "Сброс" нажата,то обнуляем счетчик С

24 0018 7B 00 MOV R3,#0h

25;проверка нажатия кнопки "Всего"

26 001A 20 81 04 L3: JB P0.1,L4;если "Всего" отжата (высокий уровень), то переход на метку L4

27 001D E8 MOV A,R0;если "Всего" нажата,то выводим на индикатор

28 001E FA MOV R2,A;содержимое абсолютного счетчика

29 001F E9 MOV A,R1

30 0020 FB MOV R3,A

31;вывод на индикацыю

32 0021 EA L4: MOV A,R2

33 0022 F5 90 MOV P1,A

34 0024 EB MOV A,R3

35 0025 F5 A0 MOV P2,A

36;проверка абсолютного счетчика на переполнение

37 0027 74 99 MOV A,#99h

38 0029 69 XRL A,R1

39 002A 70 E7 JNZ L1

40 002C 74 99 MOV A,#99h

41 002E 68 XRL A,R0

42 002F 70 E2 JNZ L1

43 0031 01 00 JMP INIT;возврат на инициализацию, если счетчик переполнен

44 0033

Lines Assembled: 44 Assembly Errors: 0


Программа ожидания импульса.

;инициализация

INIT: MOV r6,#0h

MOV r8,#0h

MOV r10,#0h

 

L0: JNB P0.5,L1;ожидание появления сигнала высокого уровня

L2: JB P0.5,L2;ожидание появления сигнала низкого уровня

;увеличиваем содержимое счетчика

;R5-младший разряд, R6-старший разряд

INC r5

MOV A,r5

DA A;десятичная коррекция аккумулятора

MOV r5,A

MOV A,0h

ADDC A,r6;если r5 переполнен

DA A

MOV r6,A

;проверка нажатия кнопки "К3"

L1: JB P0.4,L3;если "К3" отжата,то переход на метку L3

MOV A,r6;если "К3" нажата,то выводим на индикатор

MOV r6,A

;вывод на индикацыю

L3: JNB P0.6,L5;ожидание появления сигнала высокого уровня

L4: JB P0.6,L4;ожидание появления сигнала низкого уровня

;увеличиваем содержимое счетчика

;R5-младший разряд, R6-старший разряд

INC r7

MOV A,r7

DA A;десятичная коррекция аккумулятора

MOV r7,A

MOV A,0h

ADDC A,r8;если r7 переполнен

DA A

MOV r8,A

;проверка нажатия кнопки "К2"

L5: JB P0.3,L3;если "К2" отжата,то переход на метку L6

MOV A,r8;если "К2" нажата,то выводим на индикатор

MOV r8,A

;вывод на индикацыю

L6: JNB P0.7,L8;ожидание появления сигнала высокого уровня

L7: JB P0.7,L7;ожидание появления сигнала низкого уровня

;увеличиваем содержимое счетчика

;R9-младший разряд, R10-старший разряд

INC r9

MOV A,r9

DA A;десятичная коррекция аккумулятора

MOV r9,A

MOV A,0h

ADDC A,r10;если r9 переполнен

DA A

MOV r10,A

;проверка нажатия кнопки "К1"

L8: JB P0.4,L0;если "К1" отжата,то переход на метку L0

MOV A,r10;если "К1" нажата,то выводим на индикатор

MOV r10,A

;вывод на индикацыю

Mon May 17 2004 00:46

2500 A.D. 8051 Macro Assembler - Version 4.02a

------------------------------------------------

Input Filename: text1.asm

Output Filename: text1.obj

1;Программа ожидания импульса.

2 0000

4;инициализация

5 0000 7E 00 INIT: MOV r6,#0h

6 0002 75 00 00 MOV r8,#0h

7 0005 75 00 00 MOV r10,#0h

8 0008

9 0008 30 85 0C L0: JNB P0.5,L1;ожидание появления сигнала высокого уровня

10 000B 20 85 FD L2: JB P0.5,L2;ожидание появления сигнала низкого уровня

11;увеличиваем содержимое счетчика

12;R5-младший разряд, R6-старший разряд

13 000E 0D INC r5

14 000F ED MOV A,r5

15 0010 D4 DA A;десятичная коррекция аккумулятора

16 0011 FD MOV r5,A

17 0012 E5 00 MOV A,0h

18 0014 3E ADDC A,r6;если r5 переполнен

19 0015 D4 DA A

20 0016 FE MOV r6,A

21;проверка нажатия кнопки "К3"

22 0017 20 84 02 L1: JB P0.4,L3;если "К3" отжата,то переход на метку L3

23 001A EE MOV A,r6;если "К3" нажата,то выводим на индикатор

24 001B FE MOV r6,A

25;вывод на индикацыю

26 001C 30 86 0E L3: JNB P0.6,L5;ожидание появления сигнала высокого уровня

27 001F 20 86 FD L4: JB P0.6,L4;ожидание появления сигнала низкого уровня

28;увеличиваем содержимое счетчика

29;R5-младший разряд, R6-старший разряд

30 0022 0F INC r7

31 0023 EF MOV A,r7

32 0024 D4 DA A;десятичная коррекция аккумулятора

33 0025 FF MOV r7,A

34 0026 E5 00 MOV A,0h

35 0028 35 00 ADDC A,r8;если r7 переполнен

36 002A D4 DA A

37 002B F5 00 MOV r8,A

38;проверка нажатия кнопки "К2"

39 002D 20 83 EC L5: JB P0.3,L3;если "К2" отжата,то переход на метку L6

40 0030 E5 00 MOV A,r8;если "К2" нажата,то выводим на индикатор

41 0032 F5 00 MOV r8,A

42;вывод на индикацыю

43 0034 30 87 11 L6: JNB P0.7,L8;ожидание появления сигнала высокого уровня

44 0037 20 87 FD L7: JB P0.7,L7;ожидание появления сигнала низкого уровня

45;увеличиваем содержимое счетчика

46;R9-младший разряд, R10-старший разряд

47 003A 05 00 INC r9

48 003C E5 00 MOV A,r9

49 003E D4 DA A;десятичная коррекция аккумулятора

50 003F F5 00 MOV r9,A

51 0041 E5 00 MOV A,0h

52 0043 35 00 ADDC A,r10;если r9 переполнен

53 0045 D4 DA A

54 0046 F5 00 MOV r10,A

55;проверка нажатия кнопки "К1"

56 0048 20 84 BD L8: JB P0.4,L0;если "К1" отжата,то переход на метку L0

57 004B E5 00 MOV A,r10;если "К1" нажата,то выводим на индикатор

58 004D F5 00 MOV r10,A

59;вывод на индикацыю

60 004F

61 004F

62 004F

Lines Assembled: 62 Assembly Errors: 0


СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

 

1. Сташин В.В. «Проектирование цифровых устройств на однокристальных микроконтроллерах»: М.: Энергоатомиздат, 1990г.

2. «Полупроводниковые приборы. Диоды выпрямительные, стабилитроны, тиристоры.» Справочник: под редакцией Голошедова А.В.: М.: Радио и связь, 1989г.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-07-29 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: