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

📄 lcdshow.s

📁 摩托罗拉的时钟的原代码
💻 S
📖 第 1 页 / 共 2 页
字号:
L74:
L75:
	inc 1,X
L77:
	lda 1,X
	cmp #-6
	bls L74
L71:
	inc ,X
L73:
	lda ,X
	cmp #-6
	bls L70
L69:
	ais #2
	.dbline 0 ; func end
	rts
;          temp2 -> 4,X
;          temp1 -> 2,X
_Changetime::
	tsx
;       for(v=0;v<=250;v++);
;   }
; 
; void Changetime(int temp1[],unsigned char temp2[])  //将数组temp1拆分存储到数组temp2
; {
;    time[0]=temp1[0]/1000;
	lda 2,X
	ldx 3,X
	psha
	pulh
	lda 1,x
	sta *__r1
	lda ,x
	tsx
	sta *__r0
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #-24
	psha
	lda #3
	psha
	jsr __divmod16s
	ais #2
	mov *__rlo,*__r1
	mov *__r1,*_time
;    time[1]=temp1[0]/100%10;
	lda 2,X
	ldx 3,X
	psha
	pulh
	lda 1,x
	sta *__r1
	lda ,x
	tsx
	sta *__r0
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #100
	psha
	clra
	psha
	jsr __divmod16s
	ais #2
	mov *__rhi,*__r0
	mov *__rlo,*__r1
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	pula
	pula
	sta *_time+1
;    time[2]=temp1[0]/10%10;
	lda 2,X
	ldx 3,X
	psha
	pulh
	lda 1,x
	sta *__r1
	lda ,x
	tsx
	sta *__r0
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	ais #2
	mov *__rhi,*__r0
	mov *__rlo,*__r1
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	pula
	pula
	sta *_time+2
;    time[3]=temp1[0]%10;
	lda 2,X
	ldx 3,X
	psha
	pulh
	lda 1,x
	sta *__r1
	lda ,x
	tsx
	sta *__r0
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	pula
	pula
	sta *_time+3
;    time[4]=temp1[1]/10;
	lda 3,X
	add #2
	sta *__r1
	lda 2,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda 1,x
	sta *__r1
	lda ,x
	tsx
	sta *__r0
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	ais #2
	mov *__rlo,*__r1
	mov *__r1,*_time+4
;    time[5]=temp1[1]%10;
	lda 3,X
	add #2
	sta *__r1
	lda 2,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda 1,x
	sta *__r1
	lda ,x
	tsx
	sta *__r0
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	pula
	pula
	sta *_time+5
;    time[6]=temp1[2]/10;
	lda 3,X
	add #4
	sta *__r1
	lda 2,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda 1,x
	sta *__r1
	lda ,x
	tsx
	sta *__r0
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	ais #2
	mov *__rlo,*__r1
	mov *__r1,*_time+6
;    time[7]=temp1[2]%10;
	lda 3,X
	add #4
	sta *__r1
	lda 2,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda 1,x
	sta *__r1
	lda ,x
	tsx
	sta *__r0
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16s
	pula
	pula
	sta *_time+7
;    time[8]=temp2[0]/10;
	lda 4,X
	ldx 5,X
	psha
	pulh
	lda ,x
	ldx #10
	clrh
	div
	tsx
	sta *_time+8
;    time[9]=temp2[0]%10;
	lda 4,X
	ldx 5,X
	psha
	pulh
	lda ,x
	ldx #10
	clrh
	div
	pshh
	pula
	tsx
	sta *_time+9
;    time[10]=temp2[1]/10;
	lda 5,X
	add #1
	sta *__r1
	lda 4,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	ldx #10
	clrh
	div
	tsx
	sta *_time+10
;    time[11]=temp2[1]%10;
	lda 5,X
	add #1
	sta *__r1
	lda 4,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	ldx #10
	clrh
	div
	pshh
	pula
	tsx
	sta *_time+11
;    time[12]=temp2[2]/10;
	lda 5,X
	add #2
	sta *__r1
	lda 4,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	ldx #10
	clrh
	div
	tsx
	sta *_time+12
;    time[13]=temp2[2]%10;
	lda 5,X
	add #2
	sta *__r1
	lda 4,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	ldx #10
	clrh
	div
	pshh
	pula
	tsx
	sta *_time+13
L78:
	.dbline 0 ; func end
	rts
_Change::
; }
; 
; 
; void Change(void)         //将数组time组合存储到数组Tdate
; {
;    Tdate[0]=time[0]*1000+time[1]*100+time[2]*10+time[3];
	clr *__r0
	lda *_time+1
	sta *__r1
	lda #100
	psha
	clra
	psha
	lda *__r1
	psha
	lda *__r0
	psha
	jsr __mul16
	ais #4
	mov *__rlo,*__r1
	mov *__rhi,*__r0
	clr *__r2
	lda *_time
	sta *__r3
	lda #-24
	psha
	lda #3
	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 *__r0
	clr *__r2
	lda *_time+2
	sta *__r3
	lda #10
	psha
	clra
	psha
	lda *__r3
	psha
	lda *__r2
	psha
	jsr __mul16
	ais #4
	mov *__rlo,*__r3
	mov *__rhi,*__r2
	lda *__r1
	add *__r3
	sta *__r1
	lda *__r0
	adc *__r2
	sta *__r0
	clr *__r2
	lda *_time+3
	sta *__r3
	lda *__r1
	add *__r3
	sta *_Tdate+1
	lda *__r0
	adc *__r2
	sta *_Tdate
;    Tdate[1]=time[4]*10+time[5];
	clr *__r0
	lda *_time+5
	sta *__r1
	clr *__r2
	lda *_time+4
	sta *__r3
	lda #10
	psha
	clra
	psha
	lda *__r3
	psha
	lda *__r2
	psha
	jsr __mul16
	ais #4
	mov *__rlo,*__r3
	mov *__rhi,*__r2
	lda *__r3
	add *__r1
	sta *_Tdate+2+1
	lda *__r2
	adc *__r0
	sta *_Tdate+2
;    Tdate[2]=time[6]*10+time[7];
	clr *__r0
	lda *_time+7
	sta *__r1
	clr *__r2
	lda *_time+6
	sta *__r3
	lda #10
	psha
	clra
	psha
	lda *__r3
	psha
	lda *__r2
	psha
	jsr __mul16
	ais #4
	mov *__rlo,*__r3
	mov *__rhi,*__r2
	lda *__r3
	add *__r1
	sta *_Tdate+4+1
	lda *__r2
	adc *__r0
	sta *_Tdate+4
;    Ttime[0]=time[8]*10+time[9];
	lda *_time+8
	ldx #10
	mul
	add *_time+9
	sta *_Ttime
;    Ttime[1]=time[10]*10+time[11];
	lda *_time+10
	ldx #10
	mul
	add *_time+11
	sta *_Ttime+1
;    Ttime[2]=time[12]*10+time[13];
	lda *_time+12
	ldx #10
	mul
	tsx
	add *_time+13
	sta *_Ttime+2
L92:
	.dbline 0 ; func end
	rts
_Change2::
; }
; 
; 
; void Change2(void)      //将数组alarm组合存储到数组Tdate2
; {
;    Tdate2[0]=alarm[0]*1000+alarm[1]*100+alarm[2]*10+alarm[3];
	clr *__r0
	lda *_alarm+1
	sta *__r1
	lda #100
	psha
	clra
	psha
	lda *__r1
	psha
	lda *__r0
	psha
	jsr __mul16
	ais #4
	mov *__rlo,*__r1
	mov *__rhi,*__r0
	clr *__r2
	lda *_alarm
	sta *__r3
	lda #-24
	psha
	lda #3
	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 *__r0
	clr *__r2
	lda *_alarm+2
	sta *__r3
	lda #10
	psha
	clra
	psha
	lda *__r3
	psha
	lda *__r2
	psha
	jsr __mul16
	ais #4
	mov *__rlo,*__r3
	mov *__rhi,*__r2
	lda *__r1
	add *__r3
	sta *__r1
	lda *__r0
	adc *__r2
	sta *__r0
	clr *__r2
	lda *_alarm+3
	sta *__r3
	lda *__r1
	add *__r3
	sta *_Tdate2+1
	lda *__r0
	adc *__r2
	sta *_Tdate2
;    Tdate2[1]=alarm[4]*10+alarm[5];
	clr *__r0
	lda *_alarm+5
	sta *__r1
	clr *__r2
	lda *_alarm+4
	sta *__r3
	lda #10
	psha
	clra
	psha
	lda *__r3
	psha
	lda *__r2
	psha
	jsr __mul16
	ais #4
	mov *__rlo,*__r3
	mov *__rhi,*__r2
	lda *__r3
	add *__r1
	sta *_Tdate2+2+1
	lda *__r2
	adc *__r0
	sta *_Tdate2+2
;    Tdate2[2]=alarm[6]*10+alarm[7];
	clr *__r0
	lda *_alarm+7
	sta *__r1
	clr *__r2
	lda *_alarm+6
	sta *__r3
	lda #10
	psha
	clra
	psha
	lda *__r3
	psha
	lda *__r2
	psha
	jsr __mul16
	ais #4
	mov *__rlo,*__r3
	mov *__rhi,*__r2
	lda *__r3
	add *__r1
	sta *_Tdate2+4+1
	lda *__r2
	adc *__r0
	sta *_Tdate2+4
;    Ttime2[0]=alarm[8]*10+alarm[9];
	lda *_alarm+8
	ldx #10
	mul
	add *_alarm+9
	sta *_Ttime2
;    Ttime2[1]=alarm[10]*10+alarm[11];
	lda *_alarm+10
	ldx #10
	mul
	add *_alarm+11
	sta *_Ttime2+1
;    Ttime2[2]=alarm[12]*10+alarm[13];
	lda *_alarm+12
	ldx #10
	mul
	tsx
	add *_alarm+13
	sta *_Ttime2+2
L110:
	.dbline 0 ; func end
	rts
_Controle::
; }
; 
; 
; void Controle(void)           //控制时钟的日期时间合法
; {  
;    if(time[12]>5) time[12]=0;
	lda *_time+12
	cmp #5
	bls L129
	clr *_time+12
L129:
;    if(time[10]>5) time[10]=0;
	lda *_time+10
	cmp #5
	bls L133
	clr *_time+10
L133:
;    if(Ttime[0]>=20&&time[9]>=5) time[9]=0;
	lda *_Ttime
	cmp #20
	blo L137
	lda *_time+9
	cmp #5
	blo L137
	clr *_time+9
L137:
;    if(time[8]>2) time[8]=0;
	lda *_time+8
	cmp #2
	bls L141
	clr *_time+8
L141:
;    if(Tdate[1]==2&&(Tdate[0]%4==0&&Tdate[0]%100!=0||Tdate[0]%400==0))
	ldhx *_Tdate+2
	cphx #2
	tsx
	bne L145
	lda *_Tdate+1
	sta *__rlo
	lda *_Tdate
	sta *__rhi
	lda #4
	psha
	clra
	psha
	jsr __divmod16s
	pula
	sta *__r0
	pula
	sta *__r1
	ldhx *__r0
	cphx #0
	tsx
	bne L149
	lda *_Tdate+1
	sta *__rlo
	lda *_Tdate
	sta *__rhi
	lda #100
	psha
	clra
	psha
	jsr __divmod16s
	pula
	sta *__r0
	pula
	sta *__r1
	ldhx *__r0
	cphx #0
	tsx
	bne L148
L149:
	lda *_Tdate+1
	sta *__rlo
	lda *_Tdate
	sta *__rhi
	lda #-112
	psha
	lda #1
	psha
	jsr __divmod16s
	pula
	sta *__r0
	pula
	sta *__r1
	ldhx *__r0
	cphx #0
	tsx
	bne L145
L148:
	lda *_time+6
	cmp #2
	bls L150
	clr *_time+6
L150:
; 	 { if(time[6]>2) time[6]=0;}
L145:
;    if(Tdate[1]==1||Tdate[1]==3||Tdate[1]==5||Tdate[1]==7||
	ldhx *_Tdate+2
	cphx #1
	tsx
	beq L168
	ldhx *_Tdate+2
	cphx #3
	tsx
	beq L168
	ldhx *_Tdate+2
	cphx #5
	tsx
	beq L168
	ldhx *_Tdate+2
	cphx #7
	tsx
	beq L168
	ldhx *_Tdate+2
	cphx #8
	tsx
	beq L168
	ldhx *_Tdate+2
	cphx #10
	tsx
	beq L168
	ldhx *_Tdate+2
	cphx #12
	tsx
	bne L154
L168:
	lda *_time+6
	cmp #3
	bne L169
	lda *_time+7
	cmp #1
	bls L169
	clr *_time+7
L169:
;       Tdate[1]==8||Tdate[1]==10||Tdate[1]==12)
; 	 { if(time[6]==3&&time[7]>1) time[7]=0;}
L154:
;    if(Tdate[1]==2||Tdate[1]==4||Tdate[1]==6||Tdate[1]==9||Tdate[1]==11)
	ldhx *_Tdate+2
	cphx #2
	tsx
	beq L184
	ldhx *_Tdate+2
	cphx #4
	tsx
	beq L184
	ldhx *_Tdate+2
	cphx #6
	tsx
	beq L184
	ldhx *_Tdate+2
	cphx #9
	tsx
	beq L184
	ldhx *_Tdate+2
	cphx #11
	tsx
	bne L174
L184:
	lda *_time+6
	cmp #3
	bne L185
	lda *_time+7
	cmp #0
	bls L185
	clr *_time+7
L185:
; 	 { if(time[6]==3&&time[7]>0) time[7]=0;}
L174:
;    if(time[6]>3) time[6]=0;
	lda *_time+6
	cmp #3
	bls L190
	clr *_time+6
L190:
;    if(Tdate[1]>10&&time[5]>2) time[5]=0;
	ldhx *_Tdate+2
	cphx #10
	tsx
	ble L194
	lda *_time+5
	cmp #2
	bls L194
	clr *_time+5
L194:
;    if(time[4]>1) time[4]=0;
	lda *_time+4
	cmp #1
	bls L199
	clr *_time+4
L199:
;    if(time[6]>3) time[6]=0;
	lda *_time+6
	cmp #3
	bls L203
	clr *_time+6
L203:
;    if(Tdate[1]>10&&time[5]>2) time[5]=0;
	ldhx *_Tdate+2
	cphx #10
	tsx
	ble L207
	lda *_time+5
	cmp #2
	bls L207
	clr *_time+5
L207:
;    if(time[4]>1) time[4]=0;                   
	lda *_time+4
	cmp #1
	bls L212
	clr *_time+4
L212:
L128:
	.dbline 0 ; func end
	rts
_Controle2::
; }
; 
; 
; void Controle2(void)           //控制闹钟的日期时间合法
; {  
;    if(alarm[12]>5) alarm[12]=0;
	lda *_alarm+12
	cmp #5
	bls L217
	clr *_alarm+12
L217:
;    if(alarm[10]>5) alarm[10]=0;
	lda *_alarm+10
	cmp #5
	bls L221
	clr *_alarm+10
L221:
;    if(Ttime2[0]>=20&&alarm[9]>=5) alarm[9]=0;
	lda *_Ttime2
	cmp #20
	blo L225
	lda *_alarm+9
	cmp #5
	blo L225
	clr *_alarm+9
L225:
;    if(alarm[8]>2) alarm[8]=0;
	lda *_alarm+8
	cmp #2
	bls L229
	clr *_alarm+8
L229:
;    if(Tdate2[1]==2&&(Tdate2[0]%4==0&&Tdate2[0]%100!=0||Tdate2[0]%400==0))
	ldhx *_Tdate2+2
	cphx #2
	tsx
	bne L233
	lda *_Tdate2+1
	sta *__rlo
	lda *_Tdate2
	sta *__rhi
	lda #4
	psha
	clra
	psha
	jsr __divmod16s
	pula
	sta *__r0
	pula
	sta *__r1
	ldhx *__r0
	cphx #0
	tsx
	bne L237
	lda *_Tdate2+1
	sta *__rlo
	lda *_Tdate2
	sta *__rhi
	lda #100
	psha
	clra
	psha
	jsr __divmod16s
	pula
	sta *__r0
	pula
	sta *__r1
	ldhx *__r0
	cphx #0
	tsx
	bne L236
L237:
	lda *_Tdate2+1
	sta *__rlo
	lda *_Tdate2
	sta *__rhi
	lda #-112
	psha
	lda #1
	psha
	jsr __divmod16s
	pula
	sta *__r0
	pula
	sta *__r1
	ldhx *__r0
	cphx #0
	tsx
	bne L233
L236:
	lda *_alarm+6
	cmp #2
	bls L238
	clr *_alarm+6
L238:
; 	 { if(alarm[6]>2) alarm[6]=0;}
L233:
;    if(Tdate2[1]==1||Tdate2[1]==3||Tdate2[1]==5||Tdate2[1]==7||
	ldhx *_Tdate2+2
	cphx #1
	tsx
	beq L256
	ldhx *_Tdate2+2
	cphx #3
	tsx
	beq L256
	ldhx *_Tdate2+2
	cphx #5
	tsx
	beq L256
	ldhx *_Tdate2+2
	cphx #7
	tsx
	beq L256
	ldhx *_Tdate2+2
	cphx #8
	tsx
	beq L256
	ldhx *_Tdate2+2
	cphx #10
	tsx
	beq L256
	ldhx *_Tdate2+2
	cphx #12
	tsx
	bne L242
L256:
	lda *_alarm+6
	cmp #3
	bne L257
	lda *_alarm+7
	cmp #1
	bls L257
	clr *_alarm+7
L257:
;       Tdate2[1]==8||Tdate2[1]==10||Tdate2[1]==12)
; 	 { if(alarm[6]==3&&alarm[7]>1) alarm[7]=0;}
L242:
;    if(Tdate2[1]==2||Tdate2[1]==4||Tdate2[1]==6||Tdate2[1]==9||Tdate2[1]==11)
	ldhx *_Tdate2+2
	cphx #2
	tsx
	beq L272
	ldhx *_Tdate2+2
	cphx #4
	tsx
	beq L272
	ldhx *_Tdate2+2
	cphx #6
	tsx
	beq L272
	ldhx *_Tdate2+2
	cphx #9
	tsx
	beq L272
	ldhx *_Tdate2+2
	cphx #11
	tsx
	bne L262
L272:
	lda *_alarm+6
	cmp #3
	bne L273
	lda *_alarm+7
	cmp #0
	bls L273
	clr *_alarm+7
L273:
; 	 { if(alarm[6]==3&&alarm[7]>0) alarm[7]=0;}
L262:
;    if(alarm[6]>3) alarm[6]=0;
	lda *_alarm+6
	cmp #3
	bls L278
	clr *_alarm+6
L278:
;    if(Tdate2[1]>10&&alarm[5]>2) alarm[5]=0;
	ldhx *_Tdate2+2
	cphx #10
	tsx
	ble L282
	lda *_alarm+5
	cmp #2
	bls L282
	clr *_alarm+5
L282:
;    if(alarm[4]>1) alarm[4]=0;
	lda *_alarm+4
	cmp #1
	bls L287
	clr *_alarm+4
L287:
;    if(alarm[6]>3) alarm[6]=0;
	lda *_alarm+6
	cmp #3
	bls L291
	clr *_alarm+6
L291:
;    if(Tdate2[1]>10&&alarm[5]>2) alarm[5]=0;
	ldhx *_Tdate2+2
	cphx #10
	tsx
	ble L295
	lda *_alarm+5
	cmp #2
	bls L295
	clr *_alarm+5
L295:
;    if(alarm[4]>1) alarm[4]=0;                   
	lda *_alarm+4
	cmp #1
	bls L300
	clr *_alarm+4
L300:
L216:
	.dbline 0 ; func end
	rts

⌨️ 快捷键说明

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