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

📄 vectors08.s

📁 基于HC908GP32的时钟程序
💻 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 + -