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

📄 main.lss

📁 8个数码管显示时钟程序,LED数字钟,流水灯程序,红外遥控,键控看门狗程序
💻 LSS
📖 第 1 页 / 共 3 页
字号:
void  Ok_Menu (void)
{ 
 246:	cf 93       	push	r28
    uchar  m;
    lcd_init();                //初始化LCD 
 248:	ac df       	rcall	.-168    	; 0x1a2
            
    lcd_pos(0);                //设置显示位置为第一行的第1个字符
 24a:	80 e0       	ldi	r24, 0x00	; 0
 24c:	e4 df       	rcall	.-56     	; 0x216
     m = 0;
 24e:	c0 e0       	ldi	r28, 0x00	; 0
    while(cdis1[m] != '\0')
     {                         //显示字符
       lcd_wdat(cdis1[m]);
       m++;
 250:	80 91 93 00 	lds	r24, 0x0093
 254:	88 23       	and	r24, r24
 256:	69 f0       	breq	.+26     	; 0x272
 258:	ec 2f       	mov	r30, r28
 25a:	ff 27       	eor	r31, r31
 25c:	ed 56       	subi	r30, 0x6D	; 109
 25e:	ff 4f       	sbci	r31, 0xFF	; 255
 260:	80 81       	ld	r24, Z
 262:	cc df       	rcall	.-104    	; 0x1fc
 264:	cf 5f       	subi	r28, 0xFF	; 255
 266:	ec 2f       	mov	r30, r28
 268:	ff 27       	eor	r31, r31
 26a:	ed 56       	subi	r30, 0x6D	; 109
 26c:	ff 4f       	sbci	r31, 0xFF	; 255
 26e:	80 81       	ld	r24, Z
 270:	f1 cf       	rjmp	.-30     	; 0x254
     }

    lcd_pos(0x40);            //设置显示位置为第二行第1个字符
 272:	80 e4       	ldi	r24, 0x40	; 64
 274:	d0 df       	rcall	.-96     	; 0x216
     m = 0;
 276:	c0 e0       	ldi	r28, 0x00	; 0
    while(cdis2[m] != '\0')
     {
       lcd_wdat(cdis2[m]);    //显示字符
       m++;
 278:	80 91 82 00 	lds	r24, 0x0082
 27c:	88 23       	and	r24, r24
 27e:	69 f0       	breq	.+26     	; 0x29a
 280:	ec 2f       	mov	r30, r28
 282:	ff 27       	eor	r31, r31
 284:	ee 57       	subi	r30, 0x7E	; 126
 286:	ff 4f       	sbci	r31, 0xFF	; 255
 288:	80 81       	ld	r24, Z
 28a:	b8 df       	rcall	.-144    	; 0x1fc
 28c:	cf 5f       	subi	r28, 0xFF	; 255
 28e:	ec 2f       	mov	r30, r28
 290:	ff 27       	eor	r31, r31
 292:	ee 57       	subi	r30, 0x7E	; 126
 294:	ff 4f       	sbci	r31, 0xFF	; 255
 296:	80 81       	ld	r24, Z
 298:	f1 cf       	rjmp	.-30     	; 0x27c
     }

    writetab();               //自定义字符写入CGRAM
 29a:	c1 df       	rcall	.-126    	; 0x21e
    delay_nms(5);
 29c:	85 e0       	ldi	r24, 0x05	; 5
 29e:	90 e0       	ldi	r25, 0x00	; 0
 2a0:	db de       	rcall	.-586    	; 0x58
    lcd_pos(0x4d);
 2a2:	8d e4       	ldi	r24, 0x4D	; 77
 2a4:	b8 df       	rcall	.-144    	; 0x216
    lcd_wdat(0x00);           //显示自定义字符
 2a6:	80 e0       	ldi	r24, 0x00	; 0
 2a8:	a9 df       	rcall	.-174    	; 0x1fc
 2aa:	cf 91       	pop	r28
 2ac:	08 95       	ret

000002ae <Error_Menu>:
}

