;вывод на индикацыю
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 ;подсчет и индикацию деталей на конвейере.
3
4
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: JNBP0.5,L1 ;ожидание появления сигнала высокого уровня
L2: JBP0.5,L2 ;ожидание появления сигнала низкого уровня
;увеличиваем содержимое счетчика
;R5-младший разряд, R6-старший разряд
INCr5
MOVA,r5
DAA;десятичная коррекция аккумулятора
MOV r5,A
MOV A,0h
ADDC A,r6 ;если r5 переполнен
DAA
MOVr6,A
;проверка нажатия кнопки "К3"
L1: JBP0.4,L3 ;если "К3" отжата,то переход на метку L3
MOVA,r6 ;если "К3" нажата,то выводим на индикатор
MOVr6,A
;вывод на индикацыю
L3: JNBP0.6,L5 ;ожидание появления сигнала высокого уровня
L4: JBP0.6,L4 ;ожидание появления сигнала низкого уровня
;увеличиваем содержимое счетчика
;R5-младший разряд, R6-старший разряд
INCr7
MOVA,r7
DAA;десятичная коррекция аккумулятора
MOV r7,A
MOV A,0h
ADDC A,r8 ;если r7 переполнен
DAA
MOVr8,A
;проверка нажатия кнопки "К2"
L5: JBP0.3,L3 ;если "К2" отжата,то переход на метку L6
MOVA,r8 ;если "К2" нажата,то выводим на индикатор
MOVr8,A
;вывод на индикацыю
L6: JNBP0.7,L8 ;ожидание появления сигнала высокого уровня
L7: JBP0.7,L7 ;ожидание появления сигнала низкого уровня
;увеличиваем содержимое счетчика
;R9-младший разряд, R10-старший разряд
INCr9
MOVA,r9
DAA;десятичная коррекция аккумулятора
MOV r9,A
MOV A,0h
ADDC A,r10 ;если r9 переполнен
DAA
MOVr10,A
;проверка нажатия кнопки "К1"
L8: JBP0.4,L0 ;если "К1" отжата,то переход на метку L0
MOVA,r10 ;если "К1" нажата,то выводим на индикатор
MOVr10,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
3
4 ;инициализация
5 0000 7E 00 INIT: MOVr6,#0h
6 0002 75 00 00 MOV r8,#0h
7 0005 75 00 00 MOV r10,#0h
8 0008
9 0008 30 85 0CL0: JNBP0.5,L1 ;ожидание появления сигнала высокого уровня
10 000B20 85 FDL2: JBP0.5,L2 ;ожидание появления сигнала низкого уровня
11 ;увеличиваем содержимое счетчика
12 ;R5-младший разряд, R6-старший разряд
13 000E 0D INC r5
14 000F ED MOV A,r5
15 0010 D4 DAA;десятичная коррекция аккумулятора
16 0011 FD MOV r5,A
17 0012 E5 00 MOV A,0h
18 0014 3EADDCA,r6 ;если r5 переполнен
19 0015 D4 DA A
20 0016 FE MOV r6,A
21 ;проверка нажатия кнопки "К3"
22 0017 20 84 02 L1: JBP0.4,L3 ;если "К3" отжата,то переход на метку L3
23 001AEEMOVA,r6 ;если "К3" нажата,то выводим на индикатор
24 001BFEMOVr6,A
25 ;вывод на индикацыю
26 001C30 86 0EL3: JNBP0.6,L5 ;ожидание появления сигнала высокого уровня
27 001F20 86 FDL4: JBP0.6,L4 ;ожидание появления сигнала низкого уровня
28 ;увеличиваем содержимое счетчика
29 ;R5-младший разряд, R6-старший разряд
30 0022 0F INC r7
31 0023 EF MOV A,r7
32 0024 D4 DAA;десятичная коррекция аккумулятора
33 0025 FF MOV r7,A
34 0026 E5 00 MOV A,0h
35 0028 35 00 ADDCA,r8 ;если r7 переполнен
36 002A D4 DA A
37 002B F5 00 MOV r8,A
38 ;проверка нажатия кнопки "К2"
39 002D20 83 ECL5: JBP0.3,L3 ;если "К2" отжата,то переход на метку L6
40 0030 E5 00 MOVA,r8 ;если "К2" нажата,то выводим на индикатор
41 0032 F5 00 MOVr8,A
42 ;вывод на индикацыю
43 0034 30 87 11 L6: JNBP0.7,L8 ;ожидание появления сигнала высокого уровня
44 0037 20 87 FDL7: JBP0.7,L7 ;ожидание появления сигнала низкого уровня
45 ;увеличиваем содержимое счетчика
46 ;R9-младший разряд, R10-старший разряд
47 003A 05 00 INC r9
48 003C E5 00 MOV A,r9
49 003ED4 DAA;десятичная коррекция аккумулятора
50 003F F5 00 MOV r9,A
51 0041 E5 00 MOV A,0h
52 0043 35 00 ADDCA,r10 ;если r9 переполнен
53 0045 D4 DAA
54 0046 F5 00 MOVr10,A
55 ;проверка нажатия кнопки "К1"
56 0048 20 84 BDL8: JBP0.4,L0 ;если "К1" отжата,то переход на метку L0
57 004BE5 00 MOVA,r10 ;если "К1" нажата,то выводим на индикатор
58 004DF5 00 MOVr10,A
59 ;вывод на индикацыю
60 004F
61 004F
62 004F
Lines Assembled : 62 Assembly Errors : 0
СПИСОКИСПОЛЬЗУЕМОЙЛИТЕРАТУРЫ
1. Сташин В.В. «Проектирование цифровых устройств на однокристальных микроконтроллерах»: М.: Энергоатомиздат, 1990г.
2. «Полупроводниковые приборы. Диоды выпрямительные, стабилитроны, тиристоры.» Справочник: под редакцией Голошедова А.В.: М.: Радио и связь, 1989г.