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

📄 vectors08.lis

📁 摩托罗拉单片机的定时器溢出中断的原代码
💻 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 "SCI.h"            //串行通信头文件
 0004           ; /*[相应寄存器定义]*/
 0004           ; #define TSTOPBit   5        //定时器计数停止位
 0004           ; #define TOFBit     7        //定时器溢出标志位
 0004           ; /*isrTIMER1:定时器溢出中断处理函数---------------------*
 0004           ; *功  能:给内存单元Time[0-2](时分秒)赋值                *
 0004           ; *-----------------------------------------------------*/
 0004           ; extern unsigned char time[3];      //H M S
 0004           ; #pragma interrupt_handler isrTIMER1
 0004           ; void isrTIMER1(void)
 0004           ; {
 0004           ;    unsigned char i;
 0004           ;    asm("SEI");            //关总中断
 0004 9B                SEI
 0005           ;    //------------------------------
 0005           ;    time[2]++;             //秒数加1
 0005 3C02              inc *_time+2
 0007           ;    if (time[2]!=60) goto isrTIMER1_exit; //秒数未增加到60,转
 0007 B602              lda *_time+2
 0009 A13C              cmp #60
 000B 2702              beq L3
 000D 201A              bra L6
 000F           L3:
 000F           ;    time[2]=0; time[1]++;  //秒数增加到60,清0,分钟数加1
 000F 3F02              clr *_time+2
 0011 3C01              inc *_time+1
 0013           ;    if (time[1]!=60) goto isrTIMER1_exit; //分钟数未增到60,转
 0013 B601              lda *_time+1
 0015 A13C              cmp #60
 0017 2702              beq L9
 0019 200E              bra L6
 001B           L9:
 001B           ;    time[1]=0; time[0]++;  //分钟数增加到60,清0,小时数加1
 001B 3F01              clr *_time+1
 001D 3C00              inc *_time
 001F           ;    if (time[0]!=24) goto isrTIMER1_exit; //小时数未增到24,转
 001F B600              lda *_time
 0021 A118              cmp #24
 0023 2702              beq L13
 0025 2002              bra L6
 0027           L13:
 0027           ;    time[0]=0;             //时数增加到24,清0
 0027 3F00              clr *_time
 0029           L6:
 0029           ;    isrTIMER1_exit:	 
 0029           ;    //------------------------------
 0029           ;    //清除定时器溢出标志位
 0029           ;    T1SC&=~(1<<TOFBit);
 0029 1F20              bclr #7,0x20
 002B           ;    asm("CLI");            //开总中断
 002B 9A                CLI
 002C           L1:
 002C A701              ais #1
 002E                   .dbline 0 ; func end
 002E 8A                pulh
 002F 80                rti
 0030           _isrRe::
 0030 8B                pshh
 0031 B600              lda *__r0
 0033 87                psha
 0034 B600              lda *__r1
 0036 87                psha
 0037 B600              lda *__r2
 0039 87                psha
 003A B600              lda *__r3
 003C 87                psha
 003D B600              lda *__r4
 003F 87                psha
 0040 B600              lda *__r5
 0042 87                psha
 0043 B600              lda *__r6
 0045 87                psha
 0046 B600              lda *__r7
 0048 87                psha
 0049 B600              lda *__r8
 004B 87                psha
 004C B600              lda *__r9
 004E 87                psha
 004F B600              lda *__r10
 0051 87                psha
 0052 B600              lda *__r11
 0054 87                psha
 0055 B600              lda *__rhi
 0057 87                psha
 0058 B600              lda *__rlo
 005A 87                psha
 005B           ; }
 005B           ; /*isrRe:接收中断处理函数-------------------------------*
 005B           ; *功  能:接收3字节基准时分秒放入内存单元Time[0-2]       *
 005B           ; *-----------------------------------------------------*/
 005B           ; #pragma interrupt_handler isrRe  
 005B           ; void isrRe(void) 
 005B           ;   {
 005B           ;       asm("SEI");            //禁止所有中断
 005B 9B                SEI
 005C           ;         //接收数据
 005C           ;         SCIReN(3,time);
 005C 450000            ldhx #_time
 005F 89                pshx
 0060 8B                pshh
 0061 A603              lda #3
 0063 87                psha
 0064 CD0000            jsr _SCIReN
 0067 A703              ais #3
 0069 95                tsx
 006A           ;         asm("CLI");        //开放总中断       
 006A 9A                CLI
 006B           L15:
 006B                   .dbline 0 ; func end
 006B 86                pula
 006C B700              sta *__rlo
 006E 86                pula
 006F B700              sta *__rhi
 0071 86                pula
 0072 B700              sta *__r11
 0074 86                pula
 0075 B700              sta *__r10
 0077 86                pula
 0078 B700              sta *__r9
 007A 86                pula
 007B B700              sta *__r8
 007D 86                pula
 007E B700              sta *__r7
 0080 86                pula
 0081 B700              sta *__r6
 0083 86                pula
 0084 B700              sta *__r5
 0086 86                pula
 0087 B700              sta *__r4
 0089 86                pula
 008A B700              sta *__r3
 008C 86                pula
 008D B700              sta *__r2
 008F 86                pula
 0090 B700              sta *__r1
 0092 86                pula
 0093 B700              sta *__r0
 0095 8A                pulh
 0096 80                rti
 0097           _isrDummy::
 0097 8B                pshh
 0098           ;   }
 0098           ; //未定义的中断处理函数,本函数不能删除
 0098           ; #pragma interrupt_handler isrDummy  
 0098           ; void isrDummy(void) 
 0098           ; {
 0098           L16:
 0098                   .dbline 0 ; func end
 0098 8A                pulh
 0099 80                rti
                        .area memory(abs)
                        .org 0xffdc
 FFDC           __vectab::
 FFDC 0097              .word _isrDummy
 FFDE 0097              .word _isrDummy
 FFE0 0097              .word _isrDummy
 FFE2 0097              .word _isrDummy
 FFE4 0030              .word _isrRe
 FFE6 0097              .word _isrDummy
 FFE8 0097              .word _isrDummy
 FFEA 0097              .word _isrDummy
 FFEC 0097              .word _isrDummy
 FFEE 0097              .word _isrDummy
 FFF0 0097              .word _isrDummy
 FFF2 0000              .word _isrTIMER1
 FFF4 0097              .word _isrDummy
 FFF6 0097              .word _isrDummy
 FFF8 0097              .word _isrDummy
 FFFA 0097              .word _isrDummy
 FFFC 0097              .word _isrDummy
                        .area lit

⌨️ 快捷键说明

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