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

📄 万年历.s

📁 PS2控制代码123456789
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module _万年历.c
	.area data(ram, con, rel)
_week1::
	.blkb 2
	.area idata
	.byte 50,22
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 40,43
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 46,33
	.area data(ram, con, rel)
	.blkb 1
	.area idata
	.byte 40
	.area data(ram, con, rel)
	.dbfile F:\调试\万年历.c
	.dbsym e week1 _week1 A[7:7]c
_week2::
	.blkb 2
	.area idata
	.byte 27,94
	.area data(ram, con, rel)
	.dbfile F:\调试\万年历.c
	.blkb 2
	.area idata
	.byte 93,36
	.area data(ram, con, rel)
	.dbfile F:\调试\万年历.c
	.blkb 2
	.area idata
	.byte 'E,'Y
	.area data(ram, con, rel)
	.dbfile F:\调试\万年历.c
	.blkb 1
	.area idata
	.byte 53
	.area data(ram, con, rel)
	.dbfile F:\调试\万年历.c
	.dbsym e week2 _week2 A[7:7]c
_second::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\调试\万年历.c
	.dbsym e second _second c
_minute::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\调试\万年历.c
	.dbsym e minute _minute c
_hour::
	.blkb 1
	.area idata
	.byte 12
	.area data(ram, con, rel)
	.dbfile F:\调试\万年历.c
	.dbsym e hour _hour c
_week::
	.blkb 1
	.area idata
	.byte 4
	.area data(ram, con, rel)
	.dbfile F:\调试\万年历.c
	.dbsym e week _week c
_day::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile F:\调试\万年历.c
	.dbsym e day _day c
_month::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile F:\调试\万年历.c
	.dbsym e month _month c
_temp::
	.blkb 1
	.area idata
	.byte 15
	.area data(ram, con, rel)
	.dbfile F:\调试\万年历.c
	.dbsym e temp _temp c
_year::
	.blkb 2
	.area idata
	.word 2006
	.area data(ram, con, rel)
	.dbfile F:\调试\万年历.c
	.dbsym e year _year i
	.area text(rom, con, rel)
	.dbfile F:\调试\万年历.c
	.dbfunc e time_display _time_display fV
	.even
_time_display::
	sbiw R28,4
	.dbline -1
	.dbline 19
; #include<iom128v.h>
; //PD0,PD1,PD2
; extern void delay_ms(unsigned int time);
; extern void ocmj_write(unsigned char data);
; extern void hz_tran(unsigned char x,unsigned char y,unsigned char *hz_p);
; extern void write_ASCII(unsigned type,unsigned xx,unsigned yy,unsigned data);
; extern unsigned char table1[];//={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};
; unsigned char week1[]={50,22,40,43,46,33,40};
; unsigned char week2[]={27,94,93,36,69,89,53};
; unsigned char count;
; extern  unsigned char data;
; unsigned char second=0,minute=0,hour=12,week=4,day=1,month=1,temp=15;
; unsigned char alrm_hour,alrm_minute;
; unsigned int year=2006;
; /**********************************************/
; 	 /* LCD显示小时分钟秒*/
; /**********************************************/
; void time_display(void)
; {hz_tran(2,0,"年");
	.dbline 19
	ldi R24,<L2
	ldi R25,>L2
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,2
	xcall _hz_tran
	.dbline 20
; hz_tran(4,0,"月");
	ldi R24,<L3
	ldi R25,>L3
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,4
	xcall _hz_tran
	.dbline 21
; hz_tran(6,0,"日");
	ldi R24,<L4
	ldi R25,>L4
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,6
	xcall _hz_tran
	.dbline 22
; hz_tran(0,1,"星期");
	ldi R24,<L5
	ldi R25,>L5
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	xcall _hz_tran
	.dbline 23
; hz_tran(4,1,"温度");
	ldi R24,<L6
	ldi R25,>L6
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,4
	xcall _hz_tran
	.dbline 24
; hz_tran(6,3,"返回");
	ldi R24,<L7
	ldi R25,>L7
	std y+1,R25
	std y+0,R24
	ldi R18,3
	ldi R16,6
	xcall _hz_tran
	.dbline 25
; write_ASCII(0xf9,13,48,69);//E
	ldi R24,69
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,48
	std y+1,R25
	std y+0,R24
	ldi R18,13
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 26
; write_ASCII(0xf9,14,48,115);//s
	ldi R24,115
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,48
	std y+1,R25
	std y+0,R24
	ldi R18,14
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 27
; write_ASCII(0xf9,15,48,99);//c
	ldi R24,99
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,48
	std y+1,R25
	std y+0,R24
	ldi R18,15
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 28
; write_hazi(4,1,week1[week-1],week2[week-1]);//一,二,三,四,五,六,日
	ldi R24,<_week2-1
	ldi R25,>_week2-1
	lds R30,_week
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,<_week1-1
	ldi R25,>_week1-1
	lds R30,_week
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,1
	ldi R19,0
	ldi R16,4
	ldi R17,0
	xcall _write_hazi
	.dbline 29
; write_ASCII(0xf9,4,0,table1[year/1000]);//年第四位
	ldi R18,1000
	ldi R19,3
	lds R16,_year
	lds R17,_year+1
	xcall div16u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	clr R2
	std y+1,R3
	std y+0,R2
	ldi R18,4
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 30
; write_ASCII(0xf9,5,0,table1[year%1000/100]);//年第三位		
	ldi R18,1000
	ldi R19,3
	lds R16,_year
	lds R17,_year+1
	xcall mod16u
	ldi R18,100
	ldi R19,0
	xcall div16u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	clr R2
	std y+1,R3
	std y+0,R2
	ldi R18,5
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 31
; write_ASCII(0xf9,6,0,table1[year%1000%100/10]);//年第二位
	ldi R18,1000
	ldi R19,3
	lds R16,_year
	lds R17,_year+1
	xcall mod16u
	ldi R18,100
	ldi R19,0
	xcall mod16u
	ldi R18,10
	ldi R19,0
	xcall div16u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	clr R2
	std y+1,R3
	std y+0,R2
	ldi R18,6
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 32
; write_ASCII(0xf9,7,0,table1[year%1000%100%10]);//年第一位
	ldi R18,1000
	ldi R19,3
	lds R16,_year
	lds R17,_year+1
	xcall mod16u
	ldi R18,100
	ldi R19,0
	xcall mod16u
	ldi R18,10
	ldi R19,0
	xcall mod16u
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	clr R2
	std y+1,R3
	std y+0,R2
	ldi R18,7
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 33
; write_ASCII(0xf9,10,0,table1[month/10]);//月份高位
	ldi R18,10
	ldi R19,0
	lds R16,_month
	clr R17
	xcall div16s
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	clr R2
	std y+1,R3
	std y+0,R2
	ldi R18,10
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 34
; write_ASCII(0xf9,11,0,table1[month%10]);//月份低位
	ldi R18,10
	ldi R19,0
	lds R16,_month
	clr R17
	xcall mod16s
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	clr R2
	std y+1,R3
	std y+0,R2
	ldi R18,11
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 35
; write_ASCII(0xf9,14,0,table1[day/10]);//日期高位
	ldi R18,10
	ldi R19,0
	lds R16,_day
	clr R17
	xcall div16s
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	clr R2
	std y+1,R3
	std y+0,R2
	ldi R18,14
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 36
; write_ASCII(0xf9,15,0,table1[day%10]);//日期低位
	ldi R18,10
	ldi R19,0
	lds R16,_day
	clr R17
	xcall mod16s
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	clr R2
	std y+1,R3
	std y+0,R2
	ldi R18,15
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 37
; write_ASCII(0xf9,8,32,table1[hour/10]);//小时高位
	ldi R18,10
	ldi R19,0
	lds R16,_hour
	clr R17
	xcall div16s
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,8
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 38
; write_ASCII(0xf9,9,32,table1[hour%10]);//小时地位
	ldi R18,10
	ldi R19,0
	lds R16,_hour
	clr R17
	xcall mod16s
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,9
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 39
; write_ASCII(0xf9,10,32,58); //:
	ldi R24,58
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,32
	std y+1,R25
	std y+0,R24
	ldi R18,10
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 40
; write_ASCII(0xf9,11,32,table1[minute/10]);//分钟高位
	ldi R18,10
	ldi R19,0
	lds R16,_minute
	clr R17
	xcall div16s
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,11
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 41
; write_ASCII(0xf9,12,32,table1[minute%10]);//分钟地位
	ldi R18,10
	ldi R19,0
	lds R16,_minute
	clr R17
	xcall mod16s
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,12
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 42
; write_ASCII(0xf9,13,32,58); //:	
	ldi R24,58
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,32
	std y+1,R25
	std y+0,R24
	ldi R18,13
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 43
; write_ASCII(0xf9,14,32,table1[second/10]);//秒钟高位	
	ldi R18,10
	ldi R19,0
	lds R16,_second
	clr R17
	xcall div16s
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,14
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 44
; write_ASCII(0xf9,15,32,table1[second%10]);//秒钟地位
	ldi R18,10
	ldi R19,0
	lds R16,_second
	clr R17
	xcall mod16s
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,15
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 45
; write_ASCII(0xf9,16,16,table1[temp/10]);//温度高位	
	ldi R18,10
	ldi R19,0
	lds R16,_temp
	clr R17
	xcall div16s
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,16
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,16
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 46
; write_ASCII(0xf9,17,16,table1[temp%10]);//温度地位
	ldi R18,10
	ldi R19,0
	lds R16,_temp
	clr R17
	xcall mod16s
	movw R30,R16
	ldi R24,<_table1
	ldi R25,>_table1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,16
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,17
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline -2
L1:
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e get_days _get_days fc
;           tian -> R20
;            yue -> R20
	.even
_get_days::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 54
; 
; 
; }
; /**********************************************/
; 	        /* 确定天数*/
; /**********************************************/
; unsigned char get_days(unsigned char yue)
; {
	.dbline 56
;     unsigned char tian;
;     switch(yue)
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L14
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L16
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L14
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L15
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	breq L14
	cpi R20,6
	ldi R30,0
	cpc R21,R30
	breq L15
	cpi R20,7
	ldi R30,0
	cpc R21,R30
	breq L14
	cpi R20,8
	ldi R30,0
	cpc R21,R30
	breq L14
	cpi R20,9
	ldi R30,0
	cpc R21,R30
	breq L15
	cpi R20,10
	ldi R30,0
	cpc R21,R30
	breq L14
	cpi R20,11
	ldi R30,0
	cpc R21,R30
	breq L15
	cpi R20,12
	ldi R30,0
	cpc R21,R30
	breq L14
	xjmp L12
X0:
	.dbline 57
;     {
L14:
	.dbline 64
;       case 1:
;       case 3:
;       case 5:
;       case 7:
;       case 8:
;       case 10:
;       case 12:tian=31;break;
	ldi R20,31
	.dbline 64
	xjmp L12
L15:
	.dbline 68
;       case 4:
;       case 6:
;       case 9:
;       case 11:tian=30;break;
	ldi R20,30
	.dbline 68
	xjmp L12
L16:
	.dbline 69
;       case 2: if((year%4==0&&year%100!=0)||(year%400==0))tian=29;else tian=28;break;
	lds R24,_year
	lds R25,_year+1
	andi R24,3
	andi R25,0
	cpi R24,0
	cpc R24,R25
	brne L20
X1:
	ldi R18,100
	ldi R19,0
	lds R16,_year
	lds R17,_year+1
	xcall mod16u
	cpi R16,0
	cpc R16,R17
	brne L19
X2:
L20:
	ldi R18,400
	ldi R19,1
	lds R16,_year
	lds R17,_year+1
	xcall mod16u
	cpi R16,0
	cpc R16,R17
	brne L17
X3:
L19:
	.dbline 69
	ldi R20,29
	xjmp L12
L17:
	.dbline 69
	ldi R20,28
	.dbline 69
	.dbline 70
;       default:break;
L12:
	.dbline 72
;      }
;      return  tian;
	mov R16,R20
	.dbline -2
L10:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r tian 20 c
	.dbsym r yue 20 c
	.dbend
	.dbfunc e timer0_init _timer0_init fV
	.even
_timer0_init::
	.dbline -1
	.dbline 79
; }
; 
; /**********************************************/
; 	 /* 定时器初始化 1秒*/
; /**********************************************/
; void timer0_init(void)
; {
	.dbline 80
;  TCCR0 = 0x00; //stop
	clr R2
	out 0x33,R2
	.dbline 81
;  ASSR = 0x08; //set async mode
	ldi R24,8
	out 0x30,R24
	.dbline 82
;  TCNT0 = 0x00; //set count
	out 0x32,R2
	.dbline 83
;  TCCR0 = 0x05; //start timer 128分频
	ldi R24,5
	out 0x33,R24
	.dbline -2
L21:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 64
	jmp _timer0_ovf_isr
	.area text(rom, con, rel)
	.dbfile F:\调试\万年历.c
	.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
	.even
_timer0_ovf_isr::
	xcall push_lset
	.dbline -1
	.dbline 90
; }
; /**********************************************/
; 	 /* 定时器中断服务程序*/
; /**********************************************/
; #pragma interrupt_handler timer0_ovf_isr:17
; void timer0_ovf_isr(void)
; {
	.dbline 91
;  second=second+1;
	lds R24,_second
	subi R24,255    ; addi 1
	sts _second,R24
	.dbline 92
;  if(second==60)
	cpi R24,60
	breq X4
	xjmp L23
X4:
	.dbline 93
;  {
	.dbline 94
;     second=0;
	clr R2
	sts _second,R2
	.dbline 95
; 	minute=minute+1;
	lds R24,_minute
	subi R24,255    ; addi 1
	sts _minute,R24
	.dbline 96
; 	if(minute==60)
	cpi R24,60
	breq X5
	xjmp L25
X5:
	.dbline 97
; 	{
	.dbline 98
; 	   minute=0;
	sts _minute,R2

⌨️ 快捷键说明

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