ΠΠ±ΡΠ°ΡΠΈΠΌΡΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΊ ΡΠ°Π·ΡΡΡΠ½Π΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π»ΠΈΡΡ ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π΄Π»Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΠΎΠΉ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
1 #define _IO_BASE 0
2 #define _P(off) *(unsigned char volatile*) (_IO_BASE + off)
3 #define TSCR _Π (0Ρ 86)
4 #define TMSK2 _Π (0Ρ 8D)
5 #define TFLG2 _P(0x8F)
6 #define DDRA _Π (0Ρ 02)
7 #define PORTA _Π (0Ρ 00)
8 #define CLI() asm("cli\n")
9 #define EXIT() asm("swi\n")
ΠΠ²Π΅ ΠΏΠ΅ΡΠ²ΡΠ΅ ΡΡΡΠΎΠΊΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠ° _P Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ off. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ» ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π² ΠΌΠ°ΠΊΡΠΎΡΠ΅. ΠΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΡΡΠΎΠΊΠ°Ρ Ρ 3 ΠΏΠΎ 7 ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΠ. ΠΡΠΈ ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ β Π°Π΄ΡΠ΅ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΊΠ°ΡΡΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΠ. ΠΡΠ±ΠΎΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² Π² ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΡ ΠΏΠΎ ΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π΄ΡΠ΅ΡΠ°ΠΌ. ΠΡΠΈΠΌ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ° _P(off). ΠΠ²Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ 8 ΠΈ 9 ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ².
ΠΠ΅ΡΠ½Π΅ΠΌΡΡ ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄Π°ΠΌΠΈ. ΠΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Sample.c Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°.
1 .module interrupt.c
2 .area memory(abs)
3 .org 0xb1e
4 _Timer_Overflow_interrupt_vector::
5 .word _TOIISR
6 .area data
7 _second::
8 .blkb 1
9 .area idata
10 .byte 0
11 .area data
12 .area text _main::
14 ; void TOIISR(void);
15 ; #pragma interrupt_handler TOIISR() ;
16 ; #pragma abs_address:0x0B1E
17 ; void (*Timer_Overflow_interrupt_vector[]) ()={TOIISR};
18 ; #pragma end_abs_address ;
19 ; unsigned char second=0x00;
20 ;
21 ;void main(void)
22 ;{
23 ; TSCR=0x80;
24 ldab #128
25 stab 0Ρ 86
26 ; Π’ΠSΠ2=0Ρ 80;
27 ldab #128
28 stab 0x8d
29 ; TFLG2=0x80;
30 ldab #128
31 stab 0x8f
32 ; DDRA=0xFF;
33 ldab #255
34 stab 0Ρ 2
35 ; CLI();
36 Ρli
37 L3: L4:
38 bra L3
39 X0:
40 ; while(1) {};
41 ; EXIT();
42 swi
43 ; }L2
44 .dbline 0
45 ; func end
46 rts
47 _TOIISR: :
48 void TOIISR(void)
49 ; {
50 ; TFLG2=0x80;
51 ldab #128
52 stab 0x8f
53 ; second + = 1;
54 ldab _second
55 clra
56 addd #1
57 stab _second
58 ; if(second = = 122)
59 ldab _second
60 cmpb #122
61 bne L7
62 ; {
63 ; PORTA = ~ PORTA;
64 ; vol
65 ldab 0
66 clra
67 coma
68 comb
69 stab 0
70 ; second = 0x00;
71 clr _second
72 ; }
73 L7:
74 ; }
75 L6:
76 .dbline 0
77 ; func end
78 rti
ΠΡΠ°ΠΊ, ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΡΠ΅ΠΊΡΡ ΠΏΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΡΠΎΡΡ-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π½Π° ΡΠ·ΡΠΊΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° 68HC12 ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΠ·ΡΠΊΠ° ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ Π² ΡΠΎΡΡΠ°Π²Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ICC12. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΠΠ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ. Π ΡΡΠ΅Π΄Π΅ ICC12 Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π²ΡΠ΄Π΅Π»ΡΡΡΡΡ ΡΠΎΡΠΊΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: .area data ΠΈΠ»ΠΈ .byte 0. Π Π°Π·Π±Π΅ΡΠ΅ΠΌ ΡΠ΅ΠΊΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
Π ΡΡΡΠΎΠΊΠ΅ 1 Π·Π°ΠΏΠΈΡΠ°Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ΠΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ .area ΠΈ .org Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡΡΠΎΠΊΠΈ 7 ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π‘ΠΈ: #pragma abs_address:0x0B1E. ΠΠ½ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π°Π΄ΡΠ΅Ρ ΡΡΠ΅ΠΉΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ Π°Π΄ΡΠ΅ΡΠ° Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°. ΠΡΠΎ Π°Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ Π²Π΅ΠΊΡΠΎΡΠΎΠΌ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ. ΠΠ»Ρ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° 68HC12 ΡΡΠ΅ΠΉΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π²Π΅ΠΊΡΠΎΡΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΎΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΠ ΠΌΠΎΠ΄Π΅Π»ΠΈ 68HC12B32 Π² ΡΡΠ΅ΠΉΠΊΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ 0x0B1E Ρ ΡΠ°Π½ΠΈΡΡΡ Π²Π΅ΠΊΡΠΎΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠ΅Π΄Ρ ICC12 Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Π‘ΠΈ (ΡΡΠΎ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ). ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ Π² ΡΡΡΠΎΠΊΠ°Ρ 4, 7 ΠΈ 47. ΠΠ²Π° Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΡ ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΡΡΠ°ΠΆΠ°ΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΈΠ· Π²ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Ρ.Π΅. ΠΈΠ· ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΈΠ· Π²ΡΠ΅Ρ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° .word Π² ΡΡΡΠΎΠΊΠ΅ 5 ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ Π·Π°ΠΏΠΈΡΡ Π°Π΄ΡΠ΅ΡΠ° Π½Π°ΡΠ°Π»Π° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ TOIISR Π² ΡΡΠ΅ΠΉΠΊΡ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ°Π·ΡΡΠ΄Π½ΠΎΡΡΡΡ Π² 2 Π±Π°ΠΉΡΠ°. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π² ΡΡΡΠΎΠΊΠ°Ρ Ρ 7 ΠΏΠΎ 11 Π²ΡΠ΄Π΅Π»ΡΡΡ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ second ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡ Π΅Π΅ Π½ΡΠ»Π΅Π²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π»ΠΈΠ½ΠΈΠΈ 12 ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ΄Π΅ΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΡΠΎΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° 68HC12, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° Π½Π° Π‘ΠΈ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Ρ Π² ΡΠ΅ΠΊΡΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (ΡΡΡΠΎΠΊΠΈ Ρ 13 ΠΏΠΎ 23), Π½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ Π½ΠΈΠΌΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΡΠΈΠΌΠ²ΠΎΠ» Β«ΡΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉΒ». ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Ρ Π² ΡΡΠ°ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ±Π±ΡΠ΅Π²ΠΈΠ°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΠΎ ΡΡΡΠΎΠΊΠΈ 24. ΠΡΠΈΡΠ΅ΠΌ Π² ΡΡΡΠΎΠΊΠ΅ 23 Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π‘ΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ ΡΠ΅Π³ΠΈΡΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠΌ TSCR Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0x80. ΠΠΈΠΆΠ΅ Π² ΡΡΡΠΎΠΊΠ°Ρ 24 ΠΈ 25 Π·Π°ΠΏΠΈΡΠ°Π½Ρ Π΄Π²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ Π΄Π°Π½Π½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΡΠΈΡΠ΅ΠΌ, ΠΊΡΠΎΡΡ-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ TSCR ΠΊΠ°ΠΊ 0x86. Π‘ΡΡΠΎΠΊΠΈ Ρ 26 ΠΏΠΎ 36 Π·Π°Π²Π΅ΡΡΠ°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, Π½ΠΎ ΡΠΆΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄. Π ΡΡΡΠΎΠΊΠ°Ρ 37β¦40 Π·Π°ΠΏΠΈΡΠ°Π½Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°. Π‘ΡΡΠΎΠΊΠΈ Ρ 41 ΠΏΠΎ 46 Π·Π°Π²Π΅ΡΡΠ°ΡΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΌΠ°ΠΊΡΠΎΡΡ CLI() ΠΈ EXIT() Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ cli ΠΈ swi ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π° Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΈΠ· ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ rts. Π ΡΡΡΠΎΠΊΠ΅ 47 Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°. ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΡΡ Π΅Π΅ ΡΠ΅ΠΊΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠ»Π΅Π΄ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° Π½Π° Π‘ΠΈ. ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ rti Π² ΡΡΡΠΎΠΊΠ΅ 78.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° β ΡΡΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (ΡΠ°ΠΉΠ» interrupt.o) ΠΈΠ· ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎΡΠ»Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΡΡΠ΅ΠΌΠ±Π»Π΅Ρ ΡΡΠ΅Π΄Ρ ICC12 ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠ΄:
XΠ
H4 areas 4 global symbols
M interrupt.c
Π text size 3D flags 0
S _main Def0000
S _TOIISR Def001A
Π memory size Π20 flags Π‘
S _Timer_Overflow_interrupt_vector Def0B1E
Π data size 1 flags 0
S _second Def0000
Π idata size 1 flags 0
T 0Π 1Π 00 1Π
R 00 00 00 01 00 02 00 00
T 00 00 00
R 00 00 00 03
T 00 00 Π‘6 80 7Π 00 86 Π‘6 80 7Π 00 80 Π‘6 80 7Π
R 00 00 00 00
T 00 00 00 8F Π‘6 FF 7Π 00 02 10 EF 20 FE 3F 30 Π‘6
R 00 00 00 00
T 00 1Π 80 7Π 00 8F F6 00 00 87 Π‘3 00 01 7Π 00 00
R 00 00 00 00 00 07 00 02 00 0E 00 02
T 00 29 F6 00 00 C1 7Π 26 ΠΠ‘ F6 00 00 87 41 51 7B
R 00 00 00 00 00 03 00 02
Π’ 00 37 00 00 79 00 00 0B
R 00 00 00 00 00 05 00 02
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ Π² Π²Π΅ΡΡ Π½Π΅ΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠ°, Π° Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠ΄Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ° ΠΠ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° 68HC12.
ΠΠ° Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ°Π΄ΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠ°. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ ΡΡΠΈ ΡΠ°ΠΉΠ»Π°: interrupt.lst, interrupt.map ΠΈ interrupt.s19.
Π€Π°ΠΉΠ» Π»ΠΈΡΡΠΈΠ½Π³Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ interrupt.lst ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°, ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΊΠΎΠ΄Ρ ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΈ ΠΊΠΎΠ΄Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ. Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π»ΠΈΠ½ΠΊΠΎΠ²ΡΠΈΠΊΠΎΠΌ ΡΠ°ΠΉΠ» Π»ΠΈΡΡΠΈΠ½Π³Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π½ΠΈΠΆΠ΅:
.module interrupt.c
.area memory(abs)
.org 0Ρ b1Π΅
0B1Π _ _Timer_Overflow_interrupt_vector: :
0B1Π 8044 .word _TOIISR
.area data
0800 _second::
0800 .blkb 1
.area idata
--- 0000 00 .byte 0
.area data
.area text
802Π _main: :
;#include <383HC12-ver1.h>
;void TOIISR(void) ;
;#pragma interrupt_handler TOIISR()
;
;#pragma abs_address:0x0B1E
;void(*Timer_Overflow_interrupt_vector[]) ()={TOIISR};
;#pragma end_abs_address
;
;unsigned char second=0x00;
;
;void main(void)
;{
;TSCR=0x80;
802Π C680 ldab #128
802Π‘ 7Π0086 stab 0Ρ 86
;TMSK2=0x80;
802F C680 ldab #128
8031 7B008D stab 0x8d