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

📄 clock.s

📁 单片机开发资料光盘-双龙-686M.zip
💻 S
📖 第 1 页 / 共 2 页
字号:
	subi R16,56	; addi 200
	rcall _write279
	.dbline 151
; 				   i=7;
	ldi R24,7
	mov R10,R24
	.dbline 152
; 				   write279(0x88,0x7f);
	ldi R18,127
	ldi R16,136
	rcall _write279
	.dbline 153
; 				   time.second=(time.second/10)*10+key;
	ldi R17,10
	lds R16,_time
	rcall div8s
	mov R17,R16
	ldi R16,10
	rcall mpy8s
	mov R2,R16
	add R2,R20
	sts _time,R2
	.dbline 154
; 				  }			  
	.dbline 155
; 			  break;	        	          
L60:
	.dbline 159
L61:
	.dbline 158
; 	         }		
; 	   }
;    while((PINC&0x02)==0)//按键释放检查
	sbis 0x13,1
	rjmp L60
	.dbline 160
;            ;	   	 		 
;    }    
L18:
	.dbline 161
;  while(key!=0x17);
	cpi R20,23
	breq X9
	rjmp L21
X9:
	.dbline 162
;  write279(0x88,0xff);
	ldi R18,255
	ldi R16,136
	rcall _write279
	.dbline -2
	.dbline 163
; }
L16:
	rcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r i 10 c
	.dbsym r key 20 c
	.dbfunc s opentime _opentime fI
	.even
_opentime::
	.dbline -1
	.dbline 166
; /*       设置定时器1及中断系统     */
; void opentime()
; {
	.dbline 168
;  
;  TCNT1=0x85ee;
	ldi R24,-31250
	ldi R25,-123
	sts 76+1,R25
	sts 76,R24
	.dbline 169
;  TCCR1A=0;
	clr R2
	out 0x2f,R2
	.dbline 170
;  TCCR1B=0x04;
	ldi R24,4
	out 0x2e,R24
	.dbline 171
;  TCNT0=0x83;
	ldi R24,131
	out 0x32,R24
	.dbline 172
;  TCCR0=0x03;
	ldi R24,3
	out 0x33,R24
	.dbline 173
;  TIMSK=0x04;
	ldi R24,4
	out 0x39,R24
	.dbline 174
;  SREG|=0x80;
	bset 7
	.dbline -2
	.dbline 175
; }
L63:
	.dbline 0 ; func end
	ret
	.dbfunc s display _display fI
	.even
_display::
	.dbline -1
	.dbline 178
; /*        显示刷新          */
; void display(void)
;    {
	.dbline 179
;     write279(0xc8,time.second%10);
	ldi R17,10
	lds R16,_time
	rcall mod8s
	mov R18,R16
	ldi R16,200
	rcall _write279
	.dbline 180
;     write279(0xc9,time.second/10);
	ldi R17,10
	lds R16,_time
	rcall div8s
	mov R18,R16
	ldi R16,201
	rcall _write279
	.dbline 181
;     write279(0x92,1);
	ldi R18,1
	ldi R16,146
	rcall _write279
	.dbline 182
;     write279(0xcb,time.minute%10);
	ldi R17,10
	lds R16,_time+1
	rcall mod8s
	mov R18,R16
	ldi R16,203
	rcall _write279
	.dbline 183
;     write279(0xcc,time.minute/10);
	ldi R17,10
	lds R16,_time+1
	rcall div8s
	mov R18,R16
	ldi R16,204
	rcall _write279
	.dbline 184
;     write279(0x95,1);
	ldi R18,1
	ldi R16,149
	rcall _write279
	.dbline 185
;     write279(0xce,time.hour%10);
	ldi R17,10
	lds R16,_time+2
	rcall mod8s
	mov R18,R16
	ldi R16,206
	rcall _write279
	.dbline 186
;     write279(0xcf,time.hour/10);
	ldi R17,10
	lds R16,_time+2
	rcall div8s
	mov R18,R16
	ldi R16,207
	rcall _write279
	.dbline -2
	.dbline 187
;    }
L64:
	.dbline 0 ; func end
	ret
	.dbfunc s inctime _inctime fI
	.even
_inctime::
	.dbline -1
	.dbline 190
