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

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

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

Рис. 7.17. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ испытаний двигатСля


ΠžΠΏΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄Π΅Ρ€.  БущСствуСт ΡˆΠΈΡ€ΠΎΠΊΠΎΠ΅ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ оптичСских ΠΊΠΎΠ΄Π΅Ρ€ΠΎΠ² для опрСдСлСния скорости вращСния Π²Π°Π»Π° двигатСля. Π­Ρ‚ΠΈ ΠΊΠΎΠ΄Π΅Ρ€Ρ‹ Π·Π°ΠΊΡ€Π΅ΠΏΠ»ΡΡŽΡ‚ΡΡ нСпосрСдствСнно Π½Π° Π²Π°Π»Ρƒ, ΠΈΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ связаны с Π²Π°Π»ΠΎΠΌ ΠΊΠ°ΠΊΠΈΠΌΠΈ-Π»ΠΈΠ±ΠΎ устройствами. ΠŸΡ€ΠΈ установкС ΠΊΠΎΠ΄Π΅Ρ€Π° Π½Π° Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉΡΡ Π²Π°Π», это устройство обСспСчиваСт Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠ΅ напряТСниС. ΠšΠΎΠ΄Π΅Ρ€Ρ‹ ΠΏΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ постоянного напряТСния 5 Π’, ΠΈ рассчитаны Π½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вращСния Π² 12 000 ΠΎΠ±/ΠΌΠΈΠ½. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ оптичСскиС ΠΊΠΎΠ΄Π΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ скорости вращСния двигатСля, ΠΊΠ°ΠΊ описано Π² [11]. Установка для измСрСния частоты вращСния ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° рис. 7.18.

Рис. 7.18. Установка для измСрСния скорости вращСния двигатСля


ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π² МК 68HC12 ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠ΅Ρ‚ΠΎΠΊ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (RTI), пСриодичСски прСрывая Ρ€Π°Π±ΠΎΡ‚Ρƒ 68HC12, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ двигатСля ΠΈ ΡΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ коэффициСнт заполнСния ШИМ, Ссли это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для стабилизации скорости вращСния двигатСля. ΠŸΠ΅Ρ€Π΅Π΄ обсуТдСниСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° для управлСния RTI, ΠΌΡ‹ совСтуСм Π’Π°ΠΌ, Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π² памяти ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ сбросах ΠΈ прСрываниях. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ€ дСйствий, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅ RTI:

β€’ Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€ прСрывания ΠΏΠΎ запросу RTI;

β€’ Π£ΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ коэффициСнт RTR[2:0];

β€’ Π£ΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ Ρ„Π»Π°Π³ RTIE Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΎΡ‚ RTI Π² рСгистрС RTICTL;

β€’ ΠžΡ‡ΠΈΡ‰Π°ΡŽΡ‚ Ρ„Π»Π°Π³ RTIF Π² рСгистрС RTIFLG;

β€’ Π Π°Π·Ρ€Π΅ΡˆΠ°ΡŽΡ‚ всС маскируСмыС прСрывания прСрывания (ΠΊΠΎΠΌΠ°Π½Π΄Π° CLI).

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π’Π°ΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ RTI. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ISR ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прСрывания RTI, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„Π»Π°Π³ ΠΏΠΎΡ€Ρ‚Π° PORTP. Если Π²Ρ‹ исслСдуСтС Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΡƒΡŽ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ„ΠΎΡ€ΠΌΡƒ ΡΠΈΠ³Π½Π°Π»Π°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° рис. 7.19, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ осциллографа ΠΈΠ»ΠΈ логичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, Ρ‚ΠΎ смоТСтС ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ повторСния систСмы RTI ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ.

Рис. 7.19. ΠŸΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΡ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ


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

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

//Port P[0]: ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠΉ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ€Ρ‚, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ TTL

// совмСстимыС сигналы для управлСния Π·Π°Ρ‚Π²ΠΎΡ€ΠΎΠΌ.

// Π°Π²Ρ‚ΠΎΡ€Ρ‹: Π‘Ρ‚ΠΈΠ² Π‘Π°Ρ€Ρ€Π΅Ρ‚Ρ‚ ΠΈ Π”Π°Π½ΠΈΠ΅Π»ΡŒ Пак

//Π΄Π°Ρ‚Π° создания: Mar 10, 2003

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

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


#include <912b32.h>

#pragma interrupt_handler RTI_isr


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

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

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

void RTI_isr(void);

void initialize_RTI(void);


//main program* *******************************************************

void main(void) {

 //инициализация Π²Π΅ΠΊΡ‚ΠΎΡ€Π° сброса для B32

 asm(".area vectors(abs)\n"

  " .org 0xFFF0\n" // инициализация Π²Π΅ΠΊΡ‚ΠΎΡ€Π° прСрывания RTI

  " .word _RTI_isr\n"

  " .org 0xFFF8\n" // инициализация Π²Π΅ΠΊΡ‚ΠΎΡ€Π° сброса для B32

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

  " .text");

 initialize_RTI(); //инициализация модуля RTI

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

 PORTP = 0x01; // Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ PORTP Π²Ρ‹Π²ΠΎΠ΄ 0

 asm("cli"); //Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ всСх маскируСмых ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ

 .

 .

 .

}


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

// опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

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


//Initialize_ports: Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ конфигурация

//для ΠΏΠΎΡ€Ρ‚ΠΎΠ² Π²Ρ…ΠΎΠ΄Π°/Π²Ρ‹Ρ…ΠΎΠ΄Π°

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

void initialize_ports(void) {

 DDRP=0xFF; //ΠΏΠΎΡ€Ρ‚ PORTP устанавливаСтся ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ

}


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

//RTI_isr: ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° обслуТивания ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ ΠΏΠΎ RTI

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

void RTI_isr(void) {

 RTIFLG = 0x80; //сбрасываСтся Ρ„Π»Π°Π³ RTIF

 PORTP =~(PORTP); //ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Ρ‹ PORTP

}

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


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

//initialize_RTI:ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ RTI

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

void initialize_RTI(void) {

 RTICTL = 0x86; // устанавливаСтся Ρ‚Π°ΠΉΠΌΠ΅Ρ€ RTI

 RTIFLG = 0x80; //сбрасываСтся Ρ„Π»Π°Π³ RTIF

}

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

Аккумулятор ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ². Π§ΠΈΡΠ»ΠΎ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ², ΠΏΠΎΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΡ… ΠΎΡ‚ оптичСского ΠΊΠΎΠ΄Π΅Ρ€Π°, подсчитываСтся аккумулятором ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² (PA). Он инициализируСтся Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π·Π°Ρ‚Π΅ΠΌ фиксируСт Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ число ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прСрывания RTI. По извСстному ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ прСрываниями RTI (32.768 мс) ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ число ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ², ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΠ²ΡˆΠΈΡ… Π½Π° PA ΠΌΠ΅ΠΆΠ΄Ρƒ двумя прСрываниями, ΠΈ Π·Π°Ρ‚Π΅ΠΌ вывСсти Π½Π° дисплСй ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ вращСния двигатСля. Для ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ PA систСмы сущСствуСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

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

//initialize_PA: инициализация модуля аккумулятора ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² МК 68HC12

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

void initialize_PA(void) {

 TIOS = 0x00; //ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π½Π°Π» 7 для Ρ€Π°Π±ΠΎΡ‚Ρ‹ счСтчика ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ²

 TCTL1 = 0x00; //ΠΊΠΎΠ΄Π΅Ρ€Π° - 3 ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°

 OC7M = 0x00;

 TSCR = 0x80; //Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΈΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Π°ΠΉΠΌΠ΅Ρ€Π°

 PACTL = 0x70; //Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ PA, Ρ€Π΅ΠΆΠΈΠΌ счСта событий, событиС

               // ΠΏΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Ρƒ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°,

}

ОбъСдиним Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ для RTI, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ число ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² ΠΊΠΎΠ΄Π΅Ρ€Π°, ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠΈΡ…ΡΡ Π·Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» прСрывания. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ², этот Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π² число ΠΎΠ±/ΠΌΠΈΠ½ ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π–Πš ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€.

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

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

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

//Π΄Π°Ρ‚Π° создания: Mar 10, 2003

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

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

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

#include <912b32.h>

#pragma interrupt_handler RTI_isr //ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ прСрывания ΠΏΠΎ RTI


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

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

void RTI_isr(void); //ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° обслуТивания ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ RTI

void initialize_RTI(void); // ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму RTI

void initialize_PA(void); //ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ аккумулятор ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² (PA)

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

void display_count_LCD(unsigned int); //Π²Ρ‹Π²ΠΎΠ΄ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ содСрТимого аккумулятора PA

                                      // Π½Π° Π–Πš ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€

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

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

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

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

unsigned int old_count; //послСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, записанноС Π² (PA)

int RTI_int_count =0; //ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для подсчСта RTI ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ


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

void main(void) {

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

  ".org 0xFFF0\n" //инициализация Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ RTI

  ".word _RTI_isr\n"

  " .org 0xFFF8\n" // инициализация Π²Π΅ΠΊΡ‚ΠΎΡ€Π° reset для 68HC12 B32

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

  " .text");

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

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

 initialize_RTI(); //инициализация модуля RTI

 initialize_PA(); //инициализация аккумулятора ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ²

 asm("cli"); //Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ глобального маскирования

             //ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠΉ

 while(1) //ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π° Π΄ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ прСрывания

 {

  ;

 }

}

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


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

//initialize_ports: опрСдСляСт Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠΎΡ€Ρ‚ΠΎΠ²

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

void initialize_ports(void) {

 DDRP = 0xFF; // ΠΏΠΎΡ€Ρ‚ PORTP устанавливаСтся ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ для ШИМ

 DDRT = 0x00; // PORTT устанавливаСтся ΠΊΠ°ΠΊ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ, Π²Ρ‹Π²ΠΎΠ΄ PORTT[7]

              // Π² качСствС Π²Ρ…ΠΎΠ΄Π° аккумулятора ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² PA

 DDRB = 0xFF; // PORTB устанавливаСтся ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ - ΠΏΠΎΡ€Ρ‚

              // Π΄Π°Π½Π½Ρ‹Ρ… для Π–ΠšΠ”

 DDRDLC = 0xFF; // PORT DLC устанавливаСтся ΠΊΠ°ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ - сигналы

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

}


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