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

📄 keyled.s

📁 avr单片机入门小程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	subi R24,255    ; addi 1
	sts _clock+1,R24
	.dbline 140
;    if(clock[1]==10)
	cpi R24,10
	brne L79
X27:
	.dbline 141
;    {
	.dbline 142
;    	clock[1]=0;
	sts _clock+1,R2
	.dbline 143
; 	clock[2]++;
	lds R24,_clock+2
	subi R24,255    ; addi 1
	sts _clock+2,R24
	.dbline 144
; 	if(clock[2]==10)
	cpi R24,10
	brne L84
X28:
	.dbline 145
; 	{
	.dbline 146
; 	 clock[2]=0;
	sts _clock+2,R2
	.dbline 147
; 	 clock[3]++;
	lds R24,_clock+3
	subi R24,255    ; addi 1
	sts _clock+3,R24
	.dbline 148
; 	  if(clock[3]==10)
	cpi R24,10
	brne L89
X29:
	.dbline 149
; 	  {
	.dbline 150
; 	  clock[3]=0;
	sts _clock+3,R2
	.dbline 151
; 	 clock[0]=0;
	sts _clock,R2
	.dbline 152
; 	 clock[1]=0;
	sts _clock+1,R2
	.dbline 153
; 	 clock[2]=0;
	sts _clock+2,R2
	.dbline 154
; 	 }
L89:
	.dbline 155
; 	}
L84:
	.dbline 156
;    }
L79:
	.dbline 157
;   }
L76:
	.dbline 158
;   }
L74:
	.dbline 159
;  } 
L72:
	.dbline 161
; 
;  display();
	xcall _display
	.dbline -2
L50:
	.dbline 0 ; func end
	ld R0,y+
	out 0x3f,R0
	ld R31,y+
	ld R30,y+
	ld R27,y+
	ld R26,y+
	ld R25,y+
	ld R24,y+
	ld R19,y+
	ld R18,y+
	ld R17,y+
	ld R16,y+
	ld R9,y+
	ld R8,y+
	ld R7,y+
	ld R6,y+
	ld R5,y+
	ld R4,y+
	ld R3,y+
	ld R2,y+
	ld R1,y+
	ld R0,y+
	reti
	.dbend
	.dbfunc e wait _wait fV
	.even
_wait::
	.dbline -1
	.dbline 165
