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

📄 vectors08.lis

📁 摩托罗拉的时钟的原代码
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -