📄 vectors08.lis
字号:
.module vectors08.c
.area text
; KB_valve -> 2,X
0000 _isrKBI::
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 A7FD ais #-3
002D 95 tsx
002E ; /*-----------------------------------------------------*
002E ; *文件名:vectors08.c *
002E ; *功 能:用于定义中断矢量表 *
002E ; *-----------------------------------------------------*/
002E ; //[头文件]
002E ; #include "GP32C.H" //包含头文件
002E ; #include "userdefine.h"
002E ; #include "KB.h"
002E ; //未定义的中断处理函数,本函数不能删除
002E ; #define TSTOPBit 5 //定时器计数停止位
002E ; #define TOFBit 7 //定时器溢出标志位
002E ; /*isrTIMER1:定时器溢出中断处理函数---------------------*
002E ; *功 能:给内存单元Time[0-2](时分秒)赋值 *
002E ; *-----------------------------------------------------*/
002E ; extern Time_Struct Time,Alarm; //H M S
002E ; extern void Time_Var2char(Time_Struct);
002E ; extern void lcdshow(unsigned char str[]);
002E ; extern char Is_yunnian(unsigned short int year);
002E ; extern void Alarm_handle(void);
002E ; extern char Select_key_is_pressed_flag,Up_Modify_key_is_pressed_flag,Down_Modify_key_is_pressed_flag;
002E ; extern char Timer_5sec_trigger,Timer_5sec_counter,Alarm_counter;
002E ; extern char Alarm_enable_flag,Alarm_trigger,Minute_second_integral_flag,Integral_counter;
002E ; extern char Time_fresh,Alarm_fresh;
002E ; extern unsigned char LCD_buff[32];
002E ;
002E ; #pragma interrupt_handler isrKBI
002E ; void isrKBI(void)
002E ; {
002E ; unsigned char KB_valve;
002E ; asm("SEI"); //关总中断
002E 9B SEI
002F ; Timer_5sec_trigger=1;
002F A601 lda #1
0031 B700 sta *_Timer_5sec_trigger
0033 ; Timer_5sec_counter=0;
0033 3F00 clr *_Timer_5sec_counter
0035 ; INTKBSCR|= (1<<IntBit); //屏蔽键盘中断(IMASKK=1)
0035 121A bset #1,0x1a
0037 ; KB_valve=KB_Scan(); //扫描键值
0037 CD0000 jsr _KB_Scan
003A 95 tsx
003B B700 sta *__r1
003D E702 sta 2,X
003F ; KB_valve=KB_Def(KB_valve); //键值转化为定义值
003F 87 psha
0040 CD0000 jsr _KB_Def
0043 A701 ais #1
0045 95 tsx
0046 B700 sta *__r1
0048 E702 sta 2,X
004A ; switch(KB_valve)
004A 7F clr ,X
004B E701 sta 1,X
004D F6 lda ,X
004E 2606 bne X0
0050 E601 lda 1,X
0052 A131 cmp #49
0054 271D beq L7
0056 X0:
0056 F6 lda ,X
0057 2606 bne X1
0059 E601 lda 1,X
005B A132 cmp #50
005D 2718 beq L8
005F X1:
005F F6 lda ,X
0060 2606 bne X2
0062 E601 lda 1,X
0064 A133 cmp #51
0066 2713 beq L9
0068 X2:
0068 F6 lda ,X
0069 2606 bne X3
006B E601 lda 1,X
006D A134 cmp #52
006F 270E beq L10
0071 X3:
0071 2010 bra L5
0073 X4:
0073 ; {
0073 L7:
0073 ; case '1':Select_key_is_pressed_flag++;break;
0073 3C00 inc *_Select_key_is_pressed_flag
0075 200C bra L5
0077 L8:
0077 ; case '2':Up_Modify_key_is_pressed_flag++;break;
0077 3C00 inc *_Up_Modify_key_is_pressed_flag
0079 2008 bra L5
007B L9:
007B ; case '3':Down_Modify_key_is_pressed_flag++;break;
007B 3C00 inc *_Down_Modify_key_is_pressed_flag
007D 2004 bra L5
007F L10:
007F ; case '4':Alarm_handle();break;
007F CD0000 jsr _Alarm_handle
0082 95 tsx
0083 ; default: ;break;
0083 L5:
0083 ; }
0083 ; KB_Init(); //重新初始化键盘
0083 CD0000 jsr _KB_Init
0086 95 tsx
0087 ; INTKBSCR&= ~(1<<IntBit); //打开键盘中断(IMASKK=0)
0087 131A bclr #1,0x1a
0089 ; asm("CLI"); //开总中断
0089 9A CLI
008A L3:
008A A703 ais #3
008C .dbline 0 ; func end
008C 86 pula
008D B700 sta *__rlo
008F 86 pula
0090 B700 sta *__rhi
0092 86 pula
0093 B700 sta *__r11
0095 86 pula
0096 B700 sta *__r10
0098 86 pula
0099 B700 sta *__r9
009B 86 pula
009C B700 sta *__r8
009E 86 pula
009F B700 sta *__r7
00A1 86 pula
00A2 B700 sta *__r6
00A4 86 pula
00A5 B700 sta *__r5
00A7 86 pula
00A8 B700 sta *__r4
00AA 86 pula
00AB B700 sta *__r3
00AD 86 pula
00AE B700 sta *__r2
00B0 86 pula
00B1 B700 sta *__r1
00B3 86 pula
00B4 B700 sta *__r0
00B6 8A pulh
00B7 80 rti
00B8 ; tmp -> 0,X
00B8 ; i -> 1,X
00B8 _isrTIMER1::
00B8 8B pshh
00B9 B600 lda *__r0
00BB 87 psha
00BC B600 lda *__r1
00BE 87 psha
00BF B600 lda *__r2
00C1 87 psha
00C2 B600 lda *__r3
00C4 87 psha
00C5 B600 lda *__r4
00C7 87 psha
00C8 B600 lda *__r5
00CA 87 psha
00CB B600 lda *__r6
00CD 87 psha
00CE B600 lda *__r7
00D0 87 psha
00D1 B600 lda *__r8
00D3 87 psha
00D4 B600 lda *__r9
00D6 87 psha
00D7 B600 lda *__r10
00D9 87 psha
00DA B600 lda *__r11
00DC 87 psha
00DD B600 lda *__rhi
00DF 87 psha
00E0 B600 lda *__rlo
00E2 87 psha
00E3 A7FE ais #-2
00E5 95 tsx
00E6 ; }
00E6 ;
00E6 ;
00E6 ;
00E6 ; #pragma interrupt_handler isrTIMER1
00E6 ; void isrTIMER1(void)
00E6 ; {
00E6 ; unsigned char i,tmp;
00E6 ; asm("SEI"); //关总中断
00E6 9B SEI
00E7 ; //------------------------------
00E7 ; Time.sec++;
00E7 3C06 inc *_Time+6
00E9 ; if(Time.sec!=60) goto isrTIMER1_exit;
00E9 B606 lda *_Time+6
00EB A13C cmp #60
00ED 2703 beq L13
00EF CC029E jmp L16
00F2 L13:
00F2 ; Time.sec=0;
00F2 3F06 clr *_Time+6
00F4 ; Time.min++;
00F4 3C05 inc *_Time+5
00F6 ; if(Time.min!=60) goto isrTIMER1_exit;
00F6 B605 lda *_Time+5
00F8 A13C cmp #60
00FA 2703 beq L19
00FC CC029E jmp L16
00FF L19:
00FF ; Time.min=0;
00FF 3F05 clr *_Time+5
0101 ; Time.hour++;
0101 3C04 inc *_Time+4
0103 ; if(Time.hour!=24) goto isrTIMER1_exit;
0103 B604 lda *_Time+4
0105 A118 cmp #24
0107 2703 beq L24
0109 CC029E jmp L16
010C L24:
010C ; Time.hour=0;
010C 3F04 clr *_Time+4
010E ; Time.day++;
010E 3C03 inc *_Time+3
0110 ; if(!Is_yunnian(Time.year)) //如果不是闰年
0110 5500 ldhx *_Time
0112 89 pshx
0113 8B pshh
0114 CD0000 jsr _Is_yunnian
0117 A702 ais #2
0119 95 tsx
011A B700 sta *__r1
011C 2703 beq X5
011E CC01E4 jmp L29
0121 X5:
0121 ; {
0121 ; if((Time.month!=2)&&(Time.month==1)||(Time.month==3)||(Time.month==5)||(Time.month==7)||(Time.month==8)||(Time.month==10||(Time.month==12)))
0121 B602 lda *_Time+2
0123 A102 cmp #2
0125 2706 beq L42
0127 B602 lda *_Time+2
0129 A101 cmp #1
012B 2724 beq L47
012D L42:
012D B602 lda *_Time+2
012F A103 cmp #3
0131 271E beq L47
0133 B602 lda *_Time+2
0135 A105 cmp #5
0137 2718 beq L47
0139 B602 lda *_Time+2
013B A107 cmp #7
013D 2712 beq L47
013F B602 lda *_Time+2
0141 A108 cmp #8
0143 270C beq L47
0145 B602 lda *_Time+2
0147 A10A cmp #10
0149 2706 beq L47
014B B602 lda *_Time+2
014D A10C cmp #12
014F 2627 bne L31
0151 L47:
0151 ; {
0151 ; if(Time.day!=31) goto isrTIMER1_exit;
0151 B603 lda *_Time+3
0153 A11F cmp #31
0155 2703 beq L48
0157 CC029E jmp L16
015A L48:
015A ; Time.day=0;
015A 3F03 clr *_Time+3
015C ; Time.month++;
015C 3C02 inc *_Time+2
015E ; if(Time.month!=12) goto isrTIMER1_exit;
015E B602 lda *_Time+2
0160 A10C cmp #12
0162 2703 beq L53
0164 CC029E jmp L16
0167 L53:
0167 ; Time.month=0;
0167 3F02 clr *_Time+2
0169 ; Time.year++;
0169 B601 lda *_Time+1
016B AB01 add #1
016D B701 sta *_Time+1
016F B600 lda *_Time
0171 A900 adc #0
0173 B700 sta *_Time
0175 ; }
0175 CC029E jmp L30
0178 L31:
0178 ; else if((Time.month!=2)&&(Time.month==4)||(Time.month==6)||(Time.month==9)||(Time.month==11))
0178 B602 lda *_Time+2
017A A102 cmp #2
017C 2706 beq L65
017E B602 lda *_Time+2
0180 A104 cmp #4
0182 2712 beq L67
0184 L65:
0184 B602 lda *_Time+2
0186 A106 cmp #6
0188 270C beq L67
018A B602 lda *_Time+2
018C A109 cmp #9
018E 2706 beq L67
0190 B602 lda *_Time+2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -