Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ВстраиваСмыС систСмы. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… сСмСйства 68HC12/HCS12 с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ языка Π‘Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 139

Автор Π‘Ρ‚ΠΈΠ²Π΅Π½ Π‘Π°Ρ€Ρ€Π΅Ρ‚Ρ‚

Рис. 8.20. Π˜ΠΌΠΈΡ‚Π°Ρ‚ΠΎΡ€ усилитСля

8.9. Другая прикладная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°: Ρ†ΠΈΠΊΠ» опроса с прСрываниями

Π’ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ систСмы опроса с ΠΏΠ΅Ρ€Π΅Π΄Π½ΠΈΠΌ ΠΏΠ»Π°Π½ΠΎΠΌ ΠΈ Ρ„ΠΎΠ½ΠΎΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π³Ρ€Π΅Π² транзисторов Π² стСрСоусилитСлС. БистСма ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° рис. 8.21. Π’Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° транзистора постоянно контролируСтся Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠΌ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ LM34 (Π² пластмассовом корпусС), ΠΏΡ€ΠΈΠΊΠ»Π΅Π΅Π½Π½Ρ‹ΠΌ ΠΊ мСталличСском корпусу ВО K-220 ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ транзистора. НапряТСниС Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠ° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ связано с Π΅Π³ΠΎ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€ΠΎΠΉ (коэффициСнт 10 ΠΌΠ’/Π‘).

Рис. 8.21. ВранзисторныС систСмы обнаруТСния ΠΏΠ΅Ρ€Π΅Π³Ρ€Π΅Π²Π°


Π’Ρ‹Ρ…ΠΎΠ΄ LM34 ΠΏΠΎΠ΄Π°Π½ ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Ρ…ΠΎΠ΄ΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°Ρ€Π°Ρ‚ΠΎΡ€Π°, построСнного Π½Π° ОУ. На Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π²Ρ…ΠΎΠ΄ подаСтся ΠΎΠΏΠΎΡ€Π½ΠΎΠ΅ напряТСниС, Π·Π°Π΄Π°ΡŽΡ‰Π΅Π΅ ΠΏΠΎΡ€ΠΎΠ³ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹. Когда Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° ΠΌΠΎΡ‰Π½ΠΎΠ³ΠΎ транзистора достигаСт этого ΠΏΠΎΡ€ΠΎΠ³Π°, Π½Π° Π²Ρ…ΠΎΠ΄Π΅ систСмы прСрывания ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° появляСтся Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ сигнал Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ запрос Π½Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ IRQ.

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ запроса Π½Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅, PORTX[0] формируСтся ΠΈΠΌΠΏΡƒΠ»ΡŒΡ с Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ высоким ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ вСнтилятор Ρ‡Π΅Ρ€Π΅Π· ΠΌΠΎΡ‰Π½Ρ‹ΠΉ МОП-транзистор IRF530. МоТно ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСрывания ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ вСнтилятор. Когда Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° транзистора ΡƒΠΏΠ°Π΄Π΅Ρ‚ Π½ΠΈΠΆΠ΅ установлСнного ΠΏΡ€Π΅Π΄Π΅Π»Π°, Π²Ρ‹Π²ΠΎΠ΄ запроса Π½Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ Π½Π° высокий логичСский ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ, возвращая процСссор ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ основной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Если Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π° транзистора ΡƒΠΏΠ°Π΄Π΅Ρ‚ Π΄ΠΎ бСзопасного уровня процСссор ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ, (ΠΏΡ€ΠΈ этом Π½Π° Π²Ρ…ΠΎΠ΄Π΅ запроса Π½Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ установится сигнал высокого уровня), Π° ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ΅Π½ΠΈΠΈ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ снова ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ (установится Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ Π½ΠΈΠ·ΠΊΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ запроса Π½Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅). ΠœΡ‹ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌ Π²Π°ΠΌ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для систСмы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ прСрывания, Π² качСствС задания для ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ (Π·Π°Π΄Π°Π½ΠΈΠ΅ 2).

8.10. Π‘Π»ΠΎΠΆΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ΅ устройство: ΠΈΠΌΠΈΡ‚Π°Ρ‚ΠΎΡ€ ΠžΠ‘Π Π’

8.10.1. ΠšΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

НСкоторыС ΠΈΠ· ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² планирования Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ достаточно слоТно Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ частично Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ внутрСнняя опСрация этих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π΅ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°. Π˜ΠΌΠΈΡ‚Π°Ρ‚ΠΎΡ€ ΠžΠ‘Π Π’, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π½Π° рис. 8.22 ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠžΠ‘Π Π’.

Рис. 8.22. Π˜ΠΌΠΈΡ‚Π°Ρ‚ΠΎΡ€ ΠžΠ‘Π Π’


Π˜ΠΌΠΈΡ‚Π°Ρ‚ΠΎΡ€ состоит ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° Π±Π»ΠΎΠΊΠΎΠ² для 16 Π·Π°Π΄Π°Ρ‡: ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ систСмС ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈ 0 Π΄ΠΎ Π·Π°Π΄Π°Ρ‡ΠΈ F. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Π½Π° микросхСмС рСгистра с Π·Π°Ρ‰Π΅Π»ΠΊΠΎΠΉ 74HC573. БостояниС пСрСсылаСтся Π² рСгистр, Π³Π΄Π΅ ΠΎΠ½ΠΎ сохраняСтся Π²ΠΏΠ»ΠΎΡ‚ΡŒ Π΄ΠΎ измСнСния. БостояниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ отобраТаСтся Π½Π°Π±ΠΎΡ€ΠΎΠΌ свСтодиодов. Волько ΠΎΠ΄ΠΈΠ½ свСтодиод высвСчиваСтся Π² любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. ΠœΡ‹ использовали схСму Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° для свСтодиодов, Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½ΡƒΡŽ Π² Π³Π»Π°Π²Π΅ 5 для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· рСгистров 74HC573.

Π‘Ρ…Π΅ΠΌΠ° симулятора ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π½Π° рис. 8.23. Π”Π΅ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€ 4 Π² 16 (74HC154) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ. Π”Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΉ «адрСс» Π·Π°Π΄Π°Ρ‡ΠΈ задаСтся микропроцСссором Π½Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… линиях Π΄Π΅ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€Π°. Π’ любой ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π΅Π³ΠΎ Π²Ρ‹Ρ…ΠΎΠ΄ находится Π² Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Π½ΠΈΠ·ΠΊΠΎΠΌ состоянии ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, выбираСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Π·Π°Π΄Π°Ρ‡Π°.

Рис. 8.23. АппаратноС обСспСчСниС симулятора ΠžΠ‘Π Π’


ΠžΠ±Ρ‹Ρ‡Π½ΠΎ послС ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ всС Π·Π°Π΄Π°Ρ‡ΠΈ находятся Π² состоянии бСздСйствия. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ состояния систСмы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Π°, ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ Ρ€Π°Π±ΠΎΡ‚Ρƒ систСмы ΠžΠ‘Π Π’. Π‘ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ набираСтся сначала ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ состояниС, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π΅ Π½Π°Π±ΠΎΡ€ Ρ‚ΠΈΠΏΠΎΠ² активности Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. Π—Π°Ρ‚Π΅ΠΌ с Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹ набираСтся информация ΠΎ Ρ‚ΠΎΠΌ, Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π·Π°Π΄Π°Ρ‡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠžΠ‘Π Π’, обратимся снова ΠΊ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΌ, быстро ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΠΌΡΡ ΠΈ просто Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΌ сцСнариям с дилСрским обслуТиваниСм автомобиля, обслуТиваниСм ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π½Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΊ систСмС Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π² большой гостиницС. Π›ΡŽΠ±Ρ‹Π΅ ΠΈΠ· этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ планирования.

НапримСр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ (Π·Π°Π΄Π°Ρ‡Π°) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свойствСнный контСкст, состоящий ΠΈΠ· Π³ΠΎΠ΄Π° изготовлСния, ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π½ΠΎΠΌΠ΅Ρ€Π° ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΠΉ ΠΎΠ΄ΠΎΠΌΠ΅Ρ‚Ρ€Π°. ΠΠ²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ (Π·Π°Π΄Π°Ρ‡Π°) ΠΌΠΎΠΆΠ΅Ρ‚ находится Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… состояниях, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Ρ… состояниям Π·Π°Π΄Π°Ρ‡ (готовности, бСздСйствия ΠΈ Ρ‚.Π΄). ПослС изготовлСния автомобиля, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ² для ΠΏΡ€ΠΎΠ΄Π°ΠΆΠΈ (Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ), ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ испытания (Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ), нСдоступСн ΠΈΠ·-Π·Π° обслуТивания (ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅), ΠΏΡ€ΠΎΠ΄Π°Π½ (бСздСйствиС), ΠΈ Ρ‚.Π΄. БостояниС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ (Π·Π°Π΄Π°Ρ‡) ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° ΠΈΠΌΠΈΡ‚Π°Ρ‚ΠΎΡ€Π΅ ΠžΠ‘Π Π’ (Π΄ΠΎ 16 Π·Π°Π΄Π°Ρ‡). НовоС состояниС сцСнария ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ с ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΉ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹. НовоС состояниС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π–ΠšΠ”, Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ списков с указатСлями ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° экранС ПК [Barrett 20041].

8.10.2. Π’ΠΈΠΏΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ΄

Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ описаниС ΠΈΠΌΠΈΡ‚Π°Ρ‚ΠΎΡ€Π° ΠžΠ‘Π Π’ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ. Π’ этом Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΌΡ‹ просто ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΊΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ состояниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π·Π°Π΄Π°Ρ‡.

Ѐункция update_task_status Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π° Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΊΠΎΠ΄Π° ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ измСнСния состояния Π·Π°Π΄Π°Ρ‡ΠΈ. БпСцифичСская Π·Π°Π΄Π°Ρ‡Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ PORTA[3:0] ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ чСтырСхразрядным Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ подаСтся Π½Π° микросхСму 74HC154 Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π° 4–16. Когда Π½Π° Π΄Π΅ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€ подаСтся ΠΊΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ€Ρ‚Π° PORTA[7], активируСтся Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€-Π·Π°Ρ‰Π΅Π»ΠΊΠ°, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅. Π­Ρ‚ΠΎ позволяСт ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ состояниС Π·Π°Π΄Π°Ρ‡ΠΈ, прСдставлСнноС Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π°Ρ… ΠΏΠΎΡ€Ρ‚Π° T ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° 68HC12 Π½Π° свСтодиоды ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ состояниС Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° дисплСС.

Алгоритм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° UML для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ прСдставлСн Π½Π° рис. 8.24.

Рис. 8.24. Алгоритм UML для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ update_task_status


//******************************************************************

//имя Ρ„Π°ΠΉΠ»Π°: realtime.с

//Π°Π²Ρ‚ΠΎΡ€Ρ‹: Steve Barrett and Daniel Pack

//Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½: 1 июля, 2004

//послСдняя рСдакция: 1 июля, 2004

//******************************************************************

//Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ****************************************

#include <912b32.h>


//Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹****************************************

void initialize_ports(void); //инициализация ΠΏΠΎΡ€Ρ‚ΠΎΠ²

void initialize_LCD(void); //инициализация Π–ΠšΠ”

void putchars(unsigned char); //функция ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π–ΠšΠ” - ввСсти символ

void putcommands(unsigned char); // функция ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π–ΠšΠ” - ввСсти ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ

void delay_5ms(void); //Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π° 5 мс

void delay_100us(void); //Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π½Π° 100 мкс

void update_task_status(unsigned char task, char task_status);

//ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ состояниС Π·Π°Π΄Π°Ρ‡ΠΈ


//Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅************************************************


//главная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°****************************************************

void main(void) {

 asm(" .area vectors(abs)\n" //inline assembly statement

  " .org 0xFFF8\n" //initialize 68HC12 B32 reset vector

  " .word 0x8000, 0x8000, 0x8000, 0x8000\n"

  " .text");

 initialize_ports(); //ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚Ρ‹

 initialize_LCD(); // ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π–ΠšΠ”

 update_task_status(0x00, 'R') ; //ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ состояниС Π·Π°Π΄Π°Ρ‡ΠΈ

}


//******************************************************************

//initialize_ports: provides initial configuration for I/O ports

//******************************************************************

void initialize_ports(void) {

 DDRA = 0xFF; //ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PORTA ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ - ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π»ΠΈΠ½ΠΈΠΈ

              // Π΄Π΅ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π΅ΠΊΡΠΎΡ€Π°

 DDRT = 0xFF; // ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PORTT ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ - состояниС Π·Π°Π΄Π°Ρ‡ΠΈ

 DDRB = 0xFF; // ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PORTB ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ - ΠΏΠΎΡ€Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ… для Π–ΠšΠ”

 CTDRDLC = 0xFF; // ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PORT DLC ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ - сигналы

                 //управлСния для Π–ΠšΠ”

 DDRP = 0x0F; // ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ PORTP[3:0] ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ, PORT[7:4] ΠΊΠ°ΠΊ

              //Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ - для ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹

 PORTA = 0xFF; //ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ для PORTA всС Π»ΠΈΠ½ΠΈΠΈ Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€Π° высокоомными (Hi-Z)

}

/****************************************************************/


/****************************************************************/

/*update_task_status: ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ состояниС ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ      */

/*Π² соотвСтствии с допустимым ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠΌ (рис. 8.14)             */

/****************************************************************/

void update_task_status(unsigned char task, char task_status) {

 //ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ состояниС Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΠΎΡ€Ρ‚Π° T

 switch(task_status) {

 case 'D': //бСздСйствиС (D)

  PORTT = 0x01;

  break;

 case 'R': //Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ (R)

  PORTT = 0x02;