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

📄 vectors08.s

📁 freescale单片机电子时钟
💻 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 + -