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

📄 jianpan.s

📁 可以显示年月日,时间等,也可以设置闹钟,设定时间
💻 S
📖 第 1 页 / 共 3 页
字号:
	.module jianpan.c
	.area text
;          alart -> 6,X
;           data -> 4,X
;           time -> 2,X
_sys_init::
	tsx
; /******这里设置程序初始化时显示的时间****************/
; extern unsigned char time[3],alart[2],time_clock[3];//存放时、分、秒
; extern unsigned int data[3];         //年、月、日
; unsigned char clockn[2];
; extern unsigned char clockstr[8]; /*时间显示的LCD显示*/
; extern unsigned char alartstr[5]; /*闹钟显示的LCD显示*/
; extern unsigned char datestr[10]; /*日期显示LCD显示*/
; unsigned char naozhong,KB_valve;
; 
;    
; /****************以下是所有子函数的声明*********************/
; extern void LcdInit(void); //显示的初始化
; extern void lcdshow1(unsigned char x,unsigned char y,unsigned char data);
; extern void lcdshow2(unsigned char str[]);
; extern void sys_init(unsigned char time[],unsigned int data[],unsigned char alart[] );                 /*系统的初始化程序*/
; unsigned char getmonthdays(unsigned int,unsigned char);/*计算某月的天数子程序*/
; extern void guangbiao(unsigned char x,unsigned char y);
; /**************************函数部分*************************/
; 
;  void sys_init(unsigned char time[],unsigned int data[],unsigned char alart[] )
; {  
;    datestr[7]=data[0]%10+0x30; //日期
	lda 4,X
	ldx 5,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 __divmod16u
	pula
	sta *__r0
	pula
	add #48
	sta *__r1
	lda *__r0
	adc #0
	mov *__r1,*_datestr+7
;    datestr[6]=(data[0]/10)+0x30;
	lda 4,X
	ldx 5,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 __divmod16u
	ais #2
	mov *__rhi,*__r0
	mov *__rlo,*__r1
	lda *__r1
	add #48
	sta *__r1
	lda *__r0
	adc #0
	mov *__r1,*_datestr+6
;    datestr[5]=data[1]%10+0x30;
	lda 5,X
	add #2
	sta *__r1
	lda 4,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 __divmod16u
	pula
	sta *__r0
	pula
	add #48
	sta *__r1
	lda *__r0
	adc #0
	mov *__r1,*_datestr+5
;    datestr[4]=(data[1]/10)+0x30;
	lda 5,X
	add #2
	sta *__r1
	lda 4,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 __divmod16u
	ais #2
	mov *__rhi,*__r0
	mov *__rlo,*__r1
	lda *__r1
	add #48
	sta *__r1
	lda *__r0
	adc #0
	mov *__r1,*_datestr+4
;    datestr[3]=data[2]%10+0x30;
	lda 5,X
	add #4
	sta *__r1
	lda 4,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 __divmod16u
	pula
	sta *__r0
	pula
	add #48
	sta *__r1
	lda *__r0
	adc #0
	mov *__r1,*_datestr+3
;    datestr[2]=((data[2]/10))%10+0x30;
	lda 5,X
	add #4
	sta *__r1
	lda 4,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 __divmod16u
	ais #2
	mov *__rhi,*__r0
	mov *__rlo,*__r1
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16u
	pula
	sta *__r0
	pula
	add #48
	sta *__r1
	lda *__r0
	adc #0
	mov *__r1,*_datestr+2
;    datestr[1]=((data[2]/100))%10+0x30;
	lda 5,X
	add #4
	sta *__r1
	lda 4,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda 1,x
	sta *__r1
	lda ,x
	tsx
	sta *__r0
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #100
	psha
	clra
	psha
	jsr __divmod16u
	ais #2
	mov *__rhi,*__r0
	mov *__rlo,*__r1
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #10
	psha
	clra
	psha
	jsr __divmod16u
	pula
	sta *__r0
	pula
	add #48
	sta *__r1
	lda *__r0
	adc #0
	mov *__r1,*_datestr+1
;    datestr[0]=(data[2]/1000)+0x30;
	lda 5,X
	add #4
	sta *__r1
	lda 4,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda 1,x
	sta *__r1
	lda ,x
	tsx
	sta *__r0
	mov *__r1,*__rlo
	mov *__r0,*__rhi
	lda #-24
	psha
	lda #3
	psha
	jsr __divmod16u
	ais #2
	mov *__rhi,*__r0
	mov *__rlo,*__r1
	lda *__r1
	add #48
	sta *__r1
	lda *__r0
	adc #0
	mov *__r1,*_datestr
;    /*给元素0赋相应数码管显示编码,编码序号是秒数的个位*/
;    clockstr[5]=time[0]%10+0x30; 
	lda 2,X
	ldx 3,X
	psha
	pulh
	lda ,x
	ldx #10
	clrh
	div
	pshh
	pula
	tsx
	add #48
	sta *_clockstr+5
;    clockstr[4]=(time[0]/10)+0x30; /*给元素1赋相应数码管显示编码,编码序号是秒数的十位*/
	lda 2,X
	ldx 3,X
	psha
	pulh
	lda ,x
	ldx #10
	clrh
	div
	tsx
	add #48
	sta *_clockstr+4
;    clockstr[3]=time[1]%10+0x30;  /*以下类推*/
	lda 3,X
	add #1
	sta *__r1
	lda 2,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	ldx #10
	clrh
	div
	pshh
	pula
	tsx
	add #48
	sta *_clockstr+3
;    clockstr[2]=(time[1]/10)+0x30;
	lda 3,X
	add #1
	sta *__r1
	lda 2,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	ldx #10
	clrh
	div
	tsx
	add #48
	sta *_clockstr+2
;    clockstr[1]=time[2]%10+0x30;
	lda 3,X
	add #2
	sta *__r1
	lda 2,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	ldx #10
	clrh
	div
	pshh
	pula
	tsx
	add #48
	sta *_clockstr+1
;    clockstr[0]=(time[2]/10)+0x30;
	lda 3,X
	add #2
	sta *__r1
	lda 2,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	ldx #10
	clrh
	div
	tsx
	add #48
	sta *_clockstr
;    
;    alartstr[3]=alart[0]%10+0x30;        //设置闹钟
	lda 6,X
	ldx 7,X
	psha
	pulh
	lda ,x
	ldx #10
	clrh
	div
	pshh
	pula
	tsx
	add #48
	sta *_alartstr+3
;    alartstr[2]=(int)alart[0]/10+0x30;
	lda 6,X
	ldx 7,X
	psha
	pulh
	lda ,x
	tsx
	psha
	lda #10
	psha
	jsr __div8s
	ais #2
	add #48
	sta *_alartstr+2
;    alartstr[1]=alart[1]%10+0x30;
	lda 7,X
	add #1
	sta *__r1
	lda 6,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	ldx #10
	clrh
	div
	pshh
	pula
	tsx
	add #48
	sta *_alartstr+1
;    alartstr[0]=(int)alart[1]/10+0x30;
	lda 7,X
	add #1
	sta *__r1
	lda 6,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	psha
	lda #10
	psha
	jsr __div8s
	ais #2
	add #48
	sta *_alartstr
L1:
	.dbline 0 ; func end
	rts
;           days -> 2,X
;          month -> 7,X
;           year -> 5,X
_getmonthdays::
	ais #-3
	tsx
; 
;        
; }
; unsigned char getmonthdays(unsigned int year,unsigned char month)/*得到某月的天数*/
; {
;  unsigned char days;
;  switch (month)
	clr ,X
	lda 7,X
	sta 1,X
	lda ,X
	bne X0
	lda 1,X
	cmp #2
	beq L22
X0:
	lda ,X
	bne X1
	lda 1,X
	cmp #4
	beq L21
X1:
	lda ,X
	bne X2
	lda 1,X
	cmp #6
	beq L21
X2:
	lda ,X
	bne X3
	lda 1,X
	cmp #9
	beq L21
X3:
	lda ,X
	bne X4
	lda 1,X
	cmp #11
	beq L21
X4:
	bra L18
X5:
;  {
L21:
;   case 4:
;   case 6:
;   case 9:
;   case 11:days=30;
	lda #30
	sta 2,X
;           break;
	bra L19
L22:
;   case 2: if((year%4==0&&year%100!=0)||(year%400==0)) 
	lda 6,X
	and #3
	sta *__r1
	clra
	sta *__r0
	ldhx *__r0
	cphx #0
	tsx
	bne L26
	lda 6,X
	sta *__rlo
	lda 5,X
	sta *__rhi
	lda #100
	psha
	clra
	psha
	jsr __divmod16u
	pula
	sta *__r0
	pula
	sta *__r1
	ldhx *__r0
	cphx #0
	tsx
	bne L25
L26:
	lda 6,X
	sta *__rlo
	lda 5,X
	sta *__rhi
	lda #-112
	psha
	lda #1
	psha
	jsr __divmod16u
	pula
	sta *__r0
	pula
	sta *__r1
	ldhx *__r0
	cphx #0
	tsx
	bne L23
L25:
;                      days=29;
	lda #29
	sta 2,X
	bra L19
L23:
;    else days=28;
	lda #28
	sta 2,X
;           break;
	bra L19
L18:
;   default:days=31;
	lda #31
	sta 2,X
;           break;
L19:
;  }
;  return days;
	lda 2,X
L17:
	ais #3
	.dbline 0 ; func end
	rts
;              i -> 0,X
;              j -> 1,X
_Delay::
	ais #-2
	tsx
; }
;  
; /*void Data_Change(unsigned char data,unsigned char change_data[2])
; {
;    change_data[1]=data/10;
;    change_data[0]=data%10;
; }
; */
; void Delay(void)
; {
;   unsigned char i,j;
;   for(i=0;i<230;i++)
	clr ,X
	bra L31
L28:
	clr 1,X
	bra L35
L32:
L33:
	inc 1,X
L35:
	lda 1,X
	cmp #-26
	blo L32
L29:
	inc ,X
L31:
	lda ,X
	cmp #-26
	blo L28
L27:
	ais #2
	.dbline 0 ; func end
	rts
;              n -> 2,X
_Lcd_Show::
	tsx
;     for(j=0;j<230;j++);
; }
; 
; void Lcd_Show(unsigned char n)
; {
;    // unsigned char hyear,lyear,array[2]={0};
;     LcdInit();
	jsr _LcdInit
	tsx
;     if(n==1)
	lda 2,X
	cmp #1
	bne L37
;     {
; 	lcdshow1(1,4, clockstr[0]);  //show h low1
	lda *_clockstr
	psha
	lda #4
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,5, clockstr[1]);  //show h low2
	lda *_clockstr+1
	psha
	lda #5
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,6,':');            //show '.'
	lda #58
	psha
	lda #6
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,7, clockstr[2]);  //show m high 
	lda *_clockstr+2
	psha
	lda #7
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,8, clockstr[3]);  //show m low 
	lda *_clockstr+3
	psha
	lda #8
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,9,':');            //show '.'
	lda #58
	psha
	lda #9
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,10, clockstr[4]);  //show s high 
	lda *_clockstr+4
	psha
	lda #10
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,11, clockstr[5]);  //show s low	
	lda *_clockstr+5
	psha
	lda #11
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
	tsx
;     }
	jmp L38
L37:
;     else
;     {
; 	
; 	lcdshow1(0,2,datestr[0]);  //show year high1
	lda *_datestr
	psha
	lda #2
	psha
	clra
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(0,3,datestr[1]);  //show year high2	        
	lda *_datestr+1
	psha
	lda #3
	psha
	clra
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(0,4,datestr[2]);  //show year low1
	lda *_datestr+2
	psha
	lda #4
	psha
	clra
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(0,5,datestr[3]);  //show year low2
	lda *_datestr+3
	psha
	lda #5
	psha
	clra
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(0,6,'-');            //show '.'
	lda #45
	psha
	lda #6
	psha
	clra
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(0,7,datestr[4]);  //show month high 
	lda *_datestr+4
	psha
	lda #7
	psha
	clra
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(0,8,datestr[5]);  //show month low 
	lda *_datestr+5
	psha
	lda #8
	psha
	clra
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(0,9,'-');            //show '.'
	lda #45
	psha
	lda #9
	psha
	clra
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(0,10,datestr[6]);  //show day high 
	lda *_datestr+6
	psha
	lda #10
	psha
	clra
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(0,11,datestr[7]);  //show day low
	lda *_datestr+7
	psha
	lda #11
	psha
	clra
	psha
	jsr _lcdshow1
	ais #3
;         
; 	lcdshow1(1,4,alartstr[0]);  //show h low1
	lda *_alartstr
	psha
	lda #4
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,5,alartstr[1]);  //show h low2
	lda *_alartstr+1
	psha
	lda #5
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,6,':');            //show '.'
	lda #58
	psha
	lda #6
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,7,alartstr[2]);  //show m high 
	lda *_alartstr+2
	psha
	lda #7
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,8,alartstr[3]);  //show m low 
	lda *_alartstr+3
	psha
	lda #8
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
	tsx
; 	}
L38:
L36:
	.dbline 0 ; func end
	rts
_Lcd_Show_init::
; }
; 
; void Lcd_Show_init(void)
; {
; 	LcdInit();
	jsr _LcdInit
; 	lcdshow1(1,4,'0');  //show h low1
	lda #48
	psha
	lda #4
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,5,'0');  //show h low2
	lda #48
	psha
	lda #5
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,6,':');  //show '.'
	lda #58
	psha
	lda #6
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,7,'0');  //show m high 
	lda #48
	psha
	lda #7
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,8,'0');  //show m low 
	lda #48
	psha
	lda #8
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,9,':');  //show '.'
	lda #58
	psha
	lda #9
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,10,'0');  //show s high 
	lda #48
	psha
	lda #10
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
; 	lcdshow1(1,11,'0');  //show s low
	lda #48
	psha
	lda #11
	psha
	lda #1
	psha
	jsr _lcdshow1
	ais #3
	tsx
L54:
	.dbline 0 ; func end
	rts
;              n -> 4,X
;     time_array -> 2,X
_str_change::
	tsx
; }
; 
; void str_change(unsigned char time_array[],unsigned char n)
; {
; 	data[2]=time_array[0]*1000+time_array[1]*100+time_array[2]*10+time_array[3];
	lda 3,X
	add #1
	sta *__r1
	lda 2,X
	adc #0
	sta *__r0
	ldhx *__r0
	lda ,x
	tsx
	sta *__r1
	clr *__r0
	lda #100
	psha
	clra
	psha
	lda *__r1
	psha
	lda *__r0
	psha
	jsr __mul16
	ais #4
	mov *__rlo,*__r1
	mov *__rhi,*__r0
	lda 2,X
	ldx 3,X
	psha
	pulh
	lda ,x
	tsx
	sta *__r3
	clr *__r2
	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
	lda 3,X
	add #2
	sta *__r3
	lda 2,X
	adc #0
	sta *__r2
	ldhx *__r2
	lda ,x
	tsx

⌨️ 快捷键说明

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