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

📄 vectors08.s

📁 摩托罗拉单片机的定时器溢出中断的原代码
💻 S
字号:
	.module vectors08.c
	.area text
;              i -> 0,X
_isrTIMER1::
	pshh
	ais #-1
	tsx
; /*-----------------------------------------------------*
; *文件名:vectors08.c                                    *
; *功  能:用于定义中断矢量表                             *
; *-----------------------------------------------------*/
; #include "GP32C.H"
; #include "SCI.h"            //串行通信头文件
; /*[相应寄存器定义]*/
; #define TSTOPBit   5        //定时器计数停止位
; #define TOFBit     7        //定时器溢出标志位
; /*isrTIMER1:定时器溢出中断处理函数---------------------*
; *功  能:给内存单元Time[0-2](时分秒)赋值                *
; *-----------------------------------------------------*/
; extern unsigned char time[3];      //H M S
; #pragma interrupt_handler isrTIMER1
; void isrTIMER1(void)
; {
;    unsigned char i;
;    asm("SEI");            //关总中断
	SEI
;    //------------------------------
;    time[2]++;             //秒数加1
	inc *_time+2
;    if (time[2]!=60) goto isrTIMER1_exit; //秒数未增加到60,转
	lda *_time+2
	cmp #60
	beq L3
	bra L6
L3:
;    time[2]=0; time[1]++;  //秒数增加到60,清0,分钟数加1
	clr *_time+2
	inc *_time+1
;    if (time[1]!=60) goto isrTIMER1_exit; //分钟数未增到60,转
	lda *_time+1
	cmp #60
	beq L9
	bra L6
L9:
;    time[1]=0; time[0]++;  //分钟数增加到60,清0,小时数加1
	clr *_time+1
	inc *_time
;    if (time[0]!=24) goto isrTIMER1_exit; //小时数未增到24,转
	lda *_time
	cmp #24
	beq L13
	bra L6
L13:
;    time[0]=0;             //时数增加到24,清0
	clr *_time
L6:
;    isrTIMER1_exit:	 
;    //------------------------------
;    //清除定时器溢出标志位
;    T1SC&=~(1<<TOFBit);
	bclr #7,0x20
;    asm("CLI");            //开总中断
	CLI
L1:
	ais #1
	.dbline 0 ; func end
	pulh
	rti
_isrRe::
	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
; }
; /*isrRe:接收中断处理函数-------------------------------*
; *功  能:接收3字节基准时分秒放入内存单元Time[0-2]       *
; *-----------------------------------------------------*/
; #pragma interrupt_handler isrRe  
; void isrRe(void) 
;   {
;    	asm("SEI");	       //禁止所有中断
	SEI
;         //接收数据
;         SCIReN(3,time);
	ldhx #_time
	pshx
	pshh
	lda #3
	psha
	jsr _SCIReN
	ais #3
	tsx
; 	  asm("CLI");        //开放总中断	
	CLI
L15:
	.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) 
; {
L16:
	.dbline 0 ; func end
	pulh
	rti
	.area memory(abs)
	.org 0xffdc
__vectab::
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrDummy
	.word _isrRe
	.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 + -