; /*        正计时            */   
; void inctime(void)
;    {
	.dbline 191
;     if(time.second<59)
	lds R24,_time
	cpi R24,59
	brge L70
	.dbline 192
; 	   time.second++;
	lds R24,_time
	subi R24,255	; addi 1
	sts _time,R24
	rjmp L71
L70:
	.dbline 194
; 	else
; 	  {
	.dbline 195
; 	   time.second=0;
	clr R2
	sts _time,R2
	.dbline 196
; 	   if(time.minute<59)
	lds R24,_time+1
	cpi R24,59
	brge L72
	.dbline 197
; 	     time.minute++;
	lds R24,_time+1
	subi R24,255	; addi 1
	sts _time+1,R24
	rjmp L73
L72:
	.dbline 199
; 	   else
; 	     {
	.dbline 200
; 		  time.minute=0;
	clr R2
	sts _time+1,R2
	.dbline 201
; 		  if(time.hour<23)
	lds R24,_time+2
	cpi R24,23
	brge L77
	.dbline 202
; 		    time.hour++;
	lds R24,_time+2
	subi R24,255	; addi 1
	sts _time+2,R24
	rjmp L78
L77:
	.dbline 204
; 		  else
; 		    time.hour=0;	
	clr R2
	sts _time+2,R2
L78:
	.dbline 205
; 		 }	 
L73:
	.dbline 206
L71:
	.dbline -2
	.dbline 207
; 	  }   
;    }
L69:
	.dbline 0 ; func end
	ret
	.dbfunc s dectime _dectime fI
	.even
_dectime::
	.dbline -1
	.dbline 210
; /*          倒计时           */   
; void dectime(void)
;    {
	.dbline 211
;     if(time.second>0)
	clr R2
	lds R3,_time
	cp R2,R3
	brge L83
	.dbline 212
; 	   time.second--;
	lds R24,_time
	subi R24,1
	sts _time,R24
	rjmp L84
L83:
	.dbline 214
; 	else
; 	  {
	.dbline 215
; 	   time.second=59;
	ldi R24,59
	sts _time,R24
	.dbline 216
; 	   if(time.minute>0)
	clr R2
	lds R3,_time+1
	cp R2,R3
	brge L85
	.dbline 217
;   	      time.minute--;
	lds R24,_time+1
	subi R24,1
	sts _time+1,R24
	rjmp L86
L85:
	.dbline 219
; 	   else
; 	     {
	.dbline 220
; 		  time.minute=59;
	ldi R24,59
	sts _time+1,R24
	.dbline 221
; 		  if(time.hour>0)
	clr R2
	lds R3,_time+2
	cp R2,R3
	brge L90
	.dbline 222
; 		    time.hour--;
	lds R24,_time+2
	subi R24,1
	sts _time+2,R24
	rjmp L91
L90:
	.dbline 224
; 		  else
; 		    time.hour=23;	
	ldi R24,23
	sts _time+2,R24
L91:
	.dbline 225
; 		 }	 
L86:
	.dbline 226
L84:
	.dbline -2
	.dbline 227
; 	  }
;    }                        
L82:
	.dbline 0 ; func end
	ret
	.dbfunc s main _main fI
;           temp -> R22
;         bpflag -> R20
	.even
_main::
	.dbline -1
	.dbline 231