/*******************************************************************/
/*                                                                 */
/* DS18B20 ERROR 显示菜单                                          */
/*                                                                 */
/*******************************************************************/
void  Error_Menu (void)
{
 2ae:	cf 93       	push	r28
     uchar  m;
     lcd_init();                //初始化LCD 
 2b0:	78 df       	rcall	.-272    	; 0x1a2
	
  	 lcd_pos(0);                //设置显示位置为第一行的第1个字符
 2b2:	80 e0       	ldi	r24, 0x00	; 0
 2b4:	b0 df       	rcall	.-160    	; 0x216
     m = 0;
 2b6:	c0 e0       	ldi	r28, 0x00	; 0
     while(cdis3[m] != '\0')
     {                         //显示字符
       lcd_wdat(cdis3[m]);
       m++;
 2b8:	80 91 71 00 	lds	r24, 0x0071
 2bc:	88 23       	and	r24, r24
 2be:	69 f0       	breq	.+26     	; 0x2da
 2c0:	ec 2f       	mov	r30, r28
 2c2:	ff 27       	eor	r31, r31
 2c4:	ef 58       	subi	r30, 0x8F	; 143
 2c6:	ff 4f       	sbci	r31, 0xFF	; 255
 2c8:	80 81       	ld	r24, Z
 2ca:	98 df       	rcall	.-208    	; 0x1fc
 2cc:	cf 5f       	subi	r28, 0xFF	; 255
 2ce:	ec 2f       	mov	r30, r28
 2d0:	ff 27       	eor	r31, r31
 2d2:	ef 58       	subi	r30, 0x8F	; 143
 2d4:	ff 4f       	sbci	r31, 0xFF	; 255
 2d6:	80 81       	ld	r24, Z
 2d8:	f1 cf       	rjmp	.-30     	; 0x2bc
     }

     lcd_pos(0x40);             //设置显示位置为第二行第1个字符
 2da:	80 e4       	ldi	r24, 0x40	; 64
 2dc:	9c df       	rcall	.-200    	; 0x216
     m = 0;
 2de:	c0 e0       	ldi	r28, 0x00	; 0
     while(cdis4[m] != '\0')
     {
       lcd_wdat(cdis4[m]);      //显示字符
       m++;
 2e0:	80 91 60 00 	lds	r24, 0x0060
 2e4:	88 23       	and	r24, r24
 2e6:	71 f0       	breq	.+28     	; 0x304
 2e8:	ec 2f       	mov	r30, r28
 2ea:	ff 27       	eor	r31, r31
 2ec:	e0 5a       	subi	r30, 0xA0	; 160
 2ee:	ff 4f       	sbci	r31, 0xFF	; 255
 2f0:	80 81       	ld	r24, Z
 2f2:	84 df       	rcall	.-248    	; 0x1fc
 2f4:	cf 5f       	subi	r28, 0xFF	; 255
 2f6:	ec 2f       	mov	r30, r28
 2f8:	ff 27       	eor	r31, r31
 2fa:	e0 5a       	subi	r30, 0xA0	; 160
 2fc:	ff 4f       	sbci	r31, 0xFF	; 255
 2fe:	80 81       	ld	r24, Z
 300:	88 23       	and	r24, r24
 302:	91 f7       	brne	.-28     	; 0x2e8
 304:	cf 91       	pop	r28
 306:	08 95       	ret

00000308 <Disp_Temperature>:
     }
}

/*******************************************************************/
/*                                                                 */
/* 数据转换与温度显示                                              */
/*                                                                 */
/*******************************************************************/
void Disp_Temperature(void)
 {
    display[4]=temp_data[0]&0x0f;
 308:	90 91 c1 00 	lds	r25, 0x00C1
 30c:	89 2f       	mov	r24, r25
 30e:	8f 70       	andi	r24, 0x0F	; 15
    display[0]=ditab[display[4]]+0x30;     //查表得小数位的值
 310:	e8 2f       	mov	r30, r24
 312:	ff 27       	eor	r31, r31
 314:	e4 55       	subi	r30, 0x54	; 84
 316:	ff 4f       	sbci	r31, 0xFF	; 255
 318:	80 81       	ld	r24, Z
 31a:	80 5d       	subi	r24, 0xD0	; 208
 31c:	80 93 bc 00 	sts	0x00BC, r24
  
    display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4);
 320:	29 2f       	mov	r18, r25
 322:	33 27       	eor	r19, r19
 324:	44 e0       	ldi	r20, 0x04	; 4
 326:	36 95       	lsr	r19
 328:	27 95       	ror	r18
 32a:	4a 95       	dec	r20
 32c:	e1 f7       	brne	.-8      	; 0x326
 32e:	80 91 c2 00 	lds	r24, 0x00C2
 332:	99 27       	eor	r25, r25
 334:	8f 70       	andi	r24, 0x0F	; 15
 336:	90 70       	andi	r25, 0x00	; 0
 338:	34 e0       	ldi	r19, 0x04	; 4
 33a:	88 0f       	add	r24, r24
 33c:	99 1f       	adc	r25, r25
 33e:	3a 95       	dec	r19
 340:	e1 f7       	brne	.-8      	; 0x33a
 342:	28 2b       	or	r18, r24
 344:	20 93 c0 00 	sts	0x00C0, r18
    display[3]=display[4]/100+0x30;
 348:	82 2f       	mov	r24, r18
 34a:	64 e6       	ldi	r22, 0x64	; 100
 34c:	46 d0       	rcall	.+140    	; 0x3da
 34e:	38 2f       	mov	r19, r24
 350:	30 5d       	subi	r19, 0xD0	; 208
 352:	30 93 bf 00 	sts	0x00BF, r19
    display[1]=display[4]%100;
 356:	82 2f       	mov	r24, r18
 358:	40 d0       	rcall	.+128    	; 0x3da
 35a:	29 2f       	mov	r18, r25
    display[2]=display[1]/10+0x30;
 35c:	89 2f       	mov	r24, r25
 35e:	6a e0       	ldi	r22, 0x0A	; 10
 360:	3c d0       	rcall	.+120    	; 0x3da
 362:	48 2f       	mov	r20, r24
 364:	40 5d       	subi	r20, 0xD0	; 208
 366:	40 93 be 00 	sts	0x00BE, r20
    display[1]=display[1]%10+0x30;
 36a:	82 2f       	mov	r24, r18
 36c:	36 d0       	rcall	.+108    	; 0x3da
 36e:	89 2f       	mov	r24, r25
 370:	80 5d       	subi	r24, 0xD0	; 208
 372:	80 93 bd 00 	sts	0x00BD, r24

    if(display[3]==0x30)        //高位为0,不显示
 376:	30 33       	cpi	r19, 0x30	; 48
 378:	39 f4       	brne	.+14     	; 0x388
     { 
       display[3]=0x20;              
 37a:	80 e2       	ldi	r24, 0x20	; 32
 37c:	80 93 bf 00 	sts	0x00BF, r24
       if(display[2]==0x30)      //次高位为0,不显示
 380:	40 33       	cpi	r20, 0x30	; 48
 382:	11 f4       	brne	.+4      	; 0x388
       display[2]=0x20;
 384:	80 93 be 00 	sts	0x00BE, r24
     }

    lcd_pos(0x48);             
 388:	88 e4       	ldi	r24, 0x48	; 72
 38a:	45 df       	rcall	.-374    	; 0x216
    lcd_wdat(display[3]);        //百位数显示 
 38c:	80 91 bf 00 	lds	r24, 0x00BF
 390:	35 df       	rcall	.-406    	; 0x1fc
    lcd_pos(0x49);             
 392:	89 e4       	ldi	r24, 0x49	; 73
 394:	40 df       	rcall	.-384    	; 0x216
    lcd_wdat(display[2]);        //十位数显示 
 396:	80 91 be 00 	lds	r24, 0x00BE
 39a:	30 df       	rcall	.-416    	; 0x1fc
	lcd_pos(0x4a);             
 39c:	8a e4       	ldi	r24, 0x4A	; 74
 39e:	3b df       	rcall	.-394    	; 0x216
    lcd_wdat(display[1]);        //个位数显示 
 3a0:	80 91 bd 00 	lds	r24, 0x00BD
 3a4:	2b df       	rcall	.-426    	; 0x1fc
	lcd_pos(0x4c);             
 3a6:	8c e4       	ldi	r24, 0x4C	; 76
 3a8:	36 df       	rcall	.-404    	; 0x216
    lcd_wdat(display[0]);        //小数位数显示 
 3aa:	80 91 bc 00 	lds	r24, 0x00BC
 3ae:	26 df       	rcall	.-436    	; 0x1fc
 3b0:	08 95       	ret

