📄 vectors08.s
字号:
.module vectors08.c
.area text
; j -> 28,X
; i -> 30,X
_isrTIMER1::
pshh
lda *__r0
psha
lda *__r1
psha
lda *__r2
psha
lda *__r3
psha
lda *__rhi
psha
lda *__rlo
psha
ais #-31
tsx
; /*-----------------------------------------------------*
; *文件名:vectors08.c *
; *功 能:用于定义中断矢量表 *
; *-----------------------------------------------------*/
; #include "GP32C.H"
; #include "KB.h"
; #include "TIME.h"
; #include "LCD.h"
; /*[相应寄存器定义]*/
; #define TSTOPBit 5 //定时器计数停止位
; #define TOFBit 7 //定时器溢出标志位
; /*isrTIMER1:定时器溢出中断处理函数---------------------*
; *功 能:给内存单元Time[0-2](时分秒)赋值 *
; *-----------------------------------------------------*/
; unsigned char KB_valve;
; extern unsigned char time[7]; //H M S
; extern unsigned char time1[];
; extern unsigned char val;
; extern unsigned char val1;
; extern unsigned char sign1;
; extern unsigned char sign2;
; #pragma interrupt_handler isrTIMER1
; void isrTIMER1(void)
; {
; unsigned char i;
; unsigned int j;
; val=1;
lda #1
sta *_val
; asm("SEI"); //关总中断
SEI
; //------------------------------
; time[6]++; //秒数加1
inc *_time+6
; if (time[6]!=60) goto isrTIMER1_exit; //秒数未增加到60,转
lda *_time+6
cmp #60
beq L3
jmp L6
L3:
; time[6]=0; time[5]++; //秒数增加到60,清0,分钟数加1
clr *_time+6
inc *_time+5
; if (time[5]!=60) goto isrTIMER1_exit; //分钟数未增到60,转
lda *_time+5
cmp #60
beq L9
jmp L6
L9:
; time[5]=0; time[4]++; //分钟数增加到60,清0,小时数加1
clr *_time+5
inc *_time+4
; if (time[4]!=24) goto isrTIMER1_exit; //小时数未增到24,转
lda *_time+4
cmp #24
beq L14
jmp L6
L14:
; time[4]=0; time[3]++; //时数增加到24,清0
clr *_time+4
inc *_time+3
; i=time[2];
lda *_time+2
sta 30,X
; if((time[2]==1)|(time[2]==3)|(time[2]==5)|(time[2]==7)|(time[2]==8)|(time[2]==10)|(time[2]==12))
lda *_time+2
cmp #1
bne L36
clra
sta 26,X
lda #1
sta 27,X
bra L37
L36:
clr 27,X
clr 26,X
L37:
lda *_time+2
cmp #3
bne L38
clra
sta 24,X
lda #1
sta 25,X
bra L39
L38:
clr 25,X
clr 24,X
L39:
lda *_time+2
cmp #5
bne L40
clra
sta 22,X
lda #1
sta 23,X
bra L41
L40:
clr 23,X
clr 22,X
L41:
lda *_time+2
cmp #7
bne L42
clra
sta 20,X
lda #1
sta 21,X
bra L43
L42:
clr 21,X
clr 20,X
L43:
lda *_time+2
cmp #8
bne L44
clra
sta 18,X
lda #1
sta 19,X
bra L45
L44:
clr 19,X
clr 18,X
L45:
lda *_time+2
cmp #10
bne L46
clra
sta 16,X
lda #1
sta 17,X
bra L47
L46:
clr 17,X
clr 16,X
L47:
lda *_time+2
cmp #12
bne L48
clra
sta 14,X
lda #1
sta 15,X
bra L49
L48:
clr 15,X
clr 14,X
L49:
lda 27,X
ora 25,X
sta *__r1
lda 26,X
ora 24,X
sta *__r0
lda *__r1
ora 23,X
sta *__r1
lda *__r0
ora 22,X
sta *__r0
lda *__r1
ora 21,X
sta *__r1
lda *__r0
ora 20,X
sta *__r0
lda *__r1
ora 19,X
sta *__r1
lda *__r0
ora 18,X
sta *__r0
lda *__r1
ora 17,X
sta *__r1
lda *__r0
ora 16,X
sta *__r0
lda *__r1
ora 15,X
sta *__r1
lda *__r0
ora 14,X
sta *__r0
ldhx *__r0
cphx #0
tsx
beq L20
; {
; if(time[3]!=31) goto isrTIMER1_exit;
lda *_time+3
cmp #31
beq L50
jmp L6
L50:
; time[3]=0; time[2]++;
clr *_time+3
inc *_time+2
; }
jmp L21
L20:
; else if((time[2]==2)|(time[2]==4)|(time[2]==6)|(time[2]==9)|(time[2]==11))
lda *_time+2
cmp #2
bne L67
clra
sta 12,X
lda #1
sta 13,X
bra L68
L67:
clr 13,X
clr 12,X
L68:
lda *_time+2
cmp #4
bne L69
clra
sta 10,X
lda #1
sta 11,X
bra L70
L69:
clr 11,X
clr 10,X
L70:
lda *_time+2
cmp #6
bne L71
clra
sta 8,X
lda #1
sta 9,X
bra L72
L71:
clr 9,X
clr 8,X
L72:
lda *_time+2
cmp #9
bne L73
clra
sta 6,X
lda #1
sta 7,X
bra L74
L73:
clr 7,X
clr 6,X
L74:
lda *_time+2
cmp #11
bne L75
clra
sta 4,X
lda #1
sta 5,X
bra L76
L75:
clr 5,X
clr 4,X
L76:
lda 13,X
ora 11,X
sta *__r1
lda 12,X
ora 10,X
sta *__r0
lda *__r1
ora 9,X
sta *__r1
lda *__r0
ora 8,X
sta *__r0
lda *__r1
ora 7,X
sta *__r1
lda *__r0
ora 6,X
sta *__r0
lda *__r1
ora 5,X
sta *__r1
lda *__r0
ora 4,X
sta *__r0
ldhx *__r0
cphx #0
tsx
beq L55
; {
; if(time[3]!=30) goto isrTIMER1_exit;
lda *_time+3
cmp #30
beq L77
jmp L6
L77:
; time[3]=0; time[2]++;
clr *_time+3
inc *_time+2
; }
jmp L56
L55:
; else
; {
; j=time[0]*100+time[1];
clr *__r0
lda *_time+1
sta *__r1
clr *__r2
lda *_time
sta *__r3
lda #100
psha
clra
psha
lda *__r3
psha
lda *__r2
psha
jsr __mul16
ais #4
mov *__rlo,*__r3
mov *__rhi,*__r2
lda *__r3
add *__r1
sta *__r1
lda *__r2
adc *__r0
sta 28,X
lda *__r1
sta 29,X
; if(((j%4==0)&&(j%100!=0))|(j%400==0))
and #3
sta *__r1
clra
sta *__r0
ldhx *__r0
cphx #0
tsx
bne L87
lda 29,X
sta *__rlo
lda 28,X
sta *__rhi
lda #100
psha
clra
psha
jsr __divmod16u
pula
sta *__r0
pula
sta *__r1
ldhx *__r0
cphx #0
tsx
beq L87
clra
sta 2,X
lda #1
sta 3,X
bra L88
L87:
clr 3,X
clr 2,X
L88:
lda 29,X
sta *__rlo
lda 28,X
sta *__rhi
lda #-112
psha
lda #1
psha
jsr __divmod16u
pula
sta *__r0
pula
sta *__r1
ldhx *__r0
cphx #0
tsx
bne L89
clra
sta ,X
lda #1
sta 1,X
bra L90
L89:
clr 1,X
clr ,X
L90:
lda 3,X
ora 1,X
sta *__r1
lda 2,X
ora ,X
sta *__r0
ldhx *__r0
cphx #0
tsx
beq L83
; {
; if (time[3]!=29) goto isrTIMER1_exit;
lda *_time+3
cmp #29
beq L91
bra L6
L91:
; time[3]=0; time[2]++;
clr *_time+3
inc *_time+2
; }
bra L84
L83:
; else
; {
; if (time[3]!=28) goto isrTIMER1_exit;
lda *_time+3
cmp #28
beq L96
bra L6
L96:
; time[3]=0; time[2]++;
clr *_time+3
inc *_time+2
; }
L84:
; }
L56:
L21:
; /*switch(i)
; {
; case 2:
; j=time[0]*100+time[1];
; if(((j%4==0)&&(j%100!=0))|(j%400==0))
; {
; if (time[3]!=29) goto isrTIMER1_exit;
; time[3]=0;
; time[2]++;
; }
; else
; {
; if (time[3]!=28) goto isrTIMER1_exit;
; time[3]=0;
; time[2]++;
; }
; case 4:case 6:case 9:case 11:
; if(time[3]!=30)
; {
; goto isrTIMER1_exit;
; }
; time[3]=0;
; time[2]++;
; break;
; case 1:case 3:case 5:case 7:case 8:case 10:case 12:
; {
; if(time[3]!=31)
; {
; goto isrTIMER1_exit;
; }
; time[3]=0;
; time[2]++;
; break;
; }
; default: break;
; }
; */
; if (time[2]!=12) goto isrTIMER1_exit;
lda *_time+2
cmp #12
beq L101
bra L6
L101:
; time[2]=0; time[1]++;
clr *_time+2
inc *_time+1
; if (time[1]!=99) goto isrTIMER1_exit;
lda *_time+1
cmp #99
beq L106
bra L6
L106:
; time[1]=0; time[0]++;
clr *_time+1
inc *_time
L6:
; isrTIMER1_exit:
; T1SC&=~(1<<TOFBit);
bclr #7,0x20
; asm("CLI"); //开总中断
CLI
L1:
ais #31
.dbline 0 ; func end
pula
sta *__rlo
pula
sta *__rhi
pula
sta *__r3
pula
sta *__r2
pula
sta *__r1
pula
sta *__r0
pulh
rti
_isrKBI::
pshh
lda *__r0
psha
lda *__r1
psha
lda *__r2
psha
lda *__r3
psha
lda *__r4
psha
lda *__r5
psha
lda *__r6
psha
lda *__r7
psha
lda *__r8
psha
lda *__r9
psha
lda *__r10
psha
lda *__r11
psha
lda *__rhi
psha
lda *__rlo
psha
; }
;
; /*键盘中断处理函数------------------------------------*/
; #pragma interrupt_handler isrKBI
; void isrKBI(void)
; {
;
; asm("SEI"); //关总中断
SEI
; INTKBSCR|= (1<<IntBit); //屏蔽键盘中断(IMASKK=1)
bset #1,0x1a
; //val1=1;
; KB_valve=KB_Scan(); //扫描键值
jsr _KB_Scan
sta *__r1
sta *_KB_valve
; // SCISend1(KB_valve);
; KB_valve=KB_Def(KB_valve); //键值转化为定义值
lda *_KB_valve
psha
jsr _KB_Def
ais #1
tsx
sta *__r1
sta *_KB_valve
; if(KB_valve=='A')
lda *_KB_valve
cmp #65
bne L111
; {
; sign1=1;
lda #1
sta *_sign1
; //SetTime();
; }
L111:
; if(KB_valve=='B')
lda *_KB_valve
cmp #66
bne L113
; {
; //SetAlarmClock();
; sign2=1;
lda #1
sta *_sign2
; }
L113:
;
; KB_Init(); //重新初始化键盘
jsr _KB_Init
tsx
; INTKBSCR&= ~(1<<IntBit); //打开键盘中断(IMASKK=0)
bclr #1,0x1a
; asm("CLI"); //开总中断
CLI
L110:
.dbline 0 ; func end
pula
sta *__rlo
pula
sta *__rhi
pula
sta *__r11
pula
sta *__r10
pula
sta *__r9
pula
sta *__r8
pula
sta *__r7
pula
sta *__r6
pula
sta *__r5
pula
sta *__r4
pula
sta *__r3
pula
sta *__r2
pula
sta *__r1
pula
sta *__r0
pulh
rti
_isrDummy::
pshh
; }
; /*isrRe:接收中断处理函数-------------------------------*
; *功 能:接收3字节基准时分秒放入内存单元Time[0-2] *
; *-----------------------------------------------------*/
; /*#pragma interrupt_handler isrRe
; void isrRe(void)
; {
; asm("SEI"); //禁止所有中断
; //接收数据
; SCIReN(3,time);
; asm("CLI"); //开放总中断
; }
; //未定义的中断处理函数,本函数不能删除*/
; #pragma interrupt_handler isrDummy
; void isrDummy(void)
; {
L115:
.dbline 0 ; func end
pulh
rti
.area memory(abs)
.org 0xffdc
__vectab::
.word _isrDummy
.word _isrDummy
.word _isrKBI
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrTIMER1
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrDummy
.area lit
.area bss
_KB_valve::
.blkb 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -