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

📄 vectors08.lis

📁 这是我自己在做实验设计时做的,用摩托罗拉飞思卡尔做的一个多功能电子钟
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -