β’ ΠΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°ΠΉΠΌΠ΅ΡΠ° TEN (ΡΠ΅Π³ΠΈΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ ΡΠ°ΠΉΠΌΠ΅ΡΠ° TSCR);
β’ ΠΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ TOI ΠΈ Π±ΠΈΡΡ Π²ΡΠ±ΠΎΡΠ° ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ° Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΠ°ΡΡΠΎΡΡ Π½Π° Π²Ρ ΠΎΠ΄Π΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ PR2:PR1:PR0 (ΡΠ΅Π³ΠΈΡΡΡ ΠΌΠ°ΡΠΎΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΠ° TMSK2);
β’ ΠΠΈΡ Π²ΡΠ±ΠΎΡΠ° ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΠΊΠ°Π½Π°Π»Π° IOSn (ΡΠ΅Π³ΠΈΡΡΡ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² ΠΊΠ°Π½Π°Π»ΠΎΠ² Π·Π°Ρ Π²Π°ΡΠ°/ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ TIOS). ΠΡΠ»ΠΈ Π±ΠΈΡ IOSn ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π² 1, ΡΠΎ ΠΊΠ°Π½Π°Π» ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ;
β’ ΠΠΈΡΡ Π²ΡΠ±ΠΎΡΠ° ΡΠ΅ΠΆΠΈΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎΠ²Π½Ρ ΠΊΠ°Π½Π°Π»Π° Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ OMn:OLn (ΡΠ΅Π³ΠΈΡΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠΌ TCTL1 ΠΈ TCTL2);
β’ ΠΠΈΡ ΡΠΎΠ±ΡΡΠΈΡ Π² ΠΊΠ°Π½Π°Π»Π° CnF (ΡΠ΅Π³ΠΈΡΡΡ ΡΠ»Π°Π³ΠΎΠ² ΡΠ°ΠΉΠΌΠ΅ΡΠ° TFLG1);
β’ ΠΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠΎΠ±ΡΡΠΈΡ Π² ΠΊΠ°Π½Π°Π»Π΅ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ CnI (ΡΠ΅Π³ΠΈΡΡΡ ΠΌΠ°ΡΠΎΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΠ° TMSK1);
β’ Π Π΅Π³ΠΈΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΊΠ°Π½Π°Π»Π° TCn, ΠΊΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π±Π°Π·Ρ. ΠΠΎΠΌΠ΅Π½Ρ ΡΠ°Π²Π΅Π½ΡΡΠ²Π° ΠΊΠΎΠ΄ΠΎΠ² ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ΠΌ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ.
Π ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° timer3.c ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΠΈΠ³Π½Π°Π» Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΎΡΠΎΠΉ ΠΈ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠΌ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π² ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΡ ΠΎΠ±ΡΡΡΠ½ΠΈΡΠ΅, ΠΊΠ°ΠΊΡΡ ΡΠΎΡΠΌΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠΈΠ³Π½Π°Π».
ΠΡΠ΅ΠΆΠ΄Π΅, ΡΠ΅ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠ΅ΠΊΡΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ timer3.c, Π²ΡΠΏΠΎΠΌΠ½ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΡΠΎΡΠΌΠ»ΡΡΡΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Π‘ΠΈ. Π‘Π½Π°ΡΠ°Π»Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΠ°Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΡΠ΅ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π·Π°ΠΏΡΠ΅ΡΠ° ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠΉ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» 4.12):
#define CLI() asm("cli\n"); //ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΌΠ°ΡΠΊΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
#define SEI() asm("sei\n"); //Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ ΠΌΠ°ΡΠΊΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
Π’Π°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ° Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠ΅Π½Π½ΠΎΡΡΡΡ, Π² ΡΠ΅ΠΊΡΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ICC12 ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ImageΠ‘raft.
/*----------------------------------------------------------------------*/
/* filename: timer3.c */
/* ΠAIN PROGRAΠ: ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ */
/* Π² ΡΠΎΡΠΌΠ΅ ΠΌΠ΅Π°Π½Π΄ΡΠ° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ */
/* Π‘ΠΈΠ³Π½Π°Π» ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ 2 ΡΠ°ΠΉΠΌΠ΅ΡΠ° (IC2) */
/*----------------------------------------------------------------------*/
/*ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ*/
#include <912b32.h>
/*ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ*/
void initialize(void); /*ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ*/
void toggle_isr(void); /*ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ toggle_isr*/
//ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
#pragma interrupt_handler toggle_isr
//ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Π΅ΠΊΡΠΎΡΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
#pragma abs_address: 0xF7EA
void (*Timer_Channel_2_interrupt_vector[]) () = {toggle_isr};
#pragma end_abs address
/*Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅*/
int Ρ;
void main(void) {
Ρ = 100;
initialize(); /*ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°*/
TMSK1 = 0Ρ 04; /*ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠΎΠ±ΡΡΠΈΡ Π² ΠΊΠ°Π½Π°Π»Π΅ 2*/
TFLG1 = 0xFF; /*ΡΠ±ΡΠΎΡ Π²ΡΠ΅Ρ ΡΠ»Π°Π³ΠΎΠ² ΡΠΎΠ±ΡΡΠΈΠΉ ΠΎΡ ΠΊΠ°Π½Π°Π»ΠΎΠ²*/
CLI(); /*ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ*/
while(1) {
/*ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ*/
;
}
}
/*-------------------------------------------------------------*/
/* Π€ΡΠ½ΠΊΡΠΈΡ initialize Π·Π°Π΄Π°Π΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°ΠΉΠΌΠ΅ΡΠ°*/
/*-------------------------------------------------------------*/
void initialize(void) {
TMSK2 = 0x02; /*Π½Π°Π·Π½Π°ΡΠΈΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π΄Π΅Π»Π΅Π½ΠΈΡ 4*/
TIOS = 0Ρ 04; /*ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠ°Π½Π°Π» 2 Π² ΡΠ΅ΠΆΠΈΠΌ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ*/
TSCR = 0Ρ 80; /*ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°*/
TCTL2 = 0Ρ 10; /*Π½Π°Π·Π½Π°ΡΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎΠ²Π½Ρ */
/*ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅*/
}
/*----------------------------------------------*/
/* Π€ΡΠ½ΠΊΡΠΈΡ toggle_isr β ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ */
/*----------------------------------------------*/
void toggle_isr(void) {
TFLG1 = 0xFF;
/*ΡΠ±ΡΠΎΡ Π²ΡΠ΅Ρ ΡΠ»Π°Π³ΠΎΠ² ΡΠΎΠ±ΡΡΠΈΠΉ ΠΎΡ ΠΊΠ°Π½Π°Π»ΠΎΠ²*/
Π’Π‘2 = TC2 + c;
/*Π·Π°Π΄Π°ΡΡ ΠΊΠΎΠ΄ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π² ΡΠ΅Π³ΠΈΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΊΠ°Π½Π°Π»Π°*/
c = c + 100;
/*Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ c*/
}
/*-----------------------------------------------*/
ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ toggle_isr. ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ³Π½Π°Π»Π° ΠΎΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ?
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ timer4.c ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΠΏΠΎ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡΠΌ. Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΡΡΠ°Π·Ρ Π΄Π²Π΅ ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Ρ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠ°ΡΡΠΎΡΠ°ΠΌΠΈ ΠΈ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠ°ΠΌΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ΅ΡΡΡΠ΄Π½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΡΠΈΡΠ»ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΎ.
/*------------------------------------------------------------------------*/
/*filename: timer4.c */
/*ΠAIN PROGRAΠ: ΠΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π΄Π²Π΅ ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ*/
/* Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠΌΠ΅ΡΠ° ΠΈ Π΄Π²ΡΡ ΠΊΠ°Π½Π°Π»ΠΎΠ² ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ */
/* Π‘ΠΈΠ³Π½Π°Π»Ρ ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π°Ρ 2 ΠΈ 3 ΡΠ°ΠΉΠΌΠ΅ΡΠ°. */
/*------------------------------------------------------------------------*/
/*ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ*/
#include <912b32.h>
/*ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ*/
void initialize(void); /*ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ*/
void toggle1_isr(void); /*ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ toggle1_isr*/
void toggle2_isr(void); /*ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ toggle2_isr*/
//ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
#pragma interrupt_handler toggle1_isr
#pragma interrupt_handler toggle2_isr
//ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ² ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ
#pragma abs_address: 0xF7E8
void (*Timer_Channel_3_interrupt_vector[]) () = {toggle2_isr};
void (*Timer_Channel_2_interrupt_vector[]) () = {toggle1_isr};
#pragma end_abs address
void main(void) {
initialize(); /*ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°*/
TMSK1 = 0Ρ 0C; /*ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠΎΠ±ΡΡΠΈΡ Π² ΠΊΠ°Π½Π°Π»Π°Ρ 2 ΠΈ 3*/
TFLG1 = 0xFF; /*ΡΠ±ΡΠΎΡ Π²ΡΠ΅Ρ ΡΠ»Π°Π³ΠΎΠ² ΡΠΎΠ±ΡΡΠΈΠΉ ΠΎΡ ΠΊΠ°Π½Π°Π»ΠΎΠ²*/
CLI(); /*ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ*/
while(l) {
/*ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ*/
;
}
}
/*-------------------------------------------------------------*/
/* Π€ΡΠ½ΠΊΡΠΈΡ initialize Π·Π°Π΄Π°Π΅Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°ΠΉΠΌΠ΅ΡΠ°*/
/*-------------------------------------------------------------*/
void initialize(void) {
TMSK2 = 0x02; /*Π½Π°Π·Π½Π°ΡΠΈΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π΄Π΅Π»Π΅Π½ΠΈΡ 4*/
TIOS = 0Ρ 0C; /*ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠ°Π½Π°Π»Ρ 2 ΠΈ 3 Π² ΡΠ΅ΠΆΠΈΠΌ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ*/
/*ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ*/
TSCR = 0Ρ 80; /*ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°*/
TCTL2 = 0Ρ 50; /*Π½Π°Π·Π½Π°ΡΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎΠ²Π½Ρ */
/*ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΠ±ΠΎΠΈΡ ΠΊΠ°Π½Π°Π»ΠΎΠ²*/
}
/*------------------------------------------------------------------*/
/* Π€ΡΠ½ΠΊΡΠΈΡ toggle1_isr ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠΎΠ±ΡΡΠΈΡ Π² ΠΊΠ°Π½Π°Π»Π΅ 2*/
/*------------------------------------------------------------------*/
void toggle1_isr(void) {
TFLG1 = 0x04; /*ΡΠ±ΡΠΎΡ ΡΠ»Π°Π³Π° ΡΠΎΠ±ΡΡΠΈΡ ΠΊΠ°Π½Π°Π»Π° 2*/
Π’Π‘2 += 9091; /*Π·Π°Π΄Π°ΡΡ ΠΊΠΎΠ΄ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π² ΡΠ΅Π³ΠΈΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΊΠ°Π½Π°Π»Π°*/
}
/*------------------------------------------------------------------*/
/*-------------------------------------------------------------------*/
/* Π€ΡΠ½ΠΊΡΠΈΡ toggle2_isr ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠΎΠ±ΡΡΠΈΡ Π² ΠΊΠ°Π½Π°Π»Π΅ 3 */
/*-------------------------------------------------------------------*/
void toggle2_isr(void) {
TFLG1 = 0x08; /*ΡΠ±ΡΠΎΡ ΡΠ»Π°Π³Π° ΡΠΎΠ±ΡΡΠΈΡ ΠΊΠ°Π½Π°Π»Π° 3*/
Π’Π‘2 += 4854; /*Π·Π°Π΄Π°ΡΡ ΠΊΠΎΠ΄ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π² ΡΠ΅Π³ΠΈΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΊΠ°Π½Π°Π»Π°*/
}
/*-------------------------------------------------------------------*/
ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ toggle1_isr ΠΈ toggle2_isr. ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠ°ΠΊΠΈΡ ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ?
4.14.5. Π‘ΡΠ΅ΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ
Π‘ΡΠ΅ΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΈΠ»ΠΈ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² (Pulse Accumulator) β ΡΡΠΎ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°ΠΉΠΌΠ΅ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ². ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ β 16 ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ ΡΡΠ΅ΡΡΠΈΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π΄Π²ΡΡ ΡΠ΅ΠΆΠΈΠΌΠ°Ρ :
β’ Π‘ΡΠ΅ΡΡΠΈΠΊ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ. Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΠ΅ΡΡΠΈΠΊ PACNT ΠΏΠΎΠ΄ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π΄Π΅ΡΠ΅ΠΊΡΠΈΡΡΠ΅ΡΡΡ Π΅Π³ΠΎ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌ Π½Π° Π²Ρ ΠΎΠ΄Π΅ PAI. Π’ΠΈΠΏ ΡΠΎΠ±ΡΡΠΈΡ (ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΠ°ΡΡΠ°ΡΡΠΈΠΉ ΠΈΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΏΠ°Π΄Π°ΡΡΠΈΠΉ ΡΡΠΎΠ½Ρ ΡΠΈΠ³Π½Π°Π»Π°) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΎΠΊ.
β’ Π‘ΡΡΠΎΠ±ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠΌΠ΅Ρ. Π ΡΡΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΡΠ΅ΡΡΠΈΠΊ PACNT ΡΠ°ΠΊΡΠΈΡΡΠ΅ΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌΠΈ ΠΈΠΌΠΏΡΠ»ΡΡΠ°ΠΌΠΈ Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ fBUS/64, Π° ΡΠΈΠ³Π½Π°Π»Ρ Π½Π° Π²Ρ ΠΎΠ΄Π΅ PAI ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡ ΡΡΠ΅Ρ.
Π Π΅ΠΆΠΈΠΌΡ ΡΠ°Π±ΠΎΡΡ ΡΡΠ΅ΡΡΠΈΠΊΠ°Π‘ΡΡΡΠΊΡΡΡΠ½Π°Ρ ΡΡ Π΅ΠΌΠ° ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΡΠΈΡ. 4.45. ΠΠ·ΡΡΠΈΠ² Π΅Π΅, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²Ρ ΠΎΠ΄Π° PAI, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΡΡΡΠΏΠ°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΈΠΌΠΏΡΠ»ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π»ΠΈΠ½ΠΈΡ PT7 ΠΏΠΎΡΡΠ° PORT T. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π»ΠΈΠ½ΠΈΠΈ 7 ΠΏΠΎΡΡΠ° PORT T. ΠΠ΄Π½Π°ΠΊΠΎ Π»ΠΈΠ½ΠΈΡ PT7 ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. ΠΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π²Ρ ΠΎΠ΄ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π²ΡΡ ΠΎΠ΄ ΠΊΠ°Π½Π°Π»Π° 7 ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ Π·Π°Ρ Π²Π°ΡΠ°/ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°ΠΉΠΌΠ΅ΡΠ°. ΠΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π² ΡΠ΅Π³ΠΈΡΡΡΠ°Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π»ΠΈΠ½ΠΈΡ PT7 ΠΊΠ°ΠΊ Π²Ρ ΠΎΠ΄ PAI ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ?