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

📄 2.s

📁 万年历 megal128 iccavr开发平台
💻 S
📖 第 1 页 / 共 3 页
字号:
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline -2
L35:
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e day_display _day_display fV
	.even
_day_display::
	sbiw R28,4
	.dbline -1
	.dbline 130
; }
; /**********************************************/
; 	 /* LCD显示星期年月日*/
; /**********************************************/
; void day_display(void)
; {
	.dbline 131
;    write_hazi(7,0,biao1[7],biao2[7]);//星
	ldi R30,<_biao2+7
	ldi R31,>_biao2+7
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R30,<_biao1+7
	ldi R31,>_biao1+7
	lpm R2,Z
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	clr R19
	ldi R16,7
	ldi R17,0
	xcall _write_hazi
	.dbline 132
;    write_hazi(8,0,biao1[8],biao2[8]);//期
	ldi R30,<_biao2+8
	ldi R31,>_biao2+8
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R30,<_biao1+8
	ldi R31,>_biao1+8
	lpm R2,Z
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	clr R19
	ldi R16,8
	ldi R17,0
	xcall _write_hazi
	.dbline 133
;    write_hazi(4,1,biao1[9],biao2[9]);//年
	ldi R30,<_biao2+9
	ldi R31,>_biao2+9
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R30,<_biao1+9
	ldi R31,>_biao1+9
	lpm R2,Z
	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 134
;    write_hazi(6,1,biao1[10],biao2[10]);//月
	ldi R30,<_biao2+10
	ldi R31,>_biao2+10
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R30,<_biao1+10
	ldi R31,>_biao1+10
	lpm R2,Z
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,1
	ldi R19,0
	ldi R16,6
	ldi R17,0
	xcall _write_hazi
	.dbline 135
;    write_hazi(8,1,biao1[11],biao2[11]);//日
	ldi R30,<_biao2+11
	ldi R31,>_biao2+11
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R30,<_biao1+11
	ldi R31,>_biao1+11
	lpm R2,Z
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,1
	ldi R19,0
	ldi R16,8
	ldi R17,0
	xcall _write_hazi
	.dbline 136
;    write_hazi(9,0,biao1[day-1],biao2[day-1]);//一,二,三,四,五,六,日
	ldi R24,<_biao2-1
	ldi R25,>_biao2-1
	lds R30,_day
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,<_biao1-1
	ldi R25,>_biao1-1
	lds R30,_day
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	clr R3
	std y+1,R3
	std y+0,R2
	clr R18
	clr R19
	ldi R16,9
	ldi R17,0
	xcall _write_hazi
	.dbline 137
;    write_ASCII(0xf9,4,16,table[year/1000]);//年第四位
	ldi R18,1000
	ldi R19,3
	lds R16,_year
	lds R17,_year+1
	xcall div16u
	movw R30,R16
	ldi R24,<_table
	ldi R25,>_table
	add R30,R24
	adc R31,R25
	lpm R2,Z
	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,4
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 138
;    write_ASCII(0xf9,5,16,table[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,<_table
	ldi R25,>_table
	add R30,R24
	adc R31,R25
	lpm R2,Z
	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,5
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 139
;    write_ASCII(0xf9,6,16,table[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,<_table
	ldi R25,>_table
	add R30,R24
	adc R31,R25
	lpm R2,Z
	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,6
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 140
;    write_ASCII(0xf9,7,16,table[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,<_table
	ldi R25,>_table
	add R30,R24
	adc R31,R25
	lpm R2,Z
	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,7
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 141
;    write_ASCII(0xf9,10,16,table[month/10]);//月份高位
	ldi R18,10
	ldi R19,0
	lds R16,_month
	clr R17
	xcall div16s
	movw R30,R16
	ldi R24,<_table
	ldi R25,>_table
	add R30,R24
	adc R31,R25
	lpm R2,Z
	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,10
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 142
;    write_ASCII(0xf9,11,16,table[month%10]);//月份低位
	ldi R18,10
	ldi R19,0
	lds R16,_month
	clr R17
	xcall mod16s
	movw R30,R16
	ldi R24,<_table
	ldi R25,>_table
	add R30,R24
	adc R31,R25
	lpm R2,Z
	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,11
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 143
;    write_ASCII(0xf9,14,16,table[days/10]);//日期高位
	ldi R18,10
	ldi R19,0
	lds R16,_days
	clr R17
	xcall div16s
	movw R30,R16
	ldi R24,<_table
	ldi R25,>_table
	add R30,R24
	adc R31,R25
	lpm R2,Z
	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,14
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline 144
;    write_ASCII(0xf9,15,16,table[days%10]);//日期低位
	ldi R18,10
	ldi R19,0
	lds R16,_days
	clr R17
	xcall mod16s
	movw R30,R16
	ldi R24,<_table
	ldi R25,>_table
	add R30,R24
	adc R31,R25
	lpm R2,Z
	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,15
	ldi R19,0
	ldi R16,249
	ldi R17,0
	xcall _write_ASCII
	.dbline -2
L36:
	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 150
; }
; /**********************************************/
; 	 /* 确定天数*/
; /**********************************************/
; unsigned char get_days(unsigned char yue)
; {
	.dbline 152
;     unsigned char tian;
;     switch(yue)
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L53
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L55
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L53
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L54
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	breq L53
	cpi R20,6
	ldi R30,0
	cpc R21,R30
	breq L54
	cpi R20,7
	ldi R30,0
	cpc R21,R30
	breq L53
	cpi R20,8
	ldi R30,0
	cpc R21,R30
	breq L53
	cpi R20,9
	ldi R30,0
	cpc R21,R30
	breq L54
	cpi R20,10
	ldi R30,0
	cpc R21,R30
	breq L53
	cpi R20,11
	ldi R30,0
	cpc R21,R30
	breq L54
	cpi R20,12
	ldi R30,0
	cpc R21,R30
	breq L53
	xjmp L51
X4:
	.dbline 153
;     {
L53:
	.dbline 160
;       case 1:
;       case 3:
;       case 5:
;       case 7:
;       case 8:
;       case 10:
;       case 12:tian=31;break;
	ldi R20,31
	.dbline 160
	xjmp L51
L54:
	.dbline 164
;       case 4:
;       case 6:
;       case 9:
;       case 11:tian=30;break;
	ldi R20,30
	.dbline 164
	xjmp L51
L55:
	.dbline 165
;       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 L59
X5:
	ldi R18,100
	ldi R19,0
	lds R16,_year
	lds R17,_year+1
	xcall mod16u
	cpi R16,0
	cpc R16,R17
	brne L58
X6:
L59:
	ldi R18,400
	ldi R19,1
	lds R16,_year
	lds R17,_year+1
	xcall mod16u
	cpi R16,0
	cpc R16,R17
	brne L56
X7:
L58:
	.dbline 165
	ldi R20,29
	xjmp L51
L56:
	.dbline 165
	ldi R20,28
	.dbline 165
	.dbline 166
;       default:break;
L51:
	.dbline 168
;      }
;      return  tian;
	mov R16,R20
	.dbline -2
L49:
	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 174
; }
; /**********************************************/
; 	 /* 定时器初始化 1秒*/
; /**********************************************/
; void timer0_init(void)
; {
	.dbline 175
;  TCCR0 = 0x00; //stop
	clr R2
	out 0x33,R2
	.dbline 176
;  ASSR = 0x08; //set async mode
	ldi R24,8
	out 0x30,R24
	.dbline 177
;  TCNT0 = 0x00; //set count
	out 0x32,R2
	.dbline 178
;  TCCR0 = 0x05; //start timer
	ldi R24,5
	out 0x33,R24
	.dbline -2
L60:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 64
	jmp _timer0_ovf_isr
	.area text(rom, con, rel)
	.dbfile E:\ATMEGA~1\万年历实验\2.c
	.dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
	.even
_timer0_ovf_isr::
	xcall push_lset
	.dbline -1
	.dbline 185
; }
; /**********************************************/
; 	 /* 定时器中断服务程序*/
; /**********************************************/
; #pragma interrupt_handler timer0_ovf_isr:17
; void timer0_ovf_isr(void)
; {
	.dbline 186
;  second=second+1;
	lds R24,_second
	subi R24,255    ; addi 1
	sts _second,R24
	.dbline 187
;  if(second==60)
	cpi R24,60
	breq X8
	xjmp L62
X8:
	.dbline 188
;  {
	.dbline 189
;     second=0;
	clr R2
	sts _second,R2
	.dbline 190
; 	minute=minute+1;
	lds R24,_minute
	subi R24,255    ; addi 1
	sts _minute,R24
	.dbline 191
; 	if(minute==60)
	cpi R24,60
	breq X9
	xjmp L64
X9:
	.dbline 192
; 	{
	.dbline 193
; 	   minute=0;
	sts _minute,R2
	.dbline 194
; 	   hour=hour+1;
	lds R24,_hour
	subi R24,255    ; addi 1
	sts _hour,R24
	.dbline 195
; 	   if(hour==24)
	cpi R24,24
	brne L66
	.dbline 196
; 	   {
	.dbline 197
; 		 hour=0;
	sts _hour,R2
	.dbline 198
; 		 day=day+1;
	lds R24,_day
	subi R24,255    ; addi 1
	sts _day,R24
	.dbline 199
; 		 if(day>7)
	ldi R24,7
	lds R2,_day
	cp R24,R2
	brsh L68
	.dbline 200
; 		  day=1;
	ldi R24,1
	sts _day,R24
L68:
	.dbline 201
; 		  days=days+1;
	lds R24,_days
	subi R24,255    ; addi 1
	sts _days,R24
	.dbline 202
; 		  if(days>get_days(month))
	lds R16,_month
	xcall _get_days
	lds R2,_days
	cp R16,R2
	brsh L70
	.dbline 203
; 		   {
	.dbline 204
; 		    days=1;
	ldi R24,1
	sts _days,R24
	.dbline 205
; 		    month=month+1;
	lds R24,_month
	subi R24,255    ; addi 1
	sts _month,R24
	.dbline 206
; 			if(month>12)
	ldi R24,12
	lds R2,_month
	cp R24,R2
	brsh L72
	.dbline 207
; 			 {
	.dbline 208
; 			  month=1;
	ldi R24,1
	sts _month,R24
	.dbline 209
; 			  year=year+1;
	lds R24,_year
	lds R25,_year+1
	adiw R24,1
	sts _year+1,R25
	sts _year,R24
	.dbline 210
; 			 }
L72:
	.dbline 211
; 		   }
L70:
	.dbline 213
; 		
; 	   }
L66:
	.dbline 214
;     }
L64:
	.dbline 215
;   }
L62:
	.dbline 216
	xcall _time_display
	.dbline 217
	lds R2,_flag
	tst R2
	brne L74
	.dbline 218
	.dbline 219
	xcall _day_display
	.dbline 220
L74:
	.dbline -2
L61:
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e lcd_time _lcd_time fV
	.even
_lcd_time::
	sbiw R28,4
	.dbline -1
	.dbline 226
;   time_display();//显示小时,分钟
;   if(flag==0)     //与最后面相照应 //如果没有标志位就不能起缓冲作用,边化快
;   {
;   day_display();//显示年月日
;   }			
; }
; /**********************************************/
; 	 /*写显示*/
; /**********************************************/
; void lcd_time(void)
; {
	.dbline 227
; write_ASCII(0xf9,4,0,table[lcd_buff[0]]);//小时高位
	ldi R24,<_table
	ldi R25,>_table
	lds R30,_lcd_buff
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	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 228
; write_ASCII(0xf9,5,0,table[lcd_buff[1]]);//小时地位
	ldi R24,<_table
	ldi R25,>_table
	lds R30,_lcd_buff+1
	clr R31
	add R30,R24
	adc R31,R25
	lpm R2,Z
	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 229
; write_ASCII(0xf9,6,0,58); //:
	ldi R24,58
	ldi R25,0
	std y+3,R25
	std y+2,R24
	clr R2
	clr R3
	std y+1,R3

⌨️ 快捷键说明

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