000003b2 <main>:
}	 

/********************************************************/
/*                                                      */
/* 主函数                                               */
/*                                                      */
/********************************************************/
int  main(void)
 {     
 3b2:	cf e5       	ldi	r28, 0x5F	; 95
 3b4:	d2 e0       	ldi	r29, 0x02	; 2
 3b6:	de bf       	out	0x3e, r29	; 62
 3b8:	cd bf       	out	0x3d, r28	; 61
	init_io();
 3ba:	72 de       	rcall	.-796    	; 0xa0
	
	while(1)
     {
	   Ok_Menu ();
 3bc:	44 df       	rcall	.-376    	; 0x246

	   do
	    {
          Read_Temperature();
 3be:	c2 de       	rcall	.-636    	; 0x144
	      Disp_Temperature();   
 3c0:	a3 df       	rcall	.-186    	; 0x308
        }
 3c2:	80 91 c3 00 	lds	r24, 0x00C3
 3c6:	88 23       	and	r24, r24
 3c8:	d1 f3       	breq	.-12     	; 0x3be
       while(!presence) ;

       Error_Menu ();
 3ca:	71 df       	rcall	.-286    	; 0x2ae

	   do
	   {  
	     Init_DS18B20();
 3cc:	73 de       	rcall	.-794    	; 0xb4
	     beep();
 3ce:	54 de       	rcall	.-856    	; 0x78
       }
 3d0:	80 91 c3 00 	lds	r24, 0x00C3
 3d4:	88 23       	and	r24, r24
 3d6:	d1 f7       	brne	.-12     	; 0x3cc
 3d8:	f1 cf       	rjmp	.-30     	; 0x3bc

000003da <__udivmodqi4>:
 3da:	99 1b       	sub	r25, r25
 3dc:	79 e0       	ldi	r23, 0x09	; 9
 3de:	04 c0       	rjmp	.+8      	; 0x3e8

000003e0 <__udivmodqi4_loop>:
 3e0:	99 1f       	adc	r25, r25
 3e2:	96 17       	cp	r25, r22
 3e4:	08 f0       	brcs	.+2      	; 0x3e8
 3e6:	96 1b       	sub	r25, r22

000003e8 <__udivmodqi4_ep>:
 3e8:	88 1f       	adc	r24, r24
 3ea:	7a 95       	dec	r23
 3ec:	c9 f7       	brne	.-14     	; 0x3e0
 3ee:	80 95       	com	r24
 3f0:	08 95       	ret

⌨️ 快捷键说明

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