?? vectors08.lis
字號:
.module vectors08.c
.area text
; i -> 0,X
0000 _isrTIMER1::
0000 8B pshh
0001 A7FF ais #-1
0003 95 tsx
0004 ; /*-----------------------------------------------------*
0004 ; *文件名:vectors08.c *
0004 ; *功 能:用于定義中斷矢量表 *
0004 ; *-----------------------------------------------------*/
0004 ; #include "GP32C.H"
0004 ; #include "SCI.h" //串行通信頭文件
0004 ; /*[相應寄存器定義]*/
0004 ; #define TSTOPBit 5 //定時器計數停止位
0004 ; #define TOFBit 7 //定時器溢出標志位
0004 ; /*isrTIMER1:定時器溢出中斷處理函數---------------------*
0004 ; *功 能:給內存單元Time[0-2](時分秒)賦值 *
0004 ; *-----------------------------------------------------*/
0004 ; extern unsigned char time[3]; //H M S
0004 ; #pragma interrupt_handler isrTIMER1
0004 ; void isrTIMER1(void)
0004 ; {
0004 ; unsigned char i;
0004 ; asm("SEI"); //關總中斷
0004 9B SEI
0005 ; //------------------------------
0005 ; time[2]++; //秒數加1
0005 3C02 inc *_time+2
0007 ; if (time[2]!=60) goto isrTIMER1_exit; //秒數未增加到60,轉
0007 B602 lda *_time+2
0009 A13C cmp #60
000B 2702 beq L3
000D 201A bra L6
000F L3:
000F ; time[2]=0; time[1]++; //秒數增加到60,清0,分鐘數加1
000F 3F02 clr *_time+2
0011 3C01 inc *_time+1
0013 ; if (time[1]!=60) goto isrTIMER1_exit; //分鐘數未增到60,轉
0013 B601 lda *_time+1
0015 A13C cmp #60
0017 2702 beq L9
0019 200E bra L6
001B L9:
001B ; time[1]=0; time[0]++; //分鐘數增加到60,清0,小時數加1
001B 3F01 clr *_time+1
001D 3C00 inc *_time
001F ; if (time[0]!=24) goto isrTIMER1_exit; //小時數未增到24,轉
001F B600 lda *_time
0021 A118 cmp #24
0023 2702 beq L13
0025 2002 bra L6
0027 L13:
0027 ; time[0]=0; //時數增加到24,清0
0027 3F00 clr *_time
0029 L6:
0029 ; isrTIMER1_exit:
0029 ; //------------------------------
0029 ; //清除定時器溢出標志位
0029 ; T1SC&=~(1<<TOFBit);
0029 1F20 bclr #7,0x20
002B ; asm("CLI"); //開總中斷
002B 9A CLI
002C L1:
002C A701 ais #1
002E .dbline 0 ; func end
002E 8A pulh
002F 80 rti
0030 _isrRe::
0030 8B pshh
0031 B600 lda *__r0
0033 87 psha
0034 B600 lda *__r1
0036 87 psha
0037 B600 lda *__r2
0039 87 psha
003A B600 lda *__r3
003C 87 psha
003D B600 lda *__r4
003F 87 psha
0040 B600 lda *__r5
0042 87 psha
0043 B600 lda *__r6
0045 87 psha
0046 B600 lda *__r7
0048 87 psha
0049 B600 lda *__r8
004B 87 psha
004C B600 lda *__r9
004E 87 psha
004F B600 lda *__r10
0051 87 psha
0052 B600 lda *__r11
0054 87 psha
0055 B600 lda *__rhi
0057 87 psha
0058 B600 lda *__rlo
005A 87 psha
005B ; }
005B ; /*isrRe:接收中斷處理函數-------------------------------*
005B ; *功 能:接收3字節基準時分秒放入內存單元Time[0-2] *
005B ; *-----------------------------------------------------*/
005B ; #pragma interrupt_handler isrRe
005B ; void isrRe(void)
005B ; {
005B ; asm("SEI"); //禁止所有中斷
005B 9B SEI
005C ; //接收數據
005C ; SCIReN(3,time);
005C 450000 ldhx #_time
005F 89 pshx
0060 8B pshh
0061 A603 lda #3
0063 87 psha
0064 CD0000 jsr _SCIReN
0067 A703 ais #3
0069 95 tsx
006A ; asm("CLI"); //開放總中斷
006A 9A CLI
006B L15:
006B .dbline 0 ; func end
006B 86 pula
006C B700 sta *__rlo
006E 86 pula
006F B700 sta *__rhi
0071 86 pula
0072 B700 sta *__r11
0074 86 pula
0075 B700 sta *__r10
0077 86 pula
0078 B700 sta *__r9
007A 86 pula
007B B700 sta *__r8
007D 86 pula
007E B700 sta *__r7
0080 86 pula
0081 B700 sta *__r6
0083 86 pula
0084 B700 sta *__r5
0086 86 pula
0087 B700 sta *__r4
0089 86 pula
008A B700 sta *__r3
008C 86 pula
008D B700 sta *__r2
008F 86 pula
0090 B700 sta *__r1
0092 86 pula
0093 B700 sta *__r0
0095 8A pulh
0096 80 rti
0097 _isrDummy::
0097 8B pshh
0098 ; }
0098 ; //未定義的中斷處理函數,本函數不能刪除
0098 ; #pragma interrupt_handler isrDummy
0098 ; void isrDummy(void)
0098 ; {
0098 L16:
0098 .dbline 0 ; func end
0098 8A pulh
0099 80 rti
.area memory(abs)
.org 0xffdc
FFDC __vectab::
FFDC 0097 .word _isrDummy
FFDE 0097 .word _isrDummy
FFE0 0097 .word _isrDummy
FFE2 0097 .word _isrDummy
FFE4 0030 .word _isrRe
FFE6 0097 .word _isrDummy
FFE8 0097 .word _isrDummy
FFEA 0097 .word _isrDummy
FFEC 0097 .word _isrDummy
FFEE 0097 .word _isrDummy
FFF0 0097 .word _isrDummy
FFF2 0000 .word _isrTIMER1
FFF4 0097 .word _isrDummy
FFF6 0097 .word _isrDummy
FFF8 0097 .word _isrDummy
FFFA 0097 .word _isrDummy
FFFC 0097 .word _isrDummy
.area lit
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -