logo
Разработка цифрового датчика скорости

1.3 Программа

Таблица 2

Адрес

Метка

Ассемблер

Такты

Примечания

0800

MVI B,00

7

1

0802

MVI C,6E

7

0804

M3

MVI H,09

7

2

3

0806

MVI L,00

7

0808

M1

IN port B5

10

3

080A

CPI 00

7

4

080C

JZ M1

10

5

080F

M2

INX H

5

6

0811

IN port B5

10

7

0813

CPI 00

7

8

0815

JNZ M2

10

9

0818

MOV A,M

5

10

0819

OUT port B6

10

11

081B

DAD B

10

12

081C

MOV A,M

5

13

081D

OUT port B7

10

14

081F

JMP M3

10

15

Работа программы (таблица 2):

Задание значения регистровой пары BC для ее дальнейшего сложения с регистровой парой HL

задание начального значения счетчика импульсов (сосчитанных микропроцессором за положительный полупериод (регистровая пара HL).

Чтение порта В5. Данные с него поступают на аккумулятор.

Сравнение данных из порта с значением нулем. Если значение данных порта изменилось с 0 на 1, то признак Z принимает значение 0.

Проверка признака Z. Если признак Z равен 1, то порт B5 опрашивается заново. Если признак Z равен 0, то программа выходит из цикла и выполняется следующая команда.

Инкремент счетчика импульсов, сосчитанных микропроцессором за положительный полупериод.

Чтение порта В5.

Сравнение новых данных порта с 0. При равенстве данных из порта 1 устанавливается признак Z=0.

Проверка признака Z. Пока данные порта равны единице (Z=0), импульс еще не завершился и надо инкрементировать счетчик.

Запись в аккумулятор данных с ячейки, адрес которой указан в регистровой паре HL для их дальнейшего вывода.

Вывод данных в порт В6, это и будут старшие разряды значения скорости.

Двойное сложение регистровых пар HL и BC , это действие совершается для выведения младших разрядов скорости.

Запись в аккумулятор данных с ячейки, адрес которой указан в регистровой паре HL для их дальнейшего вывода.

Вывод данных в порт В7, это младшие разряды значения скорости.

Переход на начало программы.

Также нужно отметить, что дискрета в программе составила 10+7+10+5=32 такта.

Кроме того, ниже представлена таблица 3, в которой показано, какие данные в какие ячейки памяти нужно занести, чтобы выводились определенные значения скорости в десятичной форме, соответствующие определенному количеству импульсов.

Таблица 3

k, раз

Значения скорости, об./мин.

Для старших разрядов

Для младших разрядов

Адрес

Содержимое

Адрес

Содержимое

100

1041

0964

10

0A32

41

101

1031

0965

10

0A33

31

102

1021

0966

10

0A34

21

103

1011

0967

10

0A35

11

104

1001

0968

10

0A36

01

105

992

0969

09

0A37

92

106

982

096A

09

0A38

82

107

973

096B

09

0A39

73

108

964

096C

09

0A3A

64

109

955

096D

09

0A3B

55

110

946

096E

09

0A3C

46

111

938

096F

09

0A3D

38

112

930

0970

09

0A3E

30

113

921

0971

09

0A3F

21

114

913

0972

09

0A40

13

115

905

0973

09

0A41

05

116

897

0974

08

0A42

97

117

890

0975

08

0A43

90

118

882

0976

08

0A44

82

119

875

0977

08

0A45

75

120

868

0978

08

0A46

68

121

860

0979

08

0A47

60

122

853

097A

08

0A48

53

123

846

097B

08

0A49

46

124

840

097C

08

0A4A

40

125

833

097D

08

0A4B

33

126

826

097E

08

0A4C

26

127

820

097F

08

0A4D

20

128

813

0980

08

0A4E

13

129

807

0981

08

0A4F

07

130

801

0982

08

0A50

01

131

795

0983

07

0A51

95

132

789

0984

07

0A52

89

133

783

0985

07

0A53

83

134

777

0986

07

0A54

77

135

771

0987

07

0A55

71

136

765

0988

07

0A56

65

137

760

0989

07

0A57

60

138

754

098A

07

0A58

54

139

749

098B

07

0A59

49

140

744

098C

07

0A5A

44

141

738

098D

07

0A5B

38

142

733

098E

07

0A5C

33

143

728

098F

07

0A5D

28

144

723

0990

07

0A5E

23

145

718

0991

07

0A5F

18

146

713

0992

07

0A60

13

147

708

0993

07

0A61

08

148

703

0994

07

0A62

03

149

699

0995

06

0A63

99

150

694

0996

06

0A64

94

151

689

0997

06

0A65

89

152

685

0998

06

0A66

85

153

680

0999

06

0A67

80

154

676

099A

06

0A68

76

155

672

099B

06

0A69

72

156

667

099C

06

0A6A

67

157

663

099D

06

0A6B

63

158

659

099E

06

0A6C

59

159

655

099F

06

0A6D

55

160

651

0A00

06

0A6E

51

161

646

0A01

06

0A6F

46

162

643

0A02

06

0A60

43

163

639

0A03

06

0A61

39

164

635

0A04

06

0A62

35

165

631

0A05

06

0A63

31

166

627

0A06

06

0A64

27

167

623

0A07

06

0A65

23

168

620

0A08

06

0A66

20

169

616

0A09

06

0A67

16

170

612

0A0A

06

0A68

12

171

609

0A0B

06

0A69

09

172

605

0A0C

06

0A6A

05

173

602

0A0D

06

0A6B

02

174

598

0A0E

05

0A6C

98

175

595

0A0F

05

0A6D

95

176

591

0A10

05

0A6E

91

177

588

0A11

05

0A6F

88

178

585

0A12

05

0A70

85

179

581

0A13

05

0A71

81

180

578

0A14

05

0A72

78

181

575

0A15

05

0A73

75

182

572

0A16

05

0A74

72

183

569

0A17

05

0A75

69

184

566

0A18

05

0A76

66

185

563

0A19

05

0A77

63

186

560

0A1A

05

0A78

60

187

557

0A1B

05

0A79

57

188

554

0A1C

05

0A7A

54

189

551

0A1D

05

0A7B

51

190

548

0A1E

05

0A7C

48

191

545

0A1F

05

0A7D

45

192

542

0A20

05

0A7E

42

193

539

0A21

05

0A7F

39

194

536

0A22

05

0A80

36

195

534

0A23

05

0A81

34

196

531

0A24

05

0A82

31

197

528

0A25

05

0A83

28

198

526

0A26

05

0A84

26

199

523

0A27

05

0A85

23

200

520

0A28

05

0A86

20

201

518

0A29

05

0A87

18

202

515

0A2A

05

0A88

15

203

513

0A2B

05

0A89

13

204

510

0A2C

05

0A8A

10

205

508

0A2D

05

0A8B

08

206

505

0A2E

05

0A8C

05

207

503

0A2F

05

0A8D

03

208

500

0A30

05

0A8E

00

209

498

0A31

04

0A8F

98