Π ΠΈΡ. 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 ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ - ΡΠΈΠ³Π½Π°Π»Ρ
// ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΠΠ
}
//********************************************************************