⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vectors08.lis

📁 基于HC908GP32的时钟程序
💻 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 "KB.h" 
 0004           ; 
 0004           ; /*[相应寄存器定义]*/
 0004           ; #define TSTOPBit   5        //定时器计数停止位
 0004           ; #define TOFBit     7        //定时器溢出标志位
 0004           ; //外部变量
 0004           ; extern unsigned char time[14];      //H M S
 0004           ; extern unsigned char Key;
 0004           ; /*isrTIMER1:定时器溢出中断处理函数---------------------*
 0004           ; *功  能:给内存单元Time[0-2](时分秒)赋值                *
 0004           ; *-----------------------------------------------------*/
 0004           ; 
 0004           ; #pragma interrupt_handler isrTIMER1
 0004           ; void isrTIMER1(void)
 0004           ; {
 0004           ;    unsigned char i;
 0004           ;    asm("SEI");            //关总中断
 0004 9B                SEI
 0005           ;    //------------------------------
 0005           ;    time[13]++;             //秒数加1
 0005 3C0D              inc *_time+13
 0007           ;    if (time[13]!=10) goto isrTIMER1_exit; //秒数未增加到60,转
 0007 B60D              lda *_time+13
 0009 A10A              cmp #10
 000B 2703              beq L3
 000D CC00B2            jmp L6
 0010           L3:
 0010           ;    time[13]=0; time[12]++;  //秒数增加到60,清0,分钟数加1
 0010 3F0D              clr *_time+13
 0012 3C0C              inc *_time+12
 0014           ;    if (time[12]!=6) goto isrTIMER1_exit; //分钟数未增到60,转
 0014 B60C              lda *_time+12
 0016 A106              cmp #6
 0018 2703              beq L9
 001A CC00B2            jmp L6
 001D           L9:
 001D           ;    time[12]=0; time[11]++;  //分钟数增加到60,清0,小时数加1
 001D 3F0C              clr *_time+12
 001F 3C0B              inc *_time+11
 0021           ;    if (time[11]!=10) goto isrTIMER1_exit; //小时数未增到24,转
 0021 B60B              lda *_time+11
 0023 A10A              cmp #10
 0025 2703              beq L14
 0027 CC00B2            jmp L6
 002A           L14:
 002A           ;    time[11]=0; time[10]++;            //时数增加到24,清0
 002A 3F0B              clr *_time+11
 002C 3C0A              inc *_time+10
 002E           ;    if(time[10]!=6) goto isrTIMER1_exit;
 002E B60A              lda *_time+10
 0030 A106              cmp #6
 0032 2703              beq L19
 0034 CC00B2            jmp L6
 0037           L19:
 0037           ;    time[10]=0;time[9]++;
 0037 3F0A              clr *_time+10
 0039 3C09              inc *_time+9
 003B           ;    if(time[9]!=10) goto isrTIMER1_exit;
 003B B609              lda *_time+9
 003D A10A              cmp #10
 003F 2703              beq L24
 0041 CC00B2            jmp L6
 0044           L24:
 0044           ;    time[9]=0;time[8]++;
 0044 3F09              clr *_time+9
 0046 3C08              inc *_time+8
 0048           ;    if(time[8]!=3) goto isrTIMER1_exit;
 0048 B608              lda *_time+8
 004A A103              cmp #3
 004C 2702              beq L29
 004E 2062              bra L6
 0050           L29:
 0050           ;    time[8]=0;time[7]++;
 0050 3F08              clr *_time+8
 0052 3C07              inc *_time+7
 0054           ;    if(time[7]!=10) goto isrTIMER1_exit;
 0054 B607              lda *_time+7
 0056 A10A              cmp #10
 0058 2702              beq L34
 005A 2056              bra L6
 005C           L34:
 005C           ;    time[7]=0;time[6]++;
 005C 3F07              clr *_time+7
 005E 3C06              inc *_time+6
 0060           ;    if(time[6]!=3) goto isrTIMER1_exit;
 0060 B606              lda *_time+6
 0062 A103              cmp #3
 0064 2702              beq L39
 0066 204A              bra L6
 0068           L39:
 0068           ;    time[6]=0;time[5]++;
 0068 3F06              clr *_time+6
 006A 3C05              inc *_time+5
 006C           ;    if(time[5]!=10) goto isrTIMER1_exit;
 006C B605              lda *_time+5
 006E A10A              cmp #10
 0070 2702              beq L44
 0072 203E              bra L6
 0074           L44:
 0074           ;    time[5]=0;time[4]++;
 0074 3F05              clr *_time+5
 0076 3C04              inc *_time+4
 0078           ;    if(time[4]!=2) goto isrTIMER1_exit;
 0078 B604              lda *_time+4
 007A A102              cmp #2
 007C 2702              beq L49
 007E 2032              bra L6
 0080           L49:
 0080           ;    time[4]=0;time[3]++;
 0080 3F04              clr *_time+4
 0082 3C03              inc *_time+3
 0084           ;    if(time[3]!=10) goto isrTIMER1_exit;
 0084 B603              lda *_time+3
 0086 A10A              cmp #10
 0088 2702              beq L54
 008A 2026              bra L6
 008C           L54:
 008C           ;    time[3]=0;time[2]++;
 008C 3F03              clr *_time+3
 008E 3C02              inc *_time+2
 0090           ;    if(time[2]!=10) goto isrTIMER1_exit;
 0090 B602              lda *_time+2
 0092 A10A              cmp #10
 0094 2702              beq L59
 0096 201A              bra L6
 0098           L59:
 0098           ;    time[2]=0;time[1]++;
 0098 3F02              clr *_time+2
 009A 3C01              inc *_time+1
 009C           ;    if(time[1]!=10) goto isrTIMER1_exit;
 009C B601              lda *_time+1
 009E A10A              cmp #10
 00A0 2702              beq L64
 00A2 200E              bra L6
 00A4           L64:
 00A4           ;    time[1]=0;time[0]++;
 00A4 3F01              clr *_time+1
 00A6 3C00              inc *_time
 00A8           ;    if(time[0]!=10) goto isrTIMER1_exit;
 00A8 B600              lda *_time
 00AA A10A              cmp #10
 00AC 2702              beq L68
 00AE 2002              bra L6
 00B0           L68:
 00B0           ;    time[0]=0;
 00B0 3F00              clr *_time
 00B2           L6:
 00B2           ;    isrTIMER1_exit:	 
 00B2           ;    //------------------------------
 00B2           ;    //清除定时器溢出标志位
 00B2           ;    T1SC&=~(1<<TOFBit);
 00B2 1F20              bclr #7,0x20
 00B4           ;    asm("CLI");            //开总中断
 00B4 9A                CLI
 00B5           L1:
 00B5 A701              ais #1
 00B7                   .dbline 0 ; func end
 00B7 8A                pulh
 00B8 80                rti
 00B9           ;       KB_valve -> 0,X
 00B9           _isrKBI::
 00B9 8B                pshh
 00BA B600              lda *__r0
 00BC 87                psha
 00BD B600              lda *__r1
 00BF 87                psha
 00C0 B600              lda *__r2
 00C2 87                psha
 00C3 B600              lda *__r3
 00C5 87                psha
 00C6 B600              lda *__r4
 00C8 87                psha
 00C9 B600              lda *__r5
 00CB 87                psha
 00CC B600              lda *__r6
 00CE 87                psha
 00CF B600              lda *__r7
 00D1 87                psha
 00D2 B600              lda *__r8
 00D4 87                psha
 00D5 B600              lda *__r9
 00D7 87                psha
 00D8 B600              lda *__r10
 00DA 87                psha
 00DB B600              lda *__r11
 00DD 87                psha
 00DE B600              lda *__rhi
 00E0 87                psha
 00E1 B600              lda *__rlo
 00E3 87                psha
 00E4 A7FF              ais #-1
 00E6 95                tsx
 00E7           ; }
 00E7           ; /*键盘中断处理函数------------------------------------*/
 00E7           ; #pragma interrupt_handler isrKBI
 00E7           ; void isrKBI(void) 
 00E7           ; {
 00E7           ;        unsigned char KB_valve;
 00E7           ;        asm("SEI");                    //关总中断
 00E7 9B                SEI
 00E8           ;        INTKBSCR|= (1<<IntBit); //屏蔽键盘中断(IMASKK=1)
 00E8 121A              bset #1,0x1a
 00EA           ;        KB_valve=KB_Scan();     //扫描键值
 00EA CD0000            jsr _KB_Scan
 00ED 95                tsx
 00EE B700              sta *__r1
 00F0 F7                sta ,X
 00F1           ;        Key=KB_Def(KB_valve);           //获得键定义值
 00F1 87                psha
 00F2 CD0000            jsr _KB_Def
 00F5 A701              ais #1
 00F7 B700              sta *__r1
 00F9 B700              sta *_Key
 00FB           ;        KB_Init();                          //重新初始化键盘
 00FB CD0000            jsr _KB_Init
 00FE 95                tsx
 00FF           ;        INTKBSCR&= ~(1<<IntBit); //打开键盘中断(IMASKK=0)
 00FF 131A              bclr #1,0x1a
 0101           ;        asm("CLI");                         //开总中断
 0101 9A                CLI
 0102           L70:
 0102 A701              ais #1
 0104                   .dbline 0 ; func end
 0104 86                pula
 0105 B700              sta *__rlo
 0107 86                pula
 0108 B700              sta *__rhi
 010A 86                pula
 010B B700              sta *__r11
 010D 86                pula
 010E B700              sta *__r10
 0110 86                pula
 0111 B700              sta *__r9
 0113 86                pula
 0114 B700              sta *__r8
 0116 86                pula
 0117 B700              sta *__r7
 0119 86                pula
 011A B700              sta *__r6
 011C 86                pula
 011D B700              sta *__r5
 011F 86                pula
 0120 B700              sta *__r4
 0122 86                pula
 0123 B700              sta *__r3
 0125 86                pula
 0126 B700              sta *__r2
 0128 86                pula
 0129 B700              sta *__r1
 012B 86                pula
 012C B700              sta *__r0
 012E 8A                pulh
 012F 80                rti
 0130           _isrDummy::
 0130 8B                pshh
 0131           ; }
 0131           ; 
 0131           ; //未定义的中断处理函数,本函数不能删除
 0131           ; #pragma interrupt_handler isrDummy  
 0131           ; void isrDummy(void) 
 0131           ; {
 0131           L71:
 0131                   .dbline 0 ; func end
 0131 8A                pulh
 0132 80                rti
                        .area memory(abs)
                        .org 0xffdc
 FFDC           __vectab::
 FFDC 0130              .word _isrDummy
 FFDE 0130              .word _isrDummy
 FFE0 00B9              .word _isrKBI
 FFE2 0130              .word _isrDummy
 FFE4 0130              .word _isrDummy
 FFE6 0130              .word _isrDummy
 FFE8 0130              .word _isrDummy
 FFEA 0130              .word _isrDummy
 FFEC 0130              .word _isrDummy
 FFEE 0130              .word _isrDummy
 FFF0 0130              .word _isrDummy
 FFF2 0000              .word _isrTIMER1
 FFF4 0130              .word _isrDummy
 FFF6 0130              .word _isrDummy
 FFF8 0130              .word _isrDummy
 FFFA 0130              .word _isrDummy
 FFFC 0130              .word _isrDummy
                        .area lit

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -