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

📄 bi2.s

📁 驱动320240
💻 S
📖 第 1 页 / 共 4 页
字号:
	.even
_time_change::
	.dbline -1
	.dbline 532
;  else
;  {
;   LCD_RS_PORT&=~LCD_RS;   //RS=0
;   LCD_DATA_PORT&=0XF0;
;   LCD_DATA_PORT|=(command_temp>>4)&0x0F; //写高四位
;   LCD_en_write();
;  // command_temp=command_temp<<4;
;   LCD_DATA_PORT&=0xF0;
;   LCD_DATA_PORT|=command_temp&0x0F;  //写低四位
;   LCD_en_write();
;   }
; }
; /***************************************
;            T2初始化,中断
; ****************************************/
; 
; 
; 
; 
; void time_change(void)
; {
	.dbline 533
; if(time[0][0]<60)
	lds R24,_time
	cpi R24,60
	brsh L97
	.dbline 534
;   return;
	xjmp L96
L97:
	.dbline 536
;   else
;   {time[0][0]-=60;
	.dbline 536
	lds R24,_time
	subi R24,60
	sts _time,R24
	.dbline 537
;   if(time[0][1]<59)
	lds R24,_time+1
	cpi R24,59
	brsh L99
	.dbline 538
;   time[0][1]++;
	subi R24,255    ; addi 1
	sts _time+1,R24
	xjmp L100
L99:
	.dbline 540
;   else
;   {
	.dbline 541
;     time[0][1]=0;
	clr R2
	sts _time+1,R2
	.dbline 542
; 	if(time[0][2]<23)
	lds R24,_time+2
	cpi R24,23
	brsh L104
	.dbline 543
; 	time[0][2]++;
	subi R24,255    ; addi 1
	sts _time+2,R24
	xjmp L105
L104:
	.dbline 545
; 	else
; 	time[0][2]=0;
	clr R2
	sts _time+2,R2
L105:
	.dbline 546
; 	}
L100:
	.dbline 547
;     }
	.dbline -2
L96:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e t2_init _t2_init fV
	.even
_t2_init::
	.dbline -1
	.dbline 552
; 
; }
; 
; void t2_init()
; {
	.dbline 553
; ASSR=(1<<AS2);
	ldi R24,8
	out 0x22,R24
	.dbline 554
; TCNT2=0XE0;
	ldi R24,224
	out 0x24,R24
	.dbline 555
; TCCR2=(7<<CS20);
	ldi R24,7
	out 0x25,R24
	.dbline 556
; TIMSK|=(1<<TOIE2);									 
	in R24,0x39
	ori R24,64
	out 0x39,R24
	.dbline -2
L109:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 16
	jmp _t2_iov
	.area text(rom, con, rel)
	.dbfile E:\temp\avr\bi2\bi2.c
	.dbfunc e t2_iov _t2_iov fV
	.even
_t2_iov::
	xcall push_lset
	.dbline -1
	.dbline 560
; }
; #pragma interrupt_handler t2_iov:5
; void t2_iov(void)
; {
	.dbline 561
; TCNT2=0XE0;
	ldi R24,224
	out 0x24,R24
	.dbline 562
; time[0][0]++;
	lds R24,_time
	subi R24,255    ; addi 1
	sts _time,R24
	.dbline 563
; time_change();
	xcall _time_change
	.dbline -2
L110:
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e disp_temp _disp_temp fV
;              q -> y+8
;              y -> R20
;              x -> R22
	.even
_disp_temp::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	sbiw R28,4
	.dbline -1
	.dbline 569
; }
; 
; 
; 
; void disp_temp(unsigned char x,unsigned char y,unsigned char q)
; {
	.dbline 570
; if(q==1)
	ldd R24,y+8
	cpi R24,1
	brne L112
	.dbline 571
; {LCD_write_string(0,1,"alarm clock: ");
	.dbline 571
	ldi R24,<L114
	ldi R25,>L114
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	xcall _LCD_write_string
	.dbline 572
; 	if(alarmfalg==1)
	lds R24,_alarmfalg
	cpi R24,1
	brne L115
	.dbline 573
; 	{LCD_write_string(13,1,"on ");}
	.dbline 573
	ldi R24,<L117
	ldi R25,>L117
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,13
	xcall _LCD_write_string
	.dbline 573
	xjmp L116
L115:
	.dbline 575
; 	else
; 	{LCD_write_string(13,1,"off");}
	.dbline 575
	ldi R24,<L118
	ldi R25,>L118
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,13
	xcall _LCD_write_string
	.dbline 575
L116:
	.dbline 576
; }
L112:
	.dbline 577
; LCD_write_string(0,y,"time:");
	ldi R24,<L119
	ldi R25,>L119
	std y+1,R25
	std y+0,R24
	mov R18,R20
	clr R16
	xcall _LCD_write_string
	.dbline 579
; 
; LCD_write_ch(6,y,2,time[change/10][2]);
	ldi R17,10
	lds R16,_change
	xcall div8u
	ldi R24,3
	mul R24,R16
	movw R30,R0
	ldi R24,<_time+2
	ldi R25,>_time+2
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,2
	std y+0,R24
	mov R18,R20
	ldi R16,6
	xcall _LCD_write_ch
	.dbline 580
; LCD_write_string(8,y,":");
	ldi R24,<L121
	ldi R25,>L121
	std y+1,R25
	std y+0,R24
	mov R18,R20
	ldi R16,8
	xcall _LCD_write_string
	.dbline 581
; LCD_write_ch(9,y,2,time[change/10][1]);
	ldi R17,10
	lds R16,_change
	xcall div8u
	ldi R24,3
	mul R24,R16
	movw R30,R0
	ldi R24,<_time+1
	ldi R25,>_time+1
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,2
	std y+0,R24
	mov R18,R20
	ldi R16,9
	xcall _LCD_write_ch
	.dbline 582
; LCD_write_string(11,y,":");
	ldi R24,<L121
	ldi R25,>L121
	std y+1,R25
	std y+0,R24
	mov R18,R20
	ldi R16,11
	xcall _LCD_write_string
	.dbline 583
; LCD_write_ch(12,y,2,time[change/10][0]);
	ldi R17,10
	lds R16,_change
	xcall div8u
	ldi R24,3
	mul R24,R16
	movw R30,R0
	ldi R24,<_time
	ldi R25,>_time
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	std y+3,R3
	std y+2,R2
	ldi R24,2
	std y+0,R24
	mov R18,R20
	ldi R16,12
	xcall _LCD_write_ch
	.dbline -2
L111:
	adiw R28,4
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l q 8 c
	.dbsym r y 20 c
	.dbsym r x 22 c
	.dbend
	.dbfunc e get_key _get_key fc
;         tempn0 -> R16
;           temp -> R16
	.even
_get_key::
	.dbline -1
	.dbline 589
; 
; }
; 
; 
; char get_key()
; {
	.dbline 591
; unsigned char temp,tempn0;
; temp=PINA&0XF0;
	in R16,0x19
	andi R16,240
	.dbline 592
; switch (temp)
	clr R17
	cpi R16,176
	ldi R30,0
	cpc R17,R30
	breq L129
	ldi R24,176
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brlt L132
L131:
	cpi R16,112
	ldi R30,0
	cpc R17,R30
	breq L130
	xjmp L124
L132:
	cpi R16,208
	ldi R30,0
	cpc R17,R30
	breq L128
	cpi R16,208
	ldi R30,0
	cpc R17,R30
	brlt L124
L133:
	cpi R16,224
	ldi R30,0
	cpc R17,R30
	breq L127
	xjmp L124
X3:
	.dbline 593
; {
L127:
	.dbline 594
; case 0xe0:tempn0=1;break;
	ldi R16,1
	.dbline 594
	xjmp L125
L128:
	.dbline 595
; case 0xd0:tempn0=2;break;
	ldi R16,2
	.dbline 595
	xjmp L125
L129:
	.dbline 596
; case 0xb0:tempn0=3;break;
	ldi R16,3
	.dbline 596
	xjmp L125
L130:
	.dbline 597
; case 0x70:tempn0=4;break;
	ldi R16,4
	.dbline 597
L124:
L125:
	.dbline 600
; 
; }
; return tempn0;
	.dbline -2
L123:
	.dbline 0 ; func end
	ret
	.dbsym r tempn0 16 c
	.dbsym r temp 16 c
	.dbend
	.dbfunc e sys_init _sys_init fV
	.even
_sys_init::
	.dbline -1
	.dbline 604
; }
; 
; void sys_init()
; {
	.dbline 605
; DDRA=0X0F;
	ldi R24,15
	out 0x1a,R24
	.dbline 606
; PORTA=0XFF;
	ldi R24,255
	out 0x1b,R24
	.dbline 607
; DDRC=0XFF;
	out 0x14,R24
	.dbline 608
; PORTC=0XFF;
	out 0x15,R24
	.dbline 609
; LCD_DATA_DDR=0XFF;
	out 0x11,R24
	.dbline 610
; DDRB=0B10110000;
	ldi R24,176
	out 0x17,R24
	.dbline 611
; SEI();
	sei
	.dbline -2
L134:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e disp_change _disp_change fV
	.even
_disp_change::
	xcall push_gset1
	sbiw R28,4
	.dbline -1
	.dbline 615
; }
; 
; void disp_change()
; {
	.dbline 616
; if((change/10)!=0)
	ldi R17,10
	lds R16,_change
	xcall div8u
	tst R16
	breq L136
	.dbline 617
; {
	.dbline 618
;  LCD_write_string(0,0,"alarm  ");
	ldi R24,<L138
	ldi R25,>L138
	std y+1,R25
	std y+0,R24
	clr R18
	clr R16
	xcall _LCD_write_string
	.dbline 619
; LCD_write_ch(7,0,1,change/10);
	ldi R18,10
	ldi R19,0
	lds R16,_change
	clr R17
	xcall div16s
	std y+3,R17
	std y+2,R16
	ldi R24,1
	std y+0,R24
	clr R18
	ldi R16,7
	xcall _LCD_write_ch
	.dbline 620
; }
	xjmp L137
L136:
	.dbline 622
; else
; { LCD_write_string(0,0,"set time");
	.dbline 622
	ldi R24,<L139
	ldi R25,>L139
	std y+1,R25
	std y+0,R24
	clr R18
	clr R16
	xcall _LCD_write_string
	.dbline 623
; }
L137:
	.dbline 624
; switch(change%10)
	ldi R18,10
	ldi R19,0
	lds R16,_change
	clr R17
	xcall mod16s
	movw R20,R16
	cpi R16,0
	cpc R16,R17
	breq L143
X4:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L145
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L147
	xjmp L140
X5:
	.dbline 625
; {
L143:
	.dbline 626
; case 0: LCD_write_string(9,0,"second");break;
	ldi R24,<L144
	ldi R25,>L144
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,9
	xcall _LCD_write_string
	.dbline 626
	xjmp L141
L145:
	.dbline 627
; case 1: LCD_write_string(9,0,"mintue");break;
	ldi R24,<L146
	ldi R25,>L146
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,9
	xcall _LCD_write_string
	.dbline 627
	xjmp L141
L147:
	.dbline 628
; case 2: LCD_write_string(9,0,"hour  ");break;
	ldi R24,<L148
	ldi R25,>L148
	std y+1,R25
	std y+0,R24
	clr R18
	ldi R16,9
	xcall _LCD_write_string
	.dbline 628
L140:
L141:
	.dbline -2
L135:
	adiw R28,4
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e changetime _changetime fV
	.even
_changetime::
	.dbline -1
	.dbline 634
; }
; 
; }
; 
; void changetime()
; {
	.dbline 635
; if(change%10==0)
	ldi R17,10
	lds R16,_change
	xcall mod8u
	tst R16
	brne L150
	.dbline 636
; {time[change/10][0]=0;}
	.dbline 636
	ldi R17,10
	lds R16,_change
	xcall div8u
	ldi R24,3
	mul R24,R16
	movw R30,R0
	ldi R24,<_time
	ldi R25,>_time
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 636
	xjmp L151
L150:
	.dbline 637
; else if(change%10==1)
	ldi R17,10
	lds R16,_change
	xcall mod8u
	cpi R16,1
	breq X6
	xjmp L152
X6:
	.dbline 638
; {if(time[change/10][1]==255)
	.dbline 638
	ldi R17,10
	lds R16,_change
	xcall div8u
	ldi R24,3
	mul R24,R16
	movw R30,R0
	ldi R24,<_time+1
	ldi R25,>_time+1
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,255
	brne L154
	.dbline 639
;    {time[change/10][1]=59;}
	.dbline 639
	ldi R17,10
	lds R16,_change
	xcall div8u
	ldi R24,3
	mul R24,R16
	movw R30,R0
	ldi R24,<_time+1
	ldi R25,>_time+1
	add R30,R24
	adc R31,R25
	ldi R24,59
	std z+0,R24
	.dbline 639
	xjmp L153
L154:
	.dbline 640
;  else if(time[change/10][1]==60)
	ldi R17,10
	lds R16,_change
	xcall div8u
	ldi R24,3
	mul R24,R16
	movw R30,R0
	ldi R24,<_time+1
	ldi R25,>_time+1
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,60
	breq X7
	xjmp L153
X7:
	.dbline 641
;    {time[change/10][1]=0;}
	.dbline 641
	ldi R17,10
	lds R16,_change
	xcall div8u
	ldi R24,3
	mul R24,R16
	movw R30,R0
	ldi R24,<_time+1
	ldi R25,>_time+1
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 641
	.dbline 642
; }
	xjmp L153
L152:
	.dbline 644
; 
; else if(change%10==2)
	ldi R17,10
	lds R16,_change
	xcall mod8u
	cpi R16,2
	breq X8
	xjmp L162
X8:
	.dbline 645
; {if(time[change/10][2]==255)
	.dbline 645
	ldi R17,10
	lds R16,_change
	xcall div8u
	ldi R24,3
	mul R24,R16
	movw R30,R0
	ldi R24,<_time+2
	ldi R25,>_time+2
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,255
	brne L164
	.dbline 646
;    {time[change/10][2]=23;}
	.dbline 646
	ldi R17,10
	lds R16,_change
	xcall div8u
	ldi R24,3
	mul R24,R16
	movw R30,R0
	ldi R24,<_time+2
	ldi R25,>_time+2
	add R30,R24
	adc R31,R25
	ldi R24,23
	std z+0,R24
	.dbline 646
	xjmp L165
L164:
	.dbline 647
;  else if(time[change/10][2]==24)
	ldi R17,10
	lds R16,_change
	xcall div8u
	ldi R24,3
	mul R24,R16
	movw R30,R0
	ldi R24,<_time+2
	ldi R25,>_time+2
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,24
	brne L168
	.dbline 648
;    {time[change/10][2]=0;}
	.dbline 648
	ldi R17,10
	lds R16,_change
	xcall div8u
	ldi R24,3
	mul R24,R16
	movw R30,R0
	ldi R24,<_time+2
	ldi R25,>_time+2
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 648
L168:
L165:
	.dbline 649
; }
L162:
L153:
L151:
	.dbline -2
L149:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e write_eep _write_eep fV
;              i -> <dead>
	.even
_write_eep::
	.dbline -1
	.dbline 655
; 
; 
; }
; 
; void write_eep()
; {
	.dbline 657
; unsigned char i;
; change=10;
	ldi R24,10
	sts _change,R24
	.dbline 658
; for(;;)
L173:
	.dbline 659
; {
	.dbline 660
;         if((change%10)==2)
	ldi R17,10
	lds R16,_change
	xcall mod8u
	cpi R16,2
	brne L177
	.dbline 661
;  	  	{if(change!=52)
	.dbline 661
	lds R24,_change
	cpi R24,52
	breq L179
	.dbline 662
; 		 {change=change+9;}
	.dbline 662
	subi R24,247    ; addi 9
	sts _change,R24
	.dbline 662
	xjmp L178
L179:
	.dbline 664
; 		 else
; 		 {change=0;mo=0;break;}
	.dbline 664
	clr R2
	sts _change,R2
	.dbline 664
	sts _mo,R2
	.dbline 664
	xjmp L175
X9:
	.dbline 665
; 		}
L177:
	.dbline 667
; 		else
; 		{change++;}
	.dbline 667
	lds R24,_change
	subi R24,255    ; addi 1
	sts _change,R24
	.dbline 667
L178:
	.dbline 668
	ldi R17,10
	lds R16,_change
	xcall div8u
	ldi R24,3
	mul R24,R16
	movw R2,R0

⌨️ 快捷键说明

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