Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ.docx
Скачиваний:
6
Добавлен:
16.05.2015
Размер:
611.52 Кб
Скачать

Результаты моделирования

Задание времени:

Отсчет закончился:

Листинг

A51 MACRO ASSEMBLER TIMERKID 12/22/2014 12:49:23 PAGE 1

MACRO ASSEMBLER A51 V8.02b

OBJECT MODULE PLACED IN timerkid.OBJ

ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE timerkid.a51 SET(SMALL) DEBUG EP

LOC OBJ LINE SOURCE

1 ;Кварц 12 Мгц

2 ; Машинный цикл = 1 мкс

3

4

D8F0 5 t_const EQU -10000

FC18 6 _1000kgc EQU -1000

0031 7 N_indicator EQU 31h

8

0032 9 ed EQU 32h

0033 10 des EQU 33h

11

0035 12 count EQU 35h

13

0036 14 preriv EQU 36h

0000 15 pause EQU 00h

16

0034 17 timer_status EQU 34h

18

19

0000 20 org 0

0000 01BE 21 jmp START

22

000B 23 org 000Bh ;T0

000B 8010 24 jmp i_t0

25

001B 26 org 001Bh ;T1

001B 805E 27 jmp signal

28

29 ;----------------------------------------------

30 ;Подпрограммы

31 ;----------------------------------------------

001D 32 i_t0:

001D E534 33 mov A, timer_status

001F 20E129 34 jb ACC.1, count_next

0022 30E026 35 jnb ACC.0, count_next

0025 1535 36 dec count

0027 E535 37 mov A, count

0029 B4001F 38 cjne A, #0, count_next

002C 753564 39 mov count, #100

002F 1532 40 dec ed

0031 E532 41 mov A, ed

0033 B4FF15 42 cjne A, #255, count_next

0036 753209 43 mov ed, #9

0039 1533 44 dec des

003B E533 45 mov A, des

003D B4FF0B 46 cjne A, #255, count_next

0040 753402 47 mov timer_status, #2 ; ******************************

0043 D28E 48 setb tr1

0045 75320A 49 mov ed, #10

0048 75330A 50 mov des, #10

004B 51 count_next:

004B C0E0 52 push acc

53 ;Перезапуск таймера

004D 758CD8 54 mov th0,#HIGH(t_const)

0050 758AF0 55 mov tl0,#LOW (t_const)

56

57 ;Включаем следующий индикатор

0053 0531 58 inc N_indicator

A51 MACRO ASSEMBLER TIMERKID 12/22/2014 12:49:23 PAGE 2

0055 E531 59 mov a,N_indicator

0057 B40203 60 cjne a,#2,no_overflow_N_indicator

005A 753100 61 mov N_indicator,#0

005D 62 no_overflow_N_indicator:

005D E531 63 mov a,N_indicator

005F B40006 64 cjne a,#0,no_N0

0062 C2B1 65 clr p3.1

0064 D2B0 66 setb p3.0

0066 8004 67 jmp OK_N_indicator

0068 68 no_N0:

0068 C2B0 69 clr p3.0

006A D2B1 70 setb p3.1

71

006C 72 OK_N_indicator:

73

74 ;Выводим информацию на индикатор

006C 7432 75 mov a,#ed

006E 2531 76 add a,N_indicator

0070 F8 77 mov r0,a

0071 E6 78 mov a,@r0

79

0072 900114 80 mov dptr,#Table_Cod_Indicator

0075 93 81 movc a,@a+dptr

0076 82 out_ind:

0076 F590 83 mov p1,a

0078 D0E0 84 pop acc

85

007A 32 86 reti

87

007B 88 signal:

007B 758DFC 89 mov th1,#HIGH(_1000kgc)

007E 758B18 90 mov tl1,#LOW (_1000kgc)

0081 200002 91 jb pause, no_inv

0084 B2B5 92 cpl P3.5

0086 93 no_inv:

0086 1536 94 dec preriv

0088 E536 95 mov A, preriv

008A B40005 96 cjne A, #0, signal_exit

008D 7536FA 97 mov preriv, #250

0090 B200 98 cpl pause

99

0092 100 signal_exit:

0092 32 101 reti

102 ;**********************************

103 ;Подпрограмма инициализации

104 ;**********************************

0093 105 init:

0093 758911 106 mov tmod,#00010001b

107

0096 758CD8 108 mov th0,#HIGH(t_const)

0099 758AF0 109 mov tl0,#LOW (t_const)

009C 758DFC 110 mov th1,#HIGH(_1000kgc)

009F 758B18 111 mov tl1,#LOW (_1000kgc)

00A2 753400 112 mov timer_status, #0

00A5 753100 113 mov N_indicator,#0

00A8 C2B0 114 clr p3.0

00AA C2B1 115 clr p3.1

00AC 753200 116 mov ed,#0

00AF 753300 117 mov des,#0

00B2 753564 118 mov count, #100

119

00B5 D2A9 120 setb et0

00B7 D2AB 121 setb et1

00B9 D2AF 122 setb ea

00BB D28C 123 setb tr0

00BD 22 124 ret

A51 MACRO ASSEMBLER TIMERKID 12/22/2014 12:49:23 PAGE 3

125

00BE 126 START:

00BE 120093 127 lcall init

128