; }   //timer0_com_isr
; 
; void wait()
; {
	xjmp L97
L96:
	.dbline 167
;  while((PINB&0xf0)!=0xf0)
;  {
	.dbline 168
;   delay(20);
	ldi R16,20
	ldi R17,0
	xcall _delay
L99:
	.dbline 170
;   while((PINB&0xf0)!=0xf0)
;   ;
L100:
	.dbline 169
	in R24,0x16
	andi R24,240
	cpi R24,240
	brne L99
X30:
	.dbline 171
;  }
L97:
	.dbline 166
	in R24,0x16
	andi R24,240
	cpi R24,240
	brne L96
X31:
	.dbline -2
L95:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;              i -> R20
	.even
_main::
	.dbline -1
	.dbline 174
; }
; void main()
; {
	.dbline 176
;  unsigned char i;
;  timer2=0;
	clr R2
	sts _timer2,R2
	.dbline 177
;  timer200=0;
	clr R3
	sts _timer200+1,R3
	sts _timer200,R2
	.dbline 178
;  work_state=0;
	sts _work_state,R2
	.dbline 179
;  time_change=0x00;
	sts _time_change,R2
	.dbline 180
;  clock_start=1; //停止跑表
	ldi R24,1
	sts _clock_start,R24
	.dbline 182
; /*  定时器0 定时 5 ms,general mode ,溢出 interrupt */ 
;  TCCR0=0x07;   //general mode
	ldi R24,7
	out 0x33,R24
	.dbline 184
;  //TCNT0=0x05;
;  TCNT0=0xd7;
	ldi R24,215
	out 0x32,R24
	.dbline 185
;  TIMSK=0x01;
	ldi R24,1
	out 0x37,R24
	.dbline 187
; 
;  DDRB=0x0f; //set PB7~PB4 PULL-UP resistor
	ldi R24,15
	out 0x17,R24
	.dbline 188
;  PORTB=0xfe;
	ldi R24,254
	out 0x18,R24
	.dbline 189
;  for(i=0;i<4;i++)
	clr R20
	xjmp L106
L103:
	.dbline 190
;  {
	.dbline 191
;   time[i]=0;
	ldi R24,<_time
	ldi R25,>_time
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 192
;   clock[i]=0;
	ldi R24,<_clock
	ldi R25,>_clock
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 193
;  }
L104:
	.dbline 189
	inc R20
L106:
	.dbline 189
	cpi R20,4
	brlo L103
X32:
	.dbline 194
;  SEI(); 
	sei
	xjmp L108
L110:
	.dbline 199
;  while(1)
;   {  
;  
; 	while((PINB&0xf0)==0xf0)
; 	 {
	.dbline 200
; 	  delay(20);
	ldi R16,20
	ldi R17,0
	xcall _delay
L113:
	.dbline 202
; 	  while((PINB&0xf0)==0xf0)
; 	   ;
L114:
	.dbline 201
	in R24,0x16
	andi R24,240
	cpi R24,240
	breq L113
X33:
	.dbline 203
; 	 }
L111:
	.dbline 198
	in R24,0x16
	andi R24,240
	cpi R24,240
	breq L110
X34:
	.dbline 204
; 	temp=PINB&0xf0;
	in R24,0x16
	andi R24,240
	sts _temp,R24
	.dbline 205
; 	 switch(temp)
	mov R22,R24
	clr R23
	cpi R22,176
	ldi R30,0
	cpc R23,R30
	brne X66
	xjmp L143
X66:
X35:
	ldi R24,176
	ldi R25,0
	cp R24,R22
	cpc R25,R23
	brlt L194
X36:
L193:
	cpi R22,112
	ldi R30,0
	cpc R23,R30
	brne X67
	xjmp L169
X67:
X37:
	xjmp L117
L194:
	cpi R22,208
	ldi R30,0
	cpc R23,R30
	breq L126
X38:
	cpi R22,208
	ldi R30,0
	cpc R23,R30
	brge X68
	xjmp L117
X68:
X39:
L195:
	cpi R22,224
	ldi R30,0
	cpc R23,R30
	breq L119
X40:
	xjmp L117
L119:
	.dbline 208
; 	 {
; 	 case 0xe0:  //key 0 
; 	  if(work_state==0)
	lds R2,_work_state
	tst R2
	brne L120
X41:
	.dbline 209
; 		 {
	.dbline 210
; 	 	  work_state=1;     //跑表模式
	ldi R24,1
	sts _work_state,R24
	.dbline 211
; 		  clock_start=1;    //跑表启动
	sts _clock_start,R24
	.dbline 212
; 		  for(i=0;i<4;i++)
	clr R20
	xjmp L125
L122:
	.dbline 213
; 		  clock[i]=0;
	ldi R24,<_clock
	ldi R25,>_clock
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
L123:
	.dbline 212
	inc R20
L125:
	.dbline 212
	cpi R20,4
	brlo L122
X42:
	.dbline 214
; 		 }
	xjmp L121
L120:
	.dbline 216
; 		else
; 		  work_state=0x00;
	clr R2
	sts _work_state,R2
L121:
	.dbline 217
; 		  clock_start=0;
	clr R2
	sts _clock_start,R2
	.dbline 218
; 		  wait();
	xcall _wait
	.dbline 219
; 		  break;
	xjmp L117
L126:
	.dbline 221
; 	case 0xd0:  //key 1
; 	     if(work_state==0x00)
	lds R2,_work_state
	tst R2
	brne L127
X43:
	.dbline 222
; 		 {
	.dbline 223
; 		  if(time_change==0x00)
	lds R2,_time_change
	tst R2
	brne L129
X44:
	.dbline 224
; 		    time_change=0x01;
	ldi R24,1
	sts _time_change,R24
	xjmp L130
L129:
	.dbline 225
; 		  else if(time_change==0x01)
	lds R24,_time_change
	cpi R24,1
	brne L131
X45:
	.dbline 226
; 		    time_change=0x02;
	ldi R24,2
	sts _time_change,R24
	xjmp L132
L131:
	.dbline 227
; 		  else if(time_change==0x02)
	lds R24,_time_change
	cpi R24,2
	brne L133
X46:
	.dbline 228
; 		    time_change=0x00;
	clr R2
	sts _time_change,R2
L133:
L132:
L130:
	.dbline 229
; 		}
L127:
	.dbline 231
; 		
; 		 if(work_state==0x01)  //跑表
	lds R24,_work_state
	cpi R24,1
	brne L135
X47:
	.dbline 232
; 		    {if(clock_start==0x0) //跑表已启动
	.dbline 232
	lds R2,_clock_start
	tst R2
	brne L137
X48:
	.dbline 233
; 		     {
	.dbline 234
; 			  for(i=0;i<4;i++)
	clr R20
	xjmp L142
L139:
	.dbline 235
; 			  clock[i]=0;
	ldi R24,<_clock
	ldi R25,>_clock
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
L140:
	.dbline 234
	inc R20
L142:
	.dbline 234
	cpi R20,4
	brlo L139
X49:
	.dbline 236
; 			 }
L137:
	.dbline 237
; 			 }
L135:
	.dbline 239
; 		
; 		wait();		     
	xcall _wait
	.dbline 240
; 		  break;
	xjmp L117
L143:
	.dbline 242
; 	 case 0xb0:  //key 2
; 	    if(work_state==0x0) // 计时模式
	lds R2,_work_state
	tst R2
	brne L144
X50:
	.dbline 243
; 		  {if(time_change==0x1) //change second
	.dbline 243
	lds R24,_time_change
	cpi R24,1
	brne L146
X51:
	.dbline 244
; 		   {time[0]++;
	.dbline 244
	lds R24,_time
	subi R24,255    ; addi 1
	sts _time,R24
	.dbline 245
; 		   if(time[0]==0xa)
	cpi R24,10
	brne L145
X52:
	.dbline 246
; 		    {time[0]=0;
	.dbline 246
	clr R2
	sts _time,R2
	.dbline 247
; 		     time[1]++;
	lds R24,_time+1
	subi R24,255    ; addi 1
	sts _time+1,R24
	.dbline 248
; 		     if(time[1]==0x6)
	cpi R24,6
	brne L145
X53:
	.dbline 249
; 		     time[1]=0;
	sts _time+1,R2
	.dbline 250
; 			}
	.dbline 251
; 		   }
	xjmp L145
L146:
	.dbline 252
; 		   else if(time_change==0x02)  //change minute
	lds R24,_time_change
	cpi R24,2
	brne L145
X54:
	.dbline 253
; 		   {
	.dbline 254
; 		    time[2]++;
	lds R24,_time+2
	subi R24,255    ; addi 1
	sts _time+2,R24
	.dbline 255
; 			if(time[2]==0xa)
	cpi R24,10
	brne L145
X55:
	.dbline 256
; 			{time[2]=0;
	.dbline 256
	clr R2
	sts _time+2,R2
	.dbline 257
; 			 time[3]++;
	lds R24,_time+3
	subi R24,255    ; addi 1
	sts _time+3,R24
	.dbline 258
; 			 if(time[3]==0x6)
	cpi R24,6
	brne L145
X56:
	.dbline 259
; 			 time[3]=0;
	sts _time+3,R2
	.dbline 260
; 			 }
	.dbline 261
; 		   }
	.dbline 262
; 		  }
	xjmp L145
L144:
	.dbline 263
; 		 else if(clock_start==0x00)   //跑表模式,已经启动
	lds R2,_clock_start
	tst R2
	brne L167
X57:
	.dbline 264
; 		 clock_start=1;     //暂停
	ldi R24,1
	sts _clock_start,R24
	xjmp L168
L167:
	.dbline 266
; 		 else
; 		  clock_start=0;
	clr R2
	sts _clock_start,R2
L168:
L145:
	.dbline 267
; 		 wait();
	xcall _wait
	.dbline 268
; 		  break;
	xjmp L117
L169:
	.dbline 270
; 	 case 0x70:  //key 3
; 	 	  if(work_state==0x00)  // 计时模式
	lds R2,_work_state
	tst R2
	brne L170
X58:
	.dbline 271
; 		   {
	.dbline 272
; 		   	if(time_change==0x01) // 秒
	lds R24,_time_change
	cpi R24,1
	brne L172
X59:
	.dbline 273
; 			{
	.dbline 274
; 			 time[0]--;
	lds R24,_time
	subi R24,1
	sts _time,R24
	.dbline 275
; 			 if(time[0]==0xff)
	cpi R24,255
	brne L173
X60:
	.dbline 276
; 			 {
	.dbline 277
; 			  time[0]=9;
	ldi R24,9
	sts _time,R24
	.dbline 278
; 			  time[1]--;
	lds R24,_time+1
	subi R24,1
	sts _time+1,R24
	.dbline 279
; 			  if(time[1]==0xff)
	cpi R24,255
	brne L173
X61:
	.dbline 280
; 			  time[1]=5;
	ldi R24,5
	sts _time+1,R24
	.dbline 281
; 			 }
	.dbline 282
; 			}
	xjmp L173
L172:
	.dbline 283
; 		   else if(time_change==0x02)  //decrease minute
	lds R24,_time_change
	cpi R24,2
	brne L181
X62:
	.dbline 284
; 		   {
	.dbline 285
; 		   	time[2]--;
	lds R24,_time+2
	subi R24,1
	sts _time+2,R24
	.dbline 286
; 			if(time[2]==0xff)
	cpi R24,255
	brne L184
X63:
	.dbline 287
; 			{
	.dbline 288
; 			 time[2]=9;
	ldi R24,9
	sts _time+2,R24
	.dbline 289
; 			 time[3]--;
	lds R24,_time+3
	subi R24,1
	sts _time+3,R24
	.dbline 290
; 			 if(time[3]==0xff)
	cpi R24,255
	brne L189
X64:
	.dbline 291
; 			 time[3]=5;
	ldi R24,5
	sts _time+3,R24
L189:
	.dbline 292
; 			}
L184:
	.dbline 293
; 		   }
L181:
L173:
	.dbline 294
; 		   }
L170:
	.dbline 295
; 		  wait();
	xcall _wait
	.dbline 296
; 		  break;
	.dbline 298
; 	default:
; 	     break;
L117:
	.dbline 301
; 	      
; 	}
;   }
L108:
	.dbline 195
	xjmp L111
X65:
	.dbline -2
L102:
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\按键显示\keyled.c
_clock::
	.blkb 4
	.dbsym e clock _clock A[4:4]c
_time::
	.blkb 4
	.dbsym e time _time A[4:4]c
_clock_start::
	.blkb 1
	.dbsym e clock_start _clock_start c
_time_change::
	.blkb 1
	.dbsym e time_change _time_change c
_work_state::
	.blkb 1
	.dbsym e work_state _work_state c
_timer200::
	.blkb 2
	.dbsym e timer200 _timer200 i
_timer2::
	.blkb 1
	.dbsym e timer2 _timer2 c
_temp::
	.blkb 1
	.dbsym e temp _temp c
; 
; }

⌨️ 快捷键说明

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