📄 vectors08.s
字号:
.module vectors08.c
.area text
; i -> 0,X
_isrTIMER1::
pshh
ais #-1
tsx
; /*-----------------------------------------------------*
; *文件名:vectors08.c *
; *功 能:用于定义中断矢量表 *
; *-----------------------------------------------------*/
; #include "GP32C.H"
; #include "KB.h"
;
; /*[相应寄存器定义]*/
; #define TSTOPBit 5 //定时器计数停止位
; #define TOFBit 7 //定时器溢出标志位
; //外部变量
; extern unsigned char time[14]; //H M S
; extern unsigned char Key;
; /*isrTIMER1:定时器溢出中断处理函数---------------------*
; *功 能:给内存单元Time[0-2](时分秒)赋值 *
; *-----------------------------------------------------*/
;
; #pragma interrupt_handler isrTIMER1
; void isrTIMER1(void)
; {
; unsigned char i;
; asm("SEI"); //关总中断
SEI
; //------------------------------
; time[13]++; //秒数加1
inc *_time+13
; if (time[13]!=10) goto isrTIMER1_exit; //秒数未增加到60,转
lda *_time+13
cmp #10
beq L3
jmp L6
L3:
; time[13]=0; time[12]++; //秒数增加到60,清0,分钟数加1
clr *_time+13
inc *_time+12
; if (time[12]!=6) goto isrTIMER1_exit; //分钟数未增到60,转
lda *_time+12
cmp #6
beq L9
jmp L6
L9:
; time[12]=0; time[11]++; //分钟数增加到60,清0,小时数加1
clr *_time+12
inc *_time+11
; if (time[11]!=10) goto isrTIMER1_exit; //小时数未增到24,转
lda *_time+11
cmp #10
beq L14
jmp L6
L14:
; time[11]=0; time[10]++; //时数增加到24,清0
clr *_time+11
inc *_time+10
; if(time[10]!=6) goto isrTIMER1_exit;
lda *_time+10
cmp #6
beq L19
jmp L6
L19:
; time[10]=0;time[9]++;
clr *_time+10
inc *_time+9
; if(time[9]!=10) goto isrTIMER1_exit;
lda *_time+9
cmp #10
beq L24
jmp L6
L24:
; time[9]=0;time[8]++;
clr *_time+9
inc *_time+8
; if(time[8]!=3) goto isrTIMER1_exit;
lda *_time+8
cmp #3
beq L29
bra L6
L29:
; time[8]=0;time[7]++;
clr *_time+8
inc *_time+7
; if(time[7]!=10) goto isrTIMER1_exit;
lda *_time+7
cmp #10
beq L34
bra L6
L34:
; time[7]=0;time[6]++;
clr *_time+7
inc *_time+6
; if(time[6]!=3) goto isrTIMER1_exit;
lda *_time+6
cmp #3
beq L39
bra L6
L39:
; time[6]=0;time[5]++;
clr *_time+6
inc *_time+5
; if(time[5]!=10) goto isrTIMER1_exit;
lda *_time+5
cmp #10
beq L44
bra L6
L44:
; time[5]=0;time[4]++;
clr *_time+5
inc *_time+4
; if(time[4]!=2) goto isrTIMER1_exit;
lda *_time+4
cmp #2
beq L49
bra L6
L49:
; time[4]=0;time[3]++;
clr *_time+4
inc *_time+3
; if(time[3]!=10) goto isrTIMER1_exit;
lda *_time+3
cmp #10
beq L54
bra L6
L54:
; time[3]=0;time[2]++;
clr *_time+3
inc *_time+2
; if(time[2]!=10) goto isrTIMER1_exit;
lda *_time+2
cmp #10
beq L59
bra L6
L59:
; time[2]=0;time[1]++;
clr *_time+2
inc *_time+1
; if(time[1]!=10) goto isrTIMER1_exit;
lda *_time+1
cmp #10
beq L64
bra L6
L64:
; time[1]=0;time[0]++;
clr *_time+1
inc *_time
; if(time[0]!=10) goto isrTIMER1_exit;
lda *_time
cmp #10
beq L68
bra L6
L68:
; time[0]=0;
clr *_time
L6:
; isrTIMER1_exit:
; //------------------------------
; //清除定时器溢出标志位
; T1SC&=~(1<<TOFBit);
bclr #7,0x20
; asm("CLI"); //开总中断
CLI
L1:
ais #1
.dbline 0 ; func end
pulh
rti
; KB_valve -> 0,X
_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
ais #-1
tsx
; }
; /*键盘中断处理函数------------------------------------*/
; #pragma interrupt_handler isrKBI
; void isrKBI(void)
; {
; unsigned char KB_valve;
; asm("SEI"); //关总中断
SEI
; INTKBSCR|= (1<<IntBit); //屏蔽键盘中断(IMASKK=1)
bset #1,0x1a
; KB_valve=KB_Scan(); //扫描键值
jsr _KB_Scan
tsx
sta *__r1
sta ,X
; Key=KB_Def(KB_valve); //获得键定义值
psha
jsr _KB_Def
ais #1
sta *__r1
sta *_Key
; KB_Init(); //重新初始化键盘
jsr _KB_Init
tsx
; INTKBSCR&= ~(1<<IntBit); //打开键盘中断(IMASKK=0)
bclr #1,0x1a
; asm("CLI"); //开总中断
CLI
L70:
ais #1
.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
; }
;
; //未定义的中断处理函数,本函数不能删除
; #pragma interrupt_handler isrDummy
; void isrDummy(void)
; {
L71:
.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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -