?? vectors08.lis
字號:
.module vectors08.c
.area text
; i -> 0,X
0000 _isrTIMER1::
0000 8B pshh
0001 B600 lda *__r0
0003 87 psha
0004 B600 lda *__r1
0006 87 psha
0007 B600 lda *__r2
0009 87 psha
000A B600 lda *__r3
000C 87 psha
000D B600 lda *__r4
000F 87 psha
0010 B600 lda *__r5
0012 87 psha
0013 B600 lda *__r6
0015 87 psha
0016 B600 lda *__r7
0018 87 psha
0019 B600 lda *__r8
001B 87 psha
001C B600 lda *__r9
001E 87 psha
001F B600 lda *__r10
0021 87 psha
0022 B600 lda *__r11
0024 87 psha
0025 B600 lda *__rhi
0027 87 psha
0028 B600 lda *__rlo
002A 87 psha
002B A7FF ais #-1
002D 95 tsx
002E ; /*-----------------------------------------------------*
002E ; *文件名:vectors08.c *
002E ; *功 能:用于定義中斷矢量表 *
002E ; *-----------------------------------------------------*/
002E ; #include "GP32C.H"
002E ; #include "KB.h"
002E ;
002E ; /*[相應寄存器定義]*/
002E ; #define TSTOPBit 5 //定時器計數停止位
002E ; #define TOFBit 7 //定時器溢出標志位
002E ; //外部變量
002E ; extern unsigned char time[14]; //存放時鐘年、月、日、時、分、秒
002E ; extern unsigned char Ttime[3]; //存放時鐘時、分、秒
002E ; extern int Tdate[3]; //存放時鐘年、月、日
002E ; extern unsigned char Key; //存放按下鍵的定義值
002E ; extern void Changetime(int temp1[],unsigned char temp2[]); //將數組temp1拆分存儲到數組temp2
002E ; /*isrTIMER1:定時器溢出中斷處理函數---------------------*
002E ; *功 能:給內存單元Time[0-2](時分秒)賦值 *
002E ; *-----------------------------------------------------*/
002E ;
002E ; #pragma interrupt_handler isrTIMER1
002E ; void isrTIMER1(void)
002E ; {
002E ; unsigned char i;
002E ; asm("SEI"); //關總中斷
002E 9B SEI
002F ; //------------------------------
002F ; Ttime[2]++; //秒數加1
002F 3C02 inc *_Ttime+2
0031 ; if (Ttime[2]!=60) goto isrTIMER1_exit; //秒數未增加到60,轉
0031 B602 lda *_Ttime+2
0033 A13C cmp #60
0035 2703 beq L3
0037 CC0181 jmp L6
003A L3:
003A ; Ttime[2]=0; Ttime[1]++; //秒數增加到60,清0,分鐘數加1
003A 3F02 clr *_Ttime+2
003C 3C01 inc *_Ttime+1
003E ; if (Ttime[1]!=60) goto isrTIMER1_exit; //分鐘數未增到60,轉
003E B601 lda *_Ttime+1
0040 A13C cmp #60
0042 2703 beq L9
0044 CC0181 jmp L6
0047 L9:
0047 ; Ttime[1]=0; Ttime[0]++; //分鐘數增加到60,清0,小時數加1
0047 3F01 clr *_Ttime+1
0049 3C00 inc *_Ttime
004B ; if (Ttime[0]!=24) goto isrTIMER1_exit; //小時數未增到24,轉
004B B600 lda *_Ttime
004D A118 cmp #24
004F 2703 beq L13
0051 CC0181 jmp L6
0054 L13:
0054 ; Ttime[0]=0; Tdate[2]++; //時數增加到24,清0
0054 3F00 clr *_Ttime
0056 5504 ldhx *_Tdate+4
0058 AF01 aix #1
005A 3504 sthx *_Tdate+4
005C ; if(Tdate[1]==1||Tdate[1]==3||Tdate[1]==5||Tdate[1]==7||
005C 5502 ldhx *_Tdate+2
005E 650001 cphx #1
0061 95 tsx
0062 2730 beq L30
0064 5502 ldhx *_Tdate+2
0066 650003 cphx #3
0069 95 tsx
006A 2728 beq L30
006C 5502 ldhx *_Tdate+2
006E 650005 cphx #5
0071 95 tsx
0072 2720 beq L30
0074 5502 ldhx *_Tdate+2
0076 650007 cphx #7
0079 95 tsx
007A 2718 beq L30
007C 5502 ldhx *_Tdate+2
007E 650008 cphx #8
0081 95 tsx
0082 2710 beq L30
0084 5502 ldhx *_Tdate+2
0086 65000A cphx #10
0089 95 tsx
008A 2708 beq L30
008C 5502 ldhx *_Tdate+2
008E 65000C cphx #12
0091 95 tsx
0092 2616 bne L16
0094 L30:
0094 ; Tdate[1]==8||Tdate[1]==10||Tdate[1]==12)
0094 ; { if(Tdate[2]<=31) goto isrTIMER1_exit;
0094 5504 ldhx *_Tdate+4
0096 65001F cphx #31
0099 95 tsx
009A 9203 bgt L31
009C CC0181 jmp L6
009F L31:
009F ; Tdate[2]=0;Tdate[1]++;
009F 3F05 clr *_Tdate+4+1
00A1 3F04 clr *_Tdate+4
00A3 5502 ldhx *_Tdate+2
00A5 AF01 aix #1
00A7 3502 sthx *_Tdate+2
00A9 95 tsx
00AA ; }
00AA L16:
00AA ; if(Tdate[1]==2&&(Tdate[0]%4==0&&Tdate[0]%100!=0||Tdate[0]%400==0))
00AA 5502 ldhx *_Tdate+2
00AC 650002 cphx #2
00AF 95 tsx
00B0 2670 bne L36
00B2 B601 lda *_Tdate+1
00B4 B700 sta *__rlo
00B6 B600 lda *_Tdate
00B8 B700 sta *__rhi
00BA A604 lda #4
00BC 87 psha
00BD 4F clra
00BE 87 psha
00BF CD0000 jsr __divmod16s
00C2 86 pula
00C3 B700 sta *__r0
00C5 86 pula
00C6 B700 sta *__r1
00C8 5500 ldhx *__r0
00CA 650000 cphx #0
00CD 95 tsx
00CE 261E bne L40
00D0 B601 lda *_Tdate+1
00D2 B700 sta *__rlo
00D4 B600 lda *_Tdate
00D6 B700 sta *__rhi
00D8 A664 lda #100
00DA 87 psha
00DB 4F clra
00DC 87 psha
00DD CD0000 jsr __divmod16s
00E0 86 pula
00E1 B700 sta *__r0
00E3 86 pula
00E4 B700 sta *__r1
00E6 5500 ldhx *__r0
00E8 650000 cphx #0
00EB 95 tsx
00EC 261F bne L39
00EE L40:
00EE B601 lda *_Tdate+1
00F0 B700 sta *__rlo
00F2 B600 lda *_Tdate
00F4 B700 sta *__rhi
00F6 A690 lda #-112
00F8 87 psha
00F9 A601 lda #1
00FB 87 psha
00FC CD0000 jsr __divmod16s
00FF 86 pula
0100 B700 sta *__r0
0102 86 pula
0103 B700 sta *__r1
0105 5500 ldhx *__r0
0107 650000 cphx #0
010A 95 tsx
010B 2615 bne L36
010D L39:
010D ; { if(Tdate[2]<=29) goto isrTIMER1_exit;
010D 5504 ldhx *_Tdate+4
010F 65001D cphx #29
0112 95 tsx
0113 9202 bgt L41
0115 206A bra L6
0117 L41:
0117 ; Tdate[2]=0;Tdate[1]++;
0117 3F05 clr *_Tdate+4+1
0119 3F04 clr *_Tdate+4
011B 5502 ldhx *_Tdate+2
011D AF01 aix #1
011F 3502 sthx *_Tdate+2
0121 95 tsx
0122 ; }
0122 L36:
0122 ; if(Tdate[1]==2||Tdate[1]==4||Tdate[1]==6||Tdate[1]==9||Tdate[1]==11)
0122 5502 ldhx *_Tdate+2
0124 650002 cphx #2
0127 95 tsx
0128 2720 beq L56
012A 5502 ldhx *_Tdate+2
012C 650004 cphx #4
012F 95 tsx
0130 2718 beq L56
0132 5502 ldhx *_Tdate+2
0134 650006 cphx #6
0137 95 tsx
0138 2710 beq L56
013A 5502 ldhx *_Tdate+2
013C 650009 cphx #9
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -