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

📄 time.s

📁 ATmegal128的混合中断编程
💻 S
📖 第 1 页 / 共 2 页
字号:
;           step -> R10
;           temp -> R22
	.even
_timecal::
	xcall push_gset5
	sbiw R28,3
	.dbline -1
	.dbline 111
; void timecal(void)
;    {
	.dbline 113
;     unsigned char temp,step;
; 	ocmj_write(0xf4);
	ldi R16,244
	xcall _ocmj_write
	.dbline 114
; 	hz_tran(2,1,"输入时间");
	ldi R24,<L39
	ldi R25,>L39
	std y+0,R24
	std y+1,R25
	ldi R18,1
	ldi R16,2
	xcall _hz_tran
	.dbline 115
; 	hz_tran(1,2,"按");
	ldi R24,<L40
	ldi R25,>L40
	std y+0,R24
	std y+1,R25
	ldi R18,2
	ldi R16,1
	xcall _hz_tran
	.dbline 116
; 	asc_tran(4,36,"SHIFT");
	ldi R24,<L41
	ldi R25,>L41
	std y+0,R24
	std y+1,R25
	ldi R18,36
	ldi R16,4
	xcall _asc_tran
	.dbline 117
; 	hz_tran(5,2,"确定");
	ldi R24,<L42
	ldi R25,>L42
	std y+0,R24
	std y+1,R25
	ldi R18,2
	ldi R16,5
	xcall _hz_tran
	.dbline 118
; 	asc_tran(4,52,"__:__:__");
	ldi R24,<L43
	ldi R25,>L43
	std y+0,R24
	std y+1,R25
	ldi R18,52
	ldi R16,4
	xcall _asc_tran
	.dbline 119
; 	for(temp=0;temp<9;temp++)
	clr R22
	xjmp L47
L44:
	.dbline 120
	.dbline 121
	ldi R24,<_time
	ldi R25,>_time
	mov R30,R22
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,95
	std z+0,R24
	.dbline 122
L45:
	.dbline 119
	inc R22
L47:
	.dbline 119
	cpi R22,9
	brlo L44
	.dbline 123
; 	   {
; 	    time[temp]='_';
; 	   }
; 	time[2]=':';
	ldi R24,58
	sts _time+2,R24
	.dbline 124
; 	time[5]=':';
	sts _time+5,R24
	.dbline 125
; 	time[8]=0;   
	clr R2
	sts _time+8,R2
	.dbline 126
; 	step=0;
	clr R10
L51:
	.dbline 128
; 	do
; 	  {
	.dbline 129
; 	   temp=keypad();
	xcall _keypad
	mov R22,R16
	.dbline 130
; 	   if(((temp&0x7f)!=0x7f)&((temp&0x7f)<0x0a))
	mov R24,R22
	andi R24,127
	cpi R24,127
	breq L56
	ldi R24,1
	ldi R25,0
	movw R14,R24
	xjmp L57
L56:
	clr R14
	clr R15
L57:
	mov R24,R22
	andi R24,127
	cpi R24,10
	brsh L58
	ldi R24,1
	ldi R25,0
	movw R12,R24
	xjmp L59
L58:
	clr R12
	clr R13
L59:
	movw R2,R14
	and R2,R12
	and R3,R13
	tst R2
	brne X0
	tst R3
	brne X3
	xjmp L54
X3:
X0:
	.dbline 131
; 	      {
	.dbline 132
; 		   switch (step)
	mov R20,R10
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L63
X1:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L66
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	brne X4
	xjmp L73
X4:
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	brne X5
	xjmp L77
X5:
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	brne X6
	xjmp L79
X6:
	cpi R20,5
	ldi R30,0
	cpc R21,R30
	brne X7
	xjmp L83
X7:
	xjmp L60
X2:
	.dbline 133
; 		       {
L63:
	.dbline 134
; 			    case 0:{
	.dbline 135
; 					    if (temp<3)
	cpi R22,3
	brlo X8
	xjmp L61
X8:
	.dbline 136
; 					       {
	.dbline 137
; 						    hour=temp*10;
	ldi R24,10
	mul R24,R22
	sts _hour,R0
	.dbline 138
; 							time[0]=temp+0x30;
	mov R24,R22
	subi R24,208    ; addi 48
	sts _time,R24
	.dbline 139
; 							step++;
	inc R10
	.dbline 140
; 						   }
	.dbline 141
; 					    break;	   						   
	xjmp L61
L66:
	.dbline 143
; 					   }
; 				case 1:{
	.dbline 144
; 					    if(hour<20)
	lds R24,_hour
	cpi R24,20
	brsh L67
	.dbline 145
; 						  {
	.dbline 146
; 						   hour+=temp;
	mov R2,R24
	add R2,R22
	sts _hour,R2
	.dbline 147
; 						   time[1]=temp+0x30;
	mov R24,R22
	subi R24,208    ; addi 48
	sts _time+1,R24
	.dbline 148
; 						   step++;
	inc R10
	.dbline 149
; 						  }
	xjmp L61
L67:
	.dbline 151
; 						else
; 						  {
	.dbline 152
; 						   if(temp<4)
	cpi R22,4
	brlo X9
	xjmp L61
X9:
	.dbline 153
; 						     {
	.dbline 154
; 						      hour+=temp;
	lds R2,_hour
	add R2,R22
	sts _hour,R2
	.dbline 155
; 						      time[1]=temp+0x30;
	mov R24,R22
	subi R24,208    ; addi 48
	sts _time+1,R24
	.dbline 156
; 						      step++;							  
	inc R10
	.dbline 157
; 							 }
	.dbline 158
; 						  }
	.dbline 159
; 						break;  
	xjmp L61
L73:
	.dbline 161
; 					   }
; 				case 2:{
	.dbline 162
; 				        if (temp<6)
	cpi R22,6
	brlo X10
	xjmp L61
X10:
	.dbline 163
; 						   {
	.dbline 164
; 						    minute=temp*10;
	ldi R24,10
	mul R24,R22
	sts _minute,R0
	.dbline 165
; 							time[3]=temp+0x30;
	mov R24,R22
	subi R24,208    ; addi 48
	sts _time+3,R24
	.dbline 166
; 							step++;						    
	inc R10
	.dbline 167
; 						   }
	.dbline 168
; 						break;   
	xjmp L61
L77:
	.dbline 170
; 				       }
; 				case 3:{
	.dbline 171
; 				        minute+=temp;
	lds R2,_minute
	add R2,R22
	sts _minute,R2
	.dbline 172
; 						time[4]=temp+0x30;
	mov R24,R22
	subi R24,208    ; addi 48
	sts _time+4,R24
	.dbline 173
; 						step++;
	inc R10
	.dbline 174
; 						break;
	xjmp L61
L79:
	.dbline 176
; 				       }
; 				case 4:{
	.dbline 177
; 				        if(temp<6)
	cpi R22,6
	brsh L61
	.dbline 178
; 						  {
	.dbline 179
; 						   second=second*10;
	lds R2,_second
	ldi R24,10
	mul R24,R2
	sts _second,R0
	.dbline 180
; 						   time[6]=temp+0x30;
	mov R24,R22
	subi R24,208    ; addi 48
	sts _time+6,R24
	.dbline 181
; 						   step++;
	inc R10
	.dbline 182
; 						  }
	.dbline 183
; 						break;  
	xjmp L61
L83:
	.dbline 185
; 				       }				  
; 				case 5:{
	.dbline 186
; 				        second+=temp;
	lds R2,_second
	add R2,R22
	sts _second,R2
	.dbline 187
; 					    time[7]=temp+0x30;
	mov R24,R22
	subi R24,208    ; addi 48
	sts _time+7,R24
	.dbline 188
; 						step++;
	inc R10
	.dbline 189
; 						break;
	xjmp L61
L60:
	.dbline 192
; 				       }
; 				default:
; 				        {
	.dbline 193
; 	                     for(step=0;step<9;step++)
	clr R10
	xjmp L88
L85:
	.dbline 194
	.dbline 195
	ldi R24,<_time
	ldi R25,>_time
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,95
	std z+0,R24
	.dbline 196
L86:
	.dbline 193
	inc R10
L88:
	.dbline 193
	mov R24,R10
	cpi R24,9
	brlo L85
	.dbline 197
; 	                        {
; 	                         time[step]='_';
;                         	}
; 	                     time[2]=':';
	ldi R24,58
	sts _time+2,R24
	.dbline 198
; 	                     time[5]=':';
	sts _time+5,R24
	.dbline 199
; 	                     time[8]=0;   
	clr R2
	sts _time+8,R2
	.dbline 200
; 	                     step=0;						
	clr R10
	.dbline 201
; 						}			   
	.dbline 202
; 			   }
L61:
	.dbline 203
; 		   cls(0,3,1,8);
	ldi R24,8
	std y+2,R24
	ldi R24,1
	std y+0,R24
	ldi R18,3
	ldi R19,0
	clr R16
	clr R17
	xcall _cls
	.dbline 204
; 	       asc_tran(4,52,time);
	ldi R24,<_time
	ldi R25,>_time
	std y+0,R24
	std y+1,R25
	ldi R18,52
	ldi R16,4
	xcall _asc_tran
	.dbline 205
; 		  }
L54:
	.dbline 206
; 	  }
L52:
	.dbline 207
; 	while((temp&0x80)!=0x80);  
	mov R24,R22
	andi R24,128
	cpi R24,128
	breq X11
	xjmp L51
X11:
	.dbline -2
	.dbline 208
;    }
L38:
	adiw R28,3
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r step 10 c
	.dbsym r temp 22 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\work\mega128\mix_exp\time.c
_time::
	.blkb 9
	.dbsym e time _time A[9:9]c
_hour::
	.blkb 1
	.dbsym e hour _hour c
_minute::
	.blkb 1
	.dbsym e minute _minute c
_second::
	.blkb 1
	.dbsym e second _second c
	.area data(ram, con, rel)
	.dbfile C:\work\mega128\mix_exp\time.c
L43:
	.blkb 9
	.area idata
	.byte 95,95,58,95,95,58,95,95,0
	.area data(ram, con, rel)
	.dbfile C:\work\mega128\mix_exp\time.c
L42:
	.blkb 5
	.area idata
	.byte 200,183,182,168,0
	.area data(ram, con, rel)
	.dbfile C:\work\mega128\mix_exp\time.c
L41:
	.blkb 6
	.area idata
	.byte 'S,'H,'I,'F,'T,0
	.area data(ram, con, rel)
	.dbfile C:\work\mega128\mix_exp\time.c
L40:
	.blkb 3
	.area idata
	.byte 176,180,0
	.area data(ram, con, rel)
	.dbfile C:\work\mega128\mix_exp\time.c
L39:
	.blkb 9
	.area idata
	.byte 202,228,200,235,202,177,188,228,0
	.area data(ram, con, rel)
	.dbfile C:\work\mega128\mix_exp\time.c

⌨️ 快捷键说明

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