00C1 129 cycle:

00C1 30B40D 130 jnb P3.4, kn_Start

00C4 E534 131 mov A, timer_status

00C6 20E049 132 jb ACC.0, cycle_next

00C9 30B30A 133 jnb P3.3, kn_Minus

00CC 30B225 134 jnb P3.2, kn_Plus

00CF 8041 135 jmp cycle_next

136

00D1 137 kn_Start:

00D1 753401 138 mov timer_status, #1

00D4 803C 139 jmp cycle_next

140

141

00D6 142 kn_Minus:

00D6 20B302 143 jb p3.3, Minus

00D9 80FB 144 jmp kn_Minus

145

00DB 146 Minus:

00DB 1532 147 dec ed

00DD E532 148 mov A, ed

00DF B4FF30 149 cjne A, #255, cycle_next

00E2 753209 150 mov ed, #9

00E5 1533 151 dec des

00E7 E533 152 mov A, des

00E9 B4FF26 153 cjne A, #255, cycle_next

00EC 753209 154 mov ed, #9

00EF 753309 155 mov des, #9

00F2 801E 156 jmp cycle_next

157

00F4 158 kn_Plus:

00F4 20B202 159 jb p3.2, Plus

00F7 80FB 160 jmp kn_Plus

161

00F9 162 Plus:

00F9 0532 163 inc ed

00FB E532 164 mov A, ed

00FD B40A12 165 cjne A, #10, cycle_next

0100 753200 166 mov ed, #0

0103 0533 167 inc des

0105 E533 168 mov A, des

0107 B40A08 169 cjne A, #10, cycle_next

010A 753200 170 mov ed, #0

010D 753300 171 mov des, #0

0110 8000 172 jmp cycle_next

173

0112 174 cycle_next:

175

0112 80AD 176 jmp cycle

177 ;----------------------------------------------

178 ;Таблица кодов семисегментного индикатора

0114 179 Table_Cod_Indicator:

0114 C0F9A4B0 180 db 0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0D8h,80h,90h,10111111b, 00001000h

0118 999282D8

011C 8090BF00

*** ____________________________________________________________________________________________^

*** WARNING #A52 IN 180 (timerkid.a51, LINE 180): VALUE HAS BEEN TRUNCATED TO 8 BITS

181

182

183 END

A51 MACRO ASSEMBLER TIMERKID 12/22/2014 12:49:23 PAGE 4

SYMBOL TABLE LISTING

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

N A M E T Y P E V A L U E ATTRIBUTES

ACC . . . . . . . . . . D ADDR 00E0H A

COUNT . . . . . . . . . N NUMB 0035H A

COUNT_NEXT. . . . . . . C ADDR 004BH A

CYCLE . . . . . . . . . C ADDR 00C1H A

CYCLE_NEXT. . . . . . . C ADDR 0112H A

DES . . . . . . . . . . N NUMB 0033H A

EA. . . . . . . . . . . B ADDR 00A8H.7 A

ED. . . . . . . . . . . N NUMB 0032H A

ET0 . . . . . . . . . . B ADDR 00A8H.1 A

ET1 . . . . . . . . . . B ADDR 00A8H.3 A

INIT. . . . . . . . . . C ADDR 0093H A

I_T0. . . . . . . . . . C ADDR 001DH A

KN_MINUS. . . . . . . . C ADDR 00D6H A

KN_PLUS . . . . . . . . C ADDR 00F4H A

KN_START. . . . . . . . C ADDR 00D1H A

MINUS . . . . . . . . . C ADDR 00DBH A

NO_INV. . . . . . . . . C ADDR 0086H A

NO_N0 . . . . . . . . . C ADDR 0068H A

NO_OVERFLOW_N_INDICATOR C ADDR 005DH A

N_INDICATOR . . . . . . N NUMB 0031H A

OK_N_INDICATOR. . . . . C ADDR 006CH A

OUT_IND . . . . . . . . C ADDR 0076H A

P1. . . . . . . . . . . D ADDR 0090H A

P3. . . . . . . . . . . D ADDR 00B0H A

PAUSE . . . . . . . . . N NUMB 0000H A

PLUS. . . . . . . . . . C ADDR 00F9H A

PRERIV. . . . . . . . . N NUMB 0036H A

SIGNAL. . . . . . . . . C ADDR 007BH A

SIGNAL_EXIT . . . . . . C ADDR 0092H A

START . . . . . . . . . C ADDR 00BEH A

TABLE_COD_INDICATOR . . C ADDR 0114H A

TH0 . . . . . . . . . . D ADDR 008CH A

TH1 . . . . . . . . . . D ADDR 008DH A

TIMER_STATUS. . . . . . N NUMB 0034H A

TL0 . . . . . . . . . . D ADDR 008AH A

TL1 . . . . . . . . . . D ADDR 008BH A

TMOD. . . . . . . . . . D ADDR 0089H A

TR0 . . . . . . . . . . B ADDR 0088H.4 A

TR1 . . . . . . . . . . B ADDR 0088H.6 A

T_CONST . . . . . . . . N NUMB D8F0H A

_1000KGC. . . . . . . . N NUMB FC18H A

REGISTER BANK(S) USED: 0

ASSEMBLY COMPLETE. 1 WARNING(S), 0 ERROR(S)