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

📄 vectors08.lis

📁 可以显示年月日,时间等,也可以设置闹钟,设定时间
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module vectors08.c
                        .area data
 0000           _flat::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data
 0001           _f1::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data
 0002           _f2::
 0002                   .blkb 1
                        .area idata
 0002 00                .byte 0
                        .area data
                        .area text
                ;           days -> 2,X
                ;          month -> 7,X
                ;           year -> 5,X
 0000           _getmonthdays::
 0000 A7FD              ais #-3
 0002 95                tsx
 0003           ; /*-----------------------------------------------------*
 0003           ; *文件名:vectors08.c                                    *
 0003           ; *功  能:用于定义中断矢量表                             *
 0003           ; *-----------------------------------------------------*/
 0003           ; #include "GP32C.H"
 0003           ; #include "SCI.h"            //串行通信头文件
 0003           ; #include "KB.h" 
 0003           ; /*[相应寄存器定义]*/
 0003           ; #define TSTOPBit   5        //定时器计数停止位
 0003           ; #define TOFBit     7        //定时器溢出标志位
 0003           ; /*isrTIMER1:定时器溢出中断处理函数---------------------*
 0003           ; *功  能:给内存单元Time[0-2](时分秒)赋值                *
 0003           ; *-----------------------------------------------------*/
 0003           ; extern unsigned char time[3], naozhong,KB_valve;     //H M S
 0003           ; extern unsigned int data[3];
 0003           ; extern unsigned char alart[2];
 0003           ; unsigned char flat=0,f1=0,f2=0;
 0003           ; unsigned char getmonthdays(unsigned int year,unsigned char month)/*得到某月的天数*/
 0003           ; {
 0003           ;  unsigned char days;
 0003           ;  switch (month)
 0003 7F                clr ,X
 0004 E607              lda 7,X
 0006 E701              sta 1,X
 0008 F6                lda ,X
 0009 2606              bne X0
 000B E601              lda 1,X
 000D A102              cmp #2
 000F 272C              beq L6
 0011           X0:
 0011 F6                lda ,X
 0012 2606              bne X1
 0014 E601              lda 1,X
 0016 A104              cmp #4
 0018 271D              beq L5
 001A           X1:
 001A F6                lda ,X
 001B 2606              bne X2
 001D E601              lda 1,X
 001F A106              cmp #6
 0021 2714              beq L5
 0023           X2:
 0023 F6                lda ,X
 0024 2606              bne X3
 0026 E601              lda 1,X
 0028 A109              cmp #9
 002A 270B              beq L5
 002C           X3:
 002C F6                lda ,X
 002D 2606              bne X4
 002F E601              lda 1,X
 0031 A10B              cmp #11
 0033 2702              beq L5
 0035           X4:
 0035 2060              bra L2
 0037           X5:
 0037           ;  {
 0037           L5:
 0037           ;   case 4:
 0037           ;   case 6:
 0037           ;   case 9:
 0037           ;   case 11:days=30;
 0037 A61E              lda #30
 0039 E702              sta 2,X
 003B           ;           break;
 003B 205E              bra L3
 003D           L6:
 003D           ;   case 2: if((year%4==0&&year%100!=0)||(year%400==0))  days=29;
 003D E606              lda 6,X
 003F A403              and #3
 0041 B700              sta *__r1
 0043 4F                clra
 0044 B700              sta *__r0
 0046 5500              ldhx *__r0
 0048 650000            cphx #0
 004B 95                tsx
 004C 261E              bne L10
 004E E606              lda 6,X
 0050 B700              sta *__rlo
 0052 E605              lda 5,X
 0054 B700              sta *__rhi
 0056 A664              lda #100
 0058 87                psha
 0059 4F                clra
 005A 87                psha
 005B CD0000            jsr __divmod16u
 005E 86                pula
 005F B700              sta *__r0
 0061 86                pula
 0062 B700              sta *__r1
 0064 5500              ldhx *__r0
 0066 650000            cphx #0
 0069 95                tsx
 006A 261F              bne L9
 006C           L10:
 006C E606              lda 6,X
 006E B700              sta *__rlo
 0070 E605              lda 5,X
 0072 B700              sta *__rhi
 0074 A690              lda #-112
 0076 87                psha
 0077 A601              lda #1
 0079 87                psha
 007A CD0000            jsr __divmod16u
 007D 86                pula
 007E B700              sta *__r0
 0080 86                pula
 0081 B700              sta *__r1
 0083 5500              ldhx *__r0
 0085 650000            cphx #0
 0088 95                tsx
 0089 2606              bne L7
 008B           L9:
 008B A61D              lda #29
 008D E702              sta 2,X
 008F 200A              bra L3
 0091           L7:
 0091           ;    else days=28;
 0091 A61C              lda #28
 0093 E702              sta 2,X
 0095           ;           break;
 0095 2004              bra L3
 0097           L2:
 0097           ;   default:days=31;
 0097 A61F              lda #31
 0099 E702              sta 2,X
 009B           ;           break;
 009B           L3:
 009B           ;  }
 009B           ;  return days;
 009B E602              lda 2,X
 009D           L1:
 009D A703              ais #3
 009F                   .dbline 0 ; func end
 009F 81                rts
 00A0           ;              i -> 0,X
 00A0           _isrTIMER1::
 00A0 8B                pshh
 00A1 B600              lda *__r0
 00A3 87                psha
 00A4 B600              lda *__r1
 00A6 87                psha
 00A7 B600              lda *__r2
 00A9 87                psha
 00AA B600              lda *__r3
 00AC 87                psha
 00AD B600              lda *__r4
 00AF 87                psha
 00B0 B600              lda *__r5
 00B2 87                psha
 00B3 B600              lda *__r6
 00B5 87                psha
 00B6 B600              lda *__r7
 00B8 87                psha
 00B9 B600              lda *__r8
 00BB 87                psha
 00BC B600              lda *__r9
 00BE 87                psha
 00BF B600              lda *__r10
 00C1 87                psha
 00C2 B600              lda *__r11
 00C4 87                psha
 00C5 B600              lda *__rhi
 00C7 87                psha
 00C8 B600              lda *__rlo
 00CA 87                psha
 00CB A7FF              ais #-1
 00CD 95                tsx
 00CE           ; }
 00CE           ; #pragma interrupt_handler isrTIMER1
 00CE           ; void isrTIMER1(void)
 00CE           ; {  
 00CE           ;    unsigned char i;
 00CE           ;    asm("SEI");            //关总中断
 00CE 9B                SEI
 00CF           ;    //------------------------------
 00CF           ;    if(((time[0]==0)&&(time[1]==0))||((time[1]==alart[0])&&(time[2]==alart[0])))naozhong=1;
 00CF B600              lda *_time
 00D1 2604              bne L18
 00D3 B601              lda *_time+1
 00D5 270C              beq L17
 00D7           L18:
 00D7 B601              lda *_time+1
 00D9 B100              cmp *_alart
 00DB 260A              bne L12
 00DD B602              lda *_time+2
 00DF B100              cmp *_alart
 00E1 2604              bne L12
 00E3           L17:
 00E3 A601              lda #1
 00E5 B700              sta *_naozhong
 00E7           L12:
 00E7           ;    time[0]++;             //秒数加1
 00E7 3C00              inc *_time
 00E9           ;    if (time[0]!=60) goto isrTIMER1_exit; //秒数未增加到60,转
 00E9 B600              lda *_time
 00EB A13C              cmp #60
 00ED 2702              beq L19
 00EF 2069              bra L21
 00F1           L19:
 00F1           ;    time[0]=0; time[1]++;  //秒数增加到60,清0,分钟数加1
 00F1 3F00              clr *_time
 00F3 3C01              inc *_time+1
 00F5           ;    if (time[1]!=60) goto isrTIMER1_exit; //分钟数未增到60,转
 00F5 B601              lda *_time+1
 00F7 A13C              cmp #60
 00F9 2702              beq L23
 00FB 205D              bra L21
 00FD           L23:
 00FD           ;    time[1]=0; time[2]++;  //分钟数增加到60,清0,小时数加1
 00FD 3F01              clr *_time+1
 00FF 3C02              inc *_time+2
 0101           ;    if (time[2]!=24) goto isrTIMER1_exit; //小时数未增到24,转
 0101 B602              lda *_time+2
 0103 A118              cmp #24
 0105 2702              beq L28
 0107 2051              bra L21
 0109           L28:
 0109           ;    time[2]=0; data[0]++;           //时数增加到24,清0,日期增1
 0109 3F02              clr *_time+2
 010B B601              lda *_data+1
 010D AB01              add #1
 010F B701              sta *_data+1
 0111 B600              lda *_data
 0113 A900              adc #0
 0115 B700              sta *_data
 0117           ;    if(data[0]!=getmonthdays(data[2],data[1])) goto isrTIMER1_exit; //天数数未增到月尾值,转
 0117 B603              lda *_data+2+1
 0119 87                psha
 011A 5504              ldhx *_data+4
 011C 89                pshx
 011D 8B                pshh
 011E CD0000            jsr _getmonthdays
 0121 A703              ais #3
 0123 B700              sta *__r1
 0125 3F00              clr *__r0
 0127 5500              ldhx *_data
 0129 7500              cphx *__r0
 012B 95                tsx
 012C 2702              beq L32
 012E 202A              bra L21
 0130           L32:
 0130           ;    data[0]=0;data[1]++;                //天数增加到月尾值,清0,月数加1
 0130 3F01              clr *_data+1
 0132 3F00              clr *_data
 0134 B603              lda *_data+2+1
 0136 AB01              add #1
 0138 B703              sta *_data+2+1

⌨️ 快捷键说明

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