; /*启动时为正计时,按shift键进行正计时和倒计时切换    */
; /*启动时允许整点报时,按0~F中任意键一次关闭,二次打开*/
; void main(void)
; {
	.dbline 232
;  unsigned char temp,bpflag=0;
	clr R20
	.dbline 233
;  MCUCR=0x00;
	clr R2
	out 0x35,R2
	.dbline 234
;  DDRC=0b00011101;
	ldi R24,29
	out 0x14,R24
	.dbline 235
;  PORTC=0b00010001;
	ldi R24,17
	out 0x15,R24
	.dbline 236
;  delay_ms(30);
	ldi R16,30
	ldi R17,0
	rcall _delay_ms
	.dbline 237
;  send_byte(0xa4);
	ldi R16,164
	rcall _send_byte
	.dbline 238
;  setcs;
	sbi 0x15,4
	.dbline 238
	.dbline 239
;  initdis();
	rcall _initdis
	.dbline 240
;  opentime();
	rcall _opentime
	rjmp L97
L96:
	.dbline 242
;  while(1)
;    {
	.dbline 243
; 	if(flag==0x01)
	lds R24,_flag
	cpi R24,1
	brne L99
	.dbline 244
;       {
	.dbline 245
; 	   if(dflag==0)
	lds R2,_dflag
	tst R2
	brne L101
	.dbline 246
; 	     inctime();  
	rcall _inctime
	rjmp L102
L101:
	.dbline 248
; 	   else
; 	     dectime();
	rcall _dectime
L102:
	.dbline 249
; 	   display();
	rcall _display
	.dbline 250
; 	   flag=0;
	clr R2
	sts _flag,R2
	.dbline 251
; 	  }
L99:
	.dbline 252
; 	if((PINC&0x02)==0)//检查shift按键
	sbic 0x13,1
	rjmp L103
	.dbline 253
; 	   {
	.dbline 254
; 	    send_byte(0x15);
	ldi R16,21
	rcall _send_byte
	.dbline 255
; 	    temp=receive_byte();
	rcall _receive_byte
	mov R2,R16
	mov R3,R17
	mov R22,R2
	.dbline 256
; 		setcs;
	sbi 0x15,4
	.dbline 256
	.dbline 257
; 		if(temp==0x17)
	cpi R22,23
	brne L105
	.dbline 258
; 		  {
	.dbline 259
; 		   if (dflag==0)
	lds R2,_dflag
	tst R2
	brne L107
	.dbline 260
; 		       dflag=1;
	ldi R24,1
	sts _dflag,R24
	rjmp L110
L107:
	.dbline 262
; 	       else
; 		       dflag=0;		 
	clr R2
	sts _dflag,R2
	.dbline 263
; 		  } 
	rjmp L110
L105:
	.dbline 265
; 		else   
; 		   bpflag^=0x01;  
	ldi R24,1
	eor R20,R24
L109:
	.dbline 267
L110:
	.dbline 266
; 	    while((PINC&0x02)==0)//按键释放检查
	sbis 0x13,1
	rjmp L109
	.dbline 268
;            ;	   
; 	   }   
L103:
	.dbline 269
; 	if ((time.minute==0)&(bpflag==0))
	lds R2,_time+1
	tst R2
	brne L115
	ldi R24,1
	ldi R25,0
	mov R12,R24
	mov R13,R25
	rjmp L116
L115:
	clr R12
	clr R13
L116:
	tst R20
	brne L117
	ldi R24,1
	ldi R25,0
	mov R10,R24
	mov R11,R25
	rjmp L118
L117:
	clr R10
	clr R11
L118:
	mov R2,R12
	mov R3,R13
	and R2,R10
	and R3,R11
	tst R2
	brne X11
	tst R3
	breq L112
X11:
	.dbline 270
; 	     TIMSK|=0x01;          //整点报时
	in R24,0x39
	ori R24,1
	out 0x39,R24
	rjmp L113
L112:
	.dbline 272
; 	else
; 		 TIMSK&=0xfe;
	in R24,0x39
	andi R24,254
	out 0x39,R24
L113:
	.dbline 273
L97:
	.dbline 241
	rjmp L96
X10:
	.dbline -2
	.dbline 274
;    }
; }
L95:
	.dbline 0 ; func end
	ret
	.dbsym r temp 22 c
	.dbsym r bpflag 20 c
	.dbfunc s timer1_ovf _timer1_ovf fI
	.even
_timer1_ovf::
	st -y,R24
	st -y,R25
	in R24,0x3f
	st -y,R24
	.dbline -1
	.dbline 276
; void timer1_ovf()              //溢出中断子程序
; {
	.dbline 277
;  TCNT1=0x85ee;
	ldi R24,-31250
	ldi R25,-123
	sts 76+1,R25
	sts 76,R24
	.dbline 278
;  flag=0x01;
	ldi R24,1
	sts _flag,R24
	.dbline -2
	.dbline 279
; }
L119:
	ld R24,y+
	out 0x3f,R24
	ld R25,y+
	ld R24,y+
	.dbline 0 ; func end
	reti
	.area bss(ram, con, rel)
	.dbfile D:\sl279\8535\clock.c
L121:
	.blkb 2
	.area text(rom, con, rel)
	.dbfile D:\sl279\8535\clock.c
	.dbfunc s timer0_ovf _timer0_ovf fI
	.dbsym s i L121 i
	.even
_timer0_ovf::
	st -y,R2
	st -y,R3
	st -y,R24
	st -y,R25
	st -y,R30
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 281
; void timer0_ovf()
;  {
	.dbline 283
;   static unsigned int i;
;   TCNT0=0x83;
	ldi R24,131
	out 0x32,R24
	.dbline 284
;   i++;
	lds R25,L121+1
	lds R24,L121
	adiw R24,1
	sts L121+1,R25
	sts L121,R24
	.dbline 285
;   if(i<400)
	cpi R24,144
	ldi R30,1
	cpc R25,R30
	brsh L122
	.dbline 286
;      {
	.dbline 287
; 	  PORTC^=0X01;
	ldi R24,1
	in R2,0x15
	eor R2,R24
	out 0x15,R2
	.dbline 288
; 	 }
L122:
	.dbline 289
	ldi R24,800
	ldi R25,3
	lds R3,L121+1
	lds R2,L121
	cp R24,R2
	cpc R25,R3
	brsh L124
	.dbline 290
	clr R2
	clr R3
	sts L121+1,R3
	sts L121,R2
L124:
	.dbline -2
	.dbline 291
;   if(i>800)
;       i=0;	 
;  }
L120:
	ld R2,y+
	out 0x3f,R2
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.area bss(ram, con, rel)
	.dbfile D:\sl279\8535\clock.c
_time::
	.blkb 3
	.dbsym s time _time X

⌨️ 快捷键说明

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