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

📄 time.s

📁 freescale单片机电子时钟
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module TIME.c
	.area text
;              i -> 0,X
_delay::
	ais #-1
	tsx
	clr ,X
	bra L5
L2:
L3:
	inc ,X
L5:
; #include "TIME.h"
; #include "LCD.h"
; #include "KB.h"  
; 
; void delay(void)
; {
;   unsigned char i;
;   for(i=0;i<=110;i++);
	lda ,X
	cmp #110
	bls L2
L1:
	ais #1
	.dbline 0 ; func end
	rts
_conver::
; }
; 
; void conver(void)
; {
;    time1[0]=time[0]/10+0x30;
	lda *_time
	ldx #10
	clrh
	div
	add #48
	sta *_time1
;    time1[1]=time[0]%10+0x30;
	lda *_time
	ldx #10
	clrh
	div
	pshh
	pula
	add #48
	sta *_time1+1
;    time1[2]=time[1]/10+0x30;
	lda *_time+1
	ldx #10
	clrh
	div
	add #48
	sta *_time1+2
;    time1[3]=time[1]%10+0x30;
	lda *_time+1
	ldx #10
	clrh
	div
	pshh
	pula
	add #48
	sta *_time1+3
;    time1[4]='.';
	lda #46
	sta *_time1+4
;    
;    time1[5]=time[2]/10+0x30;
	lda *_time+2
	ldx #10
	clrh
	div
	add #48
	sta *_time1+5
;    time1[6]=time[2]%10+0x30;
	lda *_time+2
	ldx #10
	clrh
	div
	pshh
	pula
	add #48
	sta *_time1+6
;    time1[7]='.';
	lda #46
	sta *_time1+7
;    
;    time1[8]=time[3]/10+0x30;
	lda *_time+3
	ldx #10
	clrh
	div
	add #48
	sta *_time1+8
;    time1[9]=time[3]%10+0x30;
	lda *_time+3
	ldx #10
	clrh
	div
	pshh
	pula
	add #48
	sta *_time1+9
;    
;    time1[10]=time[4]/10+0x30;
	lda *_time+4
	ldx #10
	clrh
	div
	add #48
	sta *_time1+10
;    time1[11]=time[4]%10+0x30;
	lda *_time+4
	ldx #10
	clrh
	div
	pshh
	pula
	add #48
	sta *_time1+11
;    time1[12]=':';
	lda #58
	sta *_time1+12
;    
;    time1[13]=time[5]/10+0x30;
	lda *_time+5
	ldx #10
	clrh
	div
	add #48
	sta *_time1+13
;    time1[14]=time[5]%10+0x30;
	lda *_time+5
	ldx #10
	clrh
	div
	pshh
	pula
	add #48
	sta *_time1+14
;    time1[15]=':';
	lda #58
	sta *_time1+15
;    
;    time1[16]=time[6]/10+0x30;
	lda *_time+6
	ldx #10
	clrh
	div
	add #48
	sta *_time1+16
;    time1[17]=time[6]%10+0x30;
	lda *_time+6
	ldx #10
	clrh
	div
	pshh
	pula
	tsx
	add #48
	sta *_time1+17
L6:
	.dbline 0 ; func end
	rts
;              i -> 0,X
;              k -> 1,X
;              n -> 4,X
_alarmtime::
	ais #-2
	tsx
; }
; void alarmtime(unsigned char n)//蜂鸣器响
; {
;   unsigned char i,k;
;   for(i=0;i<n;i++)
	clr ,X
	bra L40
L37:
;   {
;     PTD=1;
	lda #1
	sta 0x3
;     for(k=0;k<150;k++)
	clr 1,X
	bra L44
L41:
	jsr _delay
	tsx
L42:
	inc 1,X
L44:
	lda 1,X
	cmp #-106
	blo L41
;     delay();
;     PTD=0;
	clr 0x3
;     for(k=0;k<150;k++)
	clr 1,X
	bra L48
L45:
	jsr _delay
	tsx
L46:
	inc 1,X
L48:
	lda 1,X
	cmp #-106
	blo L45
L38:
	inc ,X
L40:
	lda ,X
	cmp 4,X
	blo L37
L36:
	ais #2
	.dbline 0 ; func end
	rts
_Timer1init::
;     delay();
;   }
; }    
; 
; 
; void Timer1init(void)
;  {
;      //允许溢出中断、不启动计数、分频因子=64
;      T1SC=0b01100110;
	lda #102
	sta 0x20
;      //计数寄存器初值=0x0000
;      T1CNTH=0x00; T1CNTL=0x00;           
	clr 0x21
	clr 0x22
;      //1秒产生1次溢出中断,计数寄存器=1×(2457600/64)=9600
;      T1MODH=0x96; T1MODL=0x00;
	lda #-106
	sta 0x23
	clr 0x24
;      //允许定时器1计数寄存器计数
;      T1SC&=~(1<<TSTOPBit);
	bclr #5,0x20
L49:
	.dbline 0 ; func end
	rts
_InitTime::
;  }
;  void InitTime(void)
;  {
;    time[0]=20;
	lda #20
	sta *_time
;    time[1]=8;
	lda #8
	sta *_time+1
;    time[2]=6;
	lda #6
	sta *_time+2
;    time[3]=18;
	lda #18
	sta *_time+3
;    time[4]=23;
	lda #23
	sta *_time+4
;    time[5]=59;
	lda #59
	sta *_time+5
;    time[6]=54;
	lda #54
	sta *_time+6
L50:
	.dbline 0 ; func end
	rts
	.area lit
L58:
	.byte 'i,'n,'p,'u,'t,32,'d,'a,'t,'e,58
L59:
	.byte 'i,'n,'p,'u,'t,32,'t,'i,'m,'e,58
	.area text
;              b -> 0,X
;              a -> 11,X
;              y -> 22,X
_SetTime::
	ais #-24
	tsx
;  }
;  void SetTime(void)
;  {
;    //unsigned char i;
;    //unsigned char value=0;
;    unsigned char a[11]="input date:";
	aix #11
	sthx *__r0
	tsx
	lda #11
	psha
	clra
	psha
	lda #<L58
	psha
	lda #>L58
	psha
	lda *__r1
	psha
	lda *__r0
	psha
	jsr __asgnblk
	ais #6
;    unsigned char b[11]="input time:";
	sthx *__r0
	lda #11
	psha
	clra
	psha
	lda #<L59
	psha
	lda #>L59
	psha
	lda *__r1
	psha
	lda *__r0
	psha
	jsr __asgnblk
	ais #6
L60:
;    //unsigned char c[15]="error!put again";
;    unsigned char y[2];
;    //unsigned char b[]="input month:";
;    //unsigned char b[]="input month:";
;    //unsigned char a[]="input year:";
;    //unsigned char b[]="input month:";
;    //unsigned char c[]="input day:";
;    //unsigned char d[]="input hour:";
;    //unsigned char e[]="input minute:";
;    //unsigned char f[]="input second:"; 
;    begin:
;    lcdshow1((unsigned char *)a,11);
	lda #11
	psha
	aix #11
	pshx
	pshh
	jsr _lcdshow1
	ais #3
;    
;    LcdCtrl&=~(1<<LcdRS);    //RS、R/W=00,写指令
	bclr #0,0x2
;    LcdCtrl&=~(1<<LcdRW);    
	bclr #1,0x2
;    Lcd_Command(0b11000000); //后7位为DDRAM地址0x40 
	lda #-64
	psha
	jsr _Lcd_Command
	ais #1
	tsx
	bra L62
L61:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L62:
;    
;    while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
	lda *_KB_valve
	cmp #-1
	bne L61
	bra L65
L64:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L65:
;    while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
	lda *_KB_valve
	cmp #-1
	beq L64
;    KB_valve=KB_Def(KB_valve);  //键值转化为定义值
	lda *_KB_valve
	psha
	jsr _KB_Def
	ais #1
	tsx
	sta *__r1
	sta *_KB_valve
;    y[0]= KB_valve-0x30;
	lda *_KB_valve
	sub #48
	sta 22,X
;    lcdshow2(KB_valve);
	lda *_KB_valve
	psha
	jsr _lcdshow2
	ais #1
	tsx
	bra L68
L67:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L68:
;    
;    while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
	lda *_KB_valve
	cmp #-1
	bne L67
	bra L71
L70:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L71:
;    while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
	lda *_KB_valve
	cmp #-1
	beq L70
;    KB_valve=KB_Def(KB_valve);  //键值转化为定义值
	lda *_KB_valve
	psha
	jsr _KB_Def
	ais #1
	tsx
	sta *__r1
	sta *_KB_valve
;    y[1]= KB_valve-0x30;
	lda *_KB_valve
	sub #48
	sta 23,X
;    lcdshow2(KB_valve);
	lda *_KB_valve
	psha
	jsr _lcdshow2
	ais #1
	tsx
;      
;    time[0]=y[0]*10+y[1];
	lda 22,X
	ldx #10
	mul
	tsx
	add 23,X
	sta *_time
	bra L76
L75:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L76:
;    
;    while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
	lda *_KB_valve
	cmp #-1
	bne L75
	bra L79
L78:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L79:
;    while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
	lda *_KB_valve
	cmp #-1
	beq L78
;    KB_valve=KB_Def(KB_valve);  //键值转化为定义值
	lda *_KB_valve
	psha
	jsr _KB_Def
	ais #1
	tsx
	sta *__r1
	sta *_KB_valve
;    y[0]= KB_valve-0x30;
	lda *_KB_valve
	sub #48
	sta 22,X
;    lcdshow2(KB_valve);
	lda *_KB_valve
	psha
	jsr _lcdshow2
	ais #1
	tsx
	bra L82
L81:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L82:
;    
;    while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
	lda *_KB_valve
	cmp #-1
	bne L81
	bra L85
L84:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L85:
;    while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
	lda *_KB_valve
	cmp #-1
	beq L84
;    KB_valve=KB_Def(KB_valve);  //键值转化为定义值
	lda *_KB_valve
	psha
	jsr _KB_Def
	ais #1
	tsx
	sta *__r1
	sta *_KB_valve
;    y[1]= KB_valve-0x30;
	lda *_KB_valve
	sub #48
	sta 23,X
;    lcdshow2(KB_valve);
	lda *_KB_valve
	psha
	jsr _lcdshow2
	ais #1
	tsx
;    
;    time[1]=y[0]*10+y[1];
	lda 22,X
	ldx #10
	mul
	tsx
	add 23,X
	sta *_time+1
;    
;    lcdshow2('.');
	lda #46
	psha
	jsr _lcdshow2
	ais #1
	tsx
	bra L91
L90:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L91:
;    
;    while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
	lda *_KB_valve
	cmp #-1
	bne L90
	bra L94
L93:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L94:
;    while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
	lda *_KB_valve
	cmp #-1
	beq L93
;    KB_valve=KB_Def(KB_valve);  //键值转化为定义值
	lda *_KB_valve
	psha
	jsr _KB_Def
	ais #1
	tsx
	sta *__r1
	sta *_KB_valve
;    y[0]= KB_valve-0x30;
	lda *_KB_valve
	sub #48
	sta 22,X
;    if(y[0]>1)
	cmp #1
	bls L96
;    {
;      //lcdshow1((unsigned char *)c,15);
;      goto begin;
	jmp L60
L96:
;    }
;    lcdshow2(KB_valve);
	lda *_KB_valve
	psha
	jsr _lcdshow2
	ais #1
	tsx
	bra L99
L98:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L99:
;    
;    while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
	lda *_KB_valve
	cmp #-1
	bne L98
	bra L102
L101:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L102:
;    while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
	lda *_KB_valve
	cmp #-1
	beq L101
;    KB_valve=KB_Def(KB_valve);  //键值转化为定义值
	lda *_KB_valve
	psha
	jsr _KB_Def
	ais #1
	tsx
	sta *__r1
	sta *_KB_valve
;    y[1]= KB_valve-0x30;
	lda *_KB_valve
	sub #48
	sta 23,X
;    lcdshow2(KB_valve);
	lda *_KB_valve
	psha
	jsr _lcdshow2
	ais #1
	tsx
;    
;    time[2]=y[0]*10+y[1];
	lda 22,X
	ldx #10
	mul
	tsx
	add 23,X
	sta *_time+2
;    
;    lcdshow2('.');
	lda #46
	psha
	jsr _lcdshow2
	ais #1
	tsx
	bra L108
L107:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L108:
;    
;    while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
	lda *_KB_valve
	cmp #-1
	bne L107
	bra L111
L110:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L111:
;    while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
	lda *_KB_valve
	cmp #-1
	beq L110
;    KB_valve=KB_Def(KB_valve);  //键值转化为定义值
	lda *_KB_valve
	psha
	jsr _KB_Def
	ais #1
	tsx
	sta *__r1
	sta *_KB_valve
;    y[0]= KB_valve-0x30;
	lda *_KB_valve
	sub #48
	sta 22,X
;    if(y[0]>3)
	cmp #3
	bls L113
;    {
;      //lcdshow1((unsigned char *)c,15);
;      goto begin;
	jmp L60
L113:
;    }
;    lcdshow2(KB_valve);
	lda *_KB_valve
	psha
	jsr _lcdshow2
	ais #1
	tsx
	bra L116
L115:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L116:
;    
;    while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
	lda *_KB_valve
	cmp #-1
	bne L115
	bra L119
L118:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L119:
;    while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
	lda *_KB_valve
	cmp #-1
	beq L118
;    KB_valve=KB_Def(KB_valve);  //键值转化为定义值
	lda *_KB_valve
	psha
	jsr _KB_Def
	ais #1
	tsx
	sta *__r1
	sta *_KB_valve
;    y[1]= KB_valve-0x30;
	lda *_KB_valve
	sub #48
	sta 23,X
;    lcdshow2(KB_valve);
	lda *_KB_valve
	psha
	jsr _lcdshow2
	ais #1
	tsx
;    
;    time[3]=y[0]*10+y[1];
	lda 22,X
	ldx #10
	mul
	tsx
	add 23,X
	sta *_time+3
;    
;    lcdshow1((unsigned char *)b,11);
	lda #11
	psha
	pshx
	pshh
	jsr _lcdshow1
	ais #3
;    LcdCtrl&=~(1<<LcdRS);    //RS、R/W=00,写指令
	bclr #0,0x2
;    LcdCtrl&=~(1<<LcdRW);    
	bclr #1,0x2
;    Lcd_Command(0b11000000); //后7位为DDRAM地址0x40 
	lda #-64
	psha
	jsr _Lcd_Command
	ais #1
	tsx
	bra L125
L124:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L125:
;    
;    while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
	lda *_KB_valve
	cmp #-1
	bne L124
	bra L128
L127:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L128:
;    while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
	lda *_KB_valve
	cmp #-1
	beq L127
;    KB_valve=KB_Def(KB_valve);  //键值转化为定义值
	lda *_KB_valve
	psha
	jsr _KB_Def
	ais #1
	tsx
	sta *__r1
	sta *_KB_valve
;    y[0]= KB_valve-0x30;
	lda *_KB_valve
	sub #48
	sta 22,X
;    if(y[0]>2)
	cmp #2
	bls L130
;    {
;      //lcdshow1((unsigned char *)c,15);
;      goto begin;
	jmp L60
L130:
;    }
;    lcdshow2(KB_valve);
	lda *_KB_valve
	psha
	jsr _lcdshow2
	ais #1
	tsx
	bra L133
L132:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L133:
;    
;    while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
	lda *_KB_valve
	cmp #-1
	bne L132
	bra L136
L135:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L136:
;    while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
	lda *_KB_valve
	cmp #-1
	beq L135
;    KB_valve=KB_Def(KB_valve);  //键值转化为定义值
	lda *_KB_valve
	psha
	jsr _KB_Def
	ais #1
	tsx
	sta *__r1
	sta *_KB_valve
;    y[1]= KB_valve-0x30;
	lda *_KB_valve
	sub #48
	sta 23,X
;    lcdshow2(KB_valve);
	lda *_KB_valve
	psha
	jsr _lcdshow2
	ais #1
	tsx
;    
;    time[4]=y[0]*10+y[1];
	lda 22,X
	ldx #10
	mul
	tsx
	add 23,X
	sta *_time+4
;    
;    lcdshow2(':');
	lda #58
	psha
	jsr _lcdshow2
	ais #1
	tsx
	bra L142
L141:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L142:
;    
;    while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
	lda *_KB_valve
	cmp #-1
	bne L141
	bra L145
L144:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L145:
;    while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
	lda *_KB_valve
	cmp #-1
	beq L144
;    KB_valve=KB_Def(KB_valve);  //键值转化为定义值
	lda *_KB_valve
	psha
	jsr _KB_Def
	ais #1
	tsx
	sta *__r1
	sta *_KB_valve
;    y[0]= KB_valve-0x30;
	lda *_KB_valve
	sub #48
	sta 22,X
;    if(y[0]>6)
	cmp #6
	bls L147
;    {
;      //lcdshow1((unsigned char *)c,15);
;      goto begin;
	jmp L60
L147:
;    }
;    lcdshow2(KB_valve);
	lda *_KB_valve
	psha
	jsr _lcdshow2
	ais #1
	tsx
	bra L150
L149:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L150:
;    
;    while(KB_valve!=0xff){KB_valve=KB_Scan(); }  //松开跳出
	lda *_KB_valve
	cmp #-1
	bne L149
	bra L153
L152:
	jsr _KB_Scan
	tsx
	sta *__r1
	sta *_KB_valve
L153:
;    while(KB_valve==0xff){KB_valve=KB_Scan(); } //有按键跳出
	lda *_KB_valve
	cmp #-1
	beq L152
;    KB_valve=KB_Def(KB_valve);  //键值转化为定义值
	lda *_KB_valve
	psha
	jsr _KB_Def

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -