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

📄 main.lss

📁 AVR source code of some projects
💻 LSS
📖 第 1 页 / 共 3 页
字号:
/*                                                           */
/*************************************************************/
void lcd_pos(uchar pos)
{                          
  lcd_wcmd(pos|0x80,1);  //数据指针=80+地址变量
 20a:	61 e0       	ldi	r22, 0x01	; 1
 20c:	80 68       	ori	r24, 0x80	; 128
 20e:	ef df       	rcall	.-34     	; 0x1ee
 210:	08 95       	ret

00000212 <Disp_RomCode>:
 212:	ef 92       	push	r14
 214:	ff 92       	push	r15
 216:	1f 93       	push	r17
 218:	cf 93       	push	r28
 21a:	c0 e4       	ldi	r28, 0x40	; 64
 21c:	44 ea       	ldi	r20, 0xA4	; 164
 21e:	e4 2e       	mov	r14, r20
 220:	40 e0       	ldi	r20, 0x00	; 0
 222:	f4 2e       	mov	r15, r20
 224:	17 e0       	ldi	r17, 0x07	; 7
 226:	f7 01       	movw	r30, r14
 228:	81 91       	ld	r24, Z+
 22a:	7f 01       	movw	r14, r30
 22c:	80 93 b1 00 	sts	0x00B1, r24
 230:	99 27       	eor	r25, r25
 232:	34 e0       	ldi	r19, 0x04	; 4
 234:	96 95       	lsr	r25
 236:	87 95       	ror	r24
 238:	3a 95       	dec	r19
 23a:	e1 f7       	brne	.-8      	; 0x234
 23c:	80 93 ac 00 	sts	0x00AC, r24
 240:	8a 30       	cpi	r24, 0x0A	; 10
 242:	10 f0       	brcs	.+4      	; 0x248
 244:	89 5c       	subi	r24, 0xC9	; 201
 246:	01 c0       	rjmp	.+2      	; 0x24a
 248:	80 5d       	subi	r24, 0xD0	; 208
 24a:	80 93 ac 00 	sts	0x00AC, r24
 24e:	8c 2f       	mov	r24, r28
 250:	dc df       	rcall	.-72     	; 0x20a
 252:	80 91 ac 00 	lds	r24, 0x00AC
 256:	be df       	rcall	.-132    	; 0x1d4
 258:	cf 5f       	subi	r28, 0xFF	; 255
 25a:	80 91 b1 00 	lds	r24, 0x00B1
 25e:	8f 70       	andi	r24, 0x0F	; 15
 260:	80 93 ad 00 	sts	0x00AD, r24
 264:	8a 30       	cpi	r24, 0x0A	; 10
 266:	10 f0       	brcs	.+4      	; 0x26c
 268:	89 5c       	subi	r24, 0xC9	; 201
 26a:	01 c0       	rjmp	.+2      	; 0x26e
 26c:	80 5d       	subi	r24, 0xD0	; 208
 26e:	80 93 ad 00 	sts	0x00AD, r24
 272:	8c 2f       	mov	r24, r28
 274:	ca df       	rcall	.-108    	; 0x20a
 276:	80 91 ad 00 	lds	r24, 0x00AD
 27a:	ac df       	rcall	.-168    	; 0x1d4
 27c:	cf 5f       	subi	r28, 0xFF	; 255
 27e:	11 50       	subi	r17, 0x01	; 1
 280:	17 ff       	sbrs	r17, 7
 282:	d1 cf       	rjmp	.-94     	; 0x226
 284:	cf 91       	pop	r28
 286:	1f 91       	pop	r17
 288:	ff 90       	pop	r15
 28a:	ef 90       	pop	r14
 28c:	08 95       	ret

0000028e <lcd_init>:
 28e:	8f ef       	ldi	r24, 0xFF	; 255
 290:	8a bb       	out	0x1a, r24	; 26
 292:	8b bb       	out	0x1b, r24	; 27
 294:	84 bb       	out	0x14, r24	; 20
 296:	85 bb       	out	0x15, r24	; 21
 298:	8e e1       	ldi	r24, 0x1E	; 30
 29a:	90 e0       	ldi	r25, 0x00	; 0
 29c:	dd de       	rcall	.-582    	; 0x58
 29e:	60 e0       	ldi	r22, 0x00	; 0
 2a0:	88 e3       	ldi	r24, 0x38	; 56
 2a2:	a5 df       	rcall	.-182    	; 0x1ee
 2a4:	85 e0       	ldi	r24, 0x05	; 5
 2a6:	90 e0       	ldi	r25, 0x00	; 0
 2a8:	d7 de       	rcall	.-594    	; 0x58
 2aa:	60 e0       	ldi	r22, 0x00	; 0
 2ac:	88 e3       	ldi	r24, 0x38	; 56
 2ae:	9f df       	rcall	.-194    	; 0x1ee
 2b0:	85 e0       	ldi	r24, 0x05	; 5
 2b2:	90 e0       	ldi	r25, 0x00	; 0
 2b4:	d1 de       	rcall	.-606    	; 0x58
 2b6:	60 e0       	ldi	r22, 0x00	; 0
 2b8:	88 e3       	ldi	r24, 0x38	; 56
 2ba:	99 df       	rcall	.-206    	; 0x1ee
 2bc:	85 e0       	ldi	r24, 0x05	; 5
 2be:	90 e0       	ldi	r25, 0x00	; 0
 2c0:	cb de       	rcall	.-618    	; 0x58
 2c2:	61 e0       	ldi	r22, 0x01	; 1
 2c4:	8c e0       	ldi	r24, 0x0C	; 12
 2c6:	93 df       	rcall	.-218    	; 0x1ee
 2c8:	85 e0       	ldi	r24, 0x05	; 5
 2ca:	90 e0       	ldi	r25, 0x00	; 0
 2cc:	c5 de       	rcall	.-630    	; 0x58
 2ce:	61 e0       	ldi	r22, 0x01	; 1
 2d0:	86 e0       	ldi	r24, 0x06	; 6
 2d2:	8d df       	rcall	.-230    	; 0x1ee
 2d4:	85 e0       	ldi	r24, 0x05	; 5
 2d6:	90 e0       	ldi	r25, 0x00	; 0
 2d8:	bf de       	rcall	.-642    	; 0x58
 2da:	61 e0       	ldi	r22, 0x01	; 1
 2dc:	86 2f       	mov	r24, r22
 2de:	87 df       	rcall	.-242    	; 0x1ee
 2e0:	85 e0       	ldi	r24, 0x05	; 5
 2e2:	90 e0       	ldi	r25, 0x00	; 0
 2e4:	b9 de       	rcall	.-654    	; 0x58
 2e6:	08 95       	ret

000002e8 <Ok_Menu>:
}

/*************************************************************/
/*                                                           */
/* DS18B20 OK 显示菜单                                       */
/*                                                           */
/*************************************************************/
void  Ok_Menu (void)
{ 
 2e8:	cf 93       	push	r28
    uchar  m;
    lcd_init();                //初始化LCD 
 2ea:	d1 df       	rcall	.-94     	; 0x28e
            
    lcd_pos(0);                //设置显示位置为第一行的第1个字符
 2ec:	80 e0       	ldi	r24, 0x00	; 0
 2ee:	8d df       	rcall	.-230    	; 0x20a
     m = 0;
 2f0:	c0 e0       	ldi	r28, 0x00	; 0
    while(cdis1[m] != '\0')
     {                         //显示字符
       lcd_wdat(cdis1[m]);
       m++;
 2f2:	80 91 93 00 	lds	r24, 0x0093
 2f6:	88 23       	and	r24, r24
 2f8:	69 f0       	breq	.+26     	; 0x314
 2fa:	ec 2f       	mov	r30, r28
 2fc:	ff 27       	eor	r31, r31
 2fe:	ed 56       	subi	r30, 0x6D	; 109
 300:	ff 4f       	sbci	r31, 0xFF	; 255
 302:	80 81       	ld	r24, Z
 304:	67 df       	rcall	.-306    	; 0x1d4
 306:	cf 5f       	subi	r28, 0xFF	; 255
 308:	ec 2f       	mov	r30, r28
 30a:	ff 27       	eor	r31, r31
 30c:	ed 56       	subi	r30, 0x6D	; 109
 30e:	ff 4f       	sbci	r31, 0xFF	; 255
 310:	80 81       	ld	r24, Z
 312:	f1 cf       	rjmp	.-30     	; 0x2f6
     }

    lcd_pos(0x40);            //设置显示位置为第二行第1个字符
 314:	80 e4       	ldi	r24, 0x40	; 64
 316:	79 df       	rcall	.-270    	; 0x20a
     m = 0;
 318:	c0 e0       	ldi	r28, 0x00	; 0
    while(cdis2[m] != '\0')
     {
       lcd_wdat(cdis2[m]);    //显示字符
       m++;
 31a:	80 91 82 00 	lds	r24, 0x0082
 31e:	88 23       	and	r24, r24
 320:	71 f0       	breq	.+28     	; 0x33e
 322:	ec 2f       	mov	r30, r28
 324:	ff 27       	eor	r31, r31
 326:	ee 57       	subi	r30, 0x7E	; 126
 328:	ff 4f       	sbci	r31, 0xFF	; 255
 32a:	80 81       	ld	r24, Z
 32c:	53 df       	rcall	.-346    	; 0x1d4
 32e:	cf 5f       	subi	r28, 0xFF	; 255
 330:	ec 2f       	mov	r30, r28
 332:	ff 27       	eor	r31, r31
 334:	ee 57       	subi	r30, 0x7E	; 126
 336:	ff 4f       	sbci	r31, 0xFF	; 255
 338:	80 81       	ld	r24, Z
 33a:	88 23       	and	r24, r24
 33c:	91 f7       	brne	.-28     	; 0x322
 33e:	cf 91       	pop	r28
 340:	08 95       	ret

00000342 <Error_Menu>:
     }
}

/*************************************************************/
/*                                                           */
/* DS18B20 ERROR 显示菜单                                    */
/*                                                           */
/*************************************************************/
void  Error_Menu (void)
{
 342:	cf 93       	push	r28
     uchar  m;
     lcd_init();                //初始化LCD 
 344:	a4 df       	rcall	.-184    	; 0x28e
	
  	 lcd_pos(0);                //设置显示位置为第一行的第1个字符
 346:	80 e0       	ldi	r24, 0x00	; 0
 348:	60 df       	rcall	.-320    	; 0x20a
     m = 0;
 34a:	c0 e0       	ldi	r28, 0x00	; 0
     while(cdis3[m] != '\0')
     {                         //显示字符
       lcd_wdat(cdis3[m]);
       m++;
 34c:	80 91 71 00 	lds	r24, 0x0071
 350:	88 23       	and	r24, r24
 352:	69 f0       	breq	.+26     	; 0x36e
 354:	ec 2f       	mov	r30, r28
 356:	ff 27       	eor	r31, r31
 358:	ef 58       	subi	r30, 0x8F	; 143
 35a:	ff 4f       	sbci	r31, 0xFF	; 255
 35c:	80 81       	ld	r24, Z
 35e:	3a df       	rcall	.-396    	; 0x1d4
 360:	cf 5f       	subi	r28, 0xFF	; 255
 362:	ec 2f       	mov	r30, r28
 364:	ff 27       	eor	r31, r31
 366:	ef 58       	subi	r30, 0x8F	; 143
 368:	ff 4f       	sbci	r31, 0xFF	; 255
 36a:	80 81       	ld	r24, Z
 36c:	f1 cf       	rjmp	.-30     	; 0x350
     }

     lcd_pos(0x40);             //设置显示位置为第二行第1个字符
 36e:	80 e4       	ldi	r24, 0x40	; 64
 370:	4c df       	rcall	.-360    	; 0x20a
     m = 0;
 372:	c0 e0       	ldi	r28, 0x00	; 0
     while(cdis4[m] != '\0')
     {
       lcd_wdat(cdis4[m]);      //显示字符
       m++;
 374:	80 91 60 00 	lds	r24, 0x0060
 378:	88 23       	and	r24, r24
 37a:	71 f0       	breq	.+28     	; 0x398
 37c:	ec 2f       	mov	r30, r28
 37e:	ff 27       	eor	r31, r31
 380:	e0 5a       	subi	r30, 0xA0	; 160
 382:	ff 4f       	sbci	r31, 0xFF	; 255
 384:	80 81       	ld	r24, Z
 386:	26 df       	rcall	.-436    	; 0x1d4
 388:	cf 5f       	subi	r28, 0xFF	; 255
 38a:	ec 2f       	mov	r30, r28
 38c:	ff 27       	eor	r31, r31
 38e:	e0 5a       	subi	r30, 0xA0	; 160
 390:	ff 4f       	sbci	r31, 0xFF	; 255
 392:	80 81       	ld	r24, Z
 394:	88 23       	and	r24, r24
 396:	91 f7       	brne	.-28     	; 0x37c
 398:	cf 91       	pop	r28
 39a:	08 95       	ret

0000039c <main>:
     }
}

/*************************************************************/
/*                                                           */
/* 主函数                                                    */
/*                                                           */
/*************************************************************/
int main(void)
 {
 39c:	cf e5       	ldi	r28, 0x5F	; 95
 39e:	d2 e0       	ldi	r29, 0x02	; 2
 3a0:	de bf       	out	0x3e, r29	; 62
 3a2:	cd bf       	out	0x3d, r28	; 61
   init_io(); 
 3a4:	7d de       	rcall	.-774    	; 0xa0

   while(1)
  {
     Ok_Menu ();
 3a6:	a0 df       	rcall	.-192    	; 0x2e8
     Read_RomCord();    //读取64位序列码
 3a8:	cd de       	rcall	.-614    	; 0x144
     CRC8();            //CRC效验
 3aa:	e3 de       	rcall	.-570    	; 0x172
     if(crc==0)         //CRC效验正确
 3ac:	80 91 b3 00 	lds	r24, 0x00B3
 3b0:	88 23       	and	r24, r24
 3b2:	11 f4       	brne	.+4      	; 0x3b8
	 {
	  Disp_RomCode();	//显示64位序列码
 3b4:	2e df       	rcall	.-420    	; 0x212
  	  beep();           //蜂鸣器响一声 
 3b6:	60 de       	rcall	.-832    	; 0x78
     }
     while(!presence)  //检测DS18B20是否存在 
	 {
	  Init_DS18B20();
	  delay_nms(500);
 3b8:	80 91 b2 00 	lds	r24, 0x00B2
 3bc:	88 23       	and	r24, r24
 3be:	29 f4       	brne	.+10     	; 0x3ca
 3c0:	79 de       	rcall	.-782    	; 0xb4
 3c2:	84 ef       	ldi	r24, 0xF4	; 244
 3c4:	91 e0       	ldi	r25, 0x01	; 1
 3c6:	48 de       	rcall	.-880    	; 0x58
 3c8:	f7 cf       	rjmp	.-18     	; 0x3b8
	 }

     Error_Menu ();     //显示错误菜单
 3ca:	bb df       	rcall	.-138    	; 0x342
	do
	 {  
	   Init_DS18B20();  
 3cc:	73 de       	rcall	.-794    	; 0xb4
	   beep();          //蜂鸣器报警
 3ce:	54 de       	rcall	.-856    	; 0x78
     }
 3d0:	80 91 b2 00 	lds	r24, 0x00B2
 3d4:	88 23       	and	r24, r24
 3d6:	d1 f7       	brne	.-12     	; 0x3cc
 3d8:	e6 cf       	rjmp	.-52     	; 0x3a6

⌨️ 快捷键说明

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