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

📄 main.lss

📁 小护士脉搏监护仪全套系统
💻 LSS
📖 第 1 页 / 共 4 页
字号:

void delay_nus(unsigned int n)       //N us延时函数 
  { 
 6f6:	20 e0       	ldi	r18, 0x00	; 0
 6f8:	30 e0       	ldi	r19, 0x00	; 0
 6fa:	03 c0       	rjmp	.+6      	; 0x702 <delay_nus+0xc>
 6fc:	00 00       	nop
   unsigned int i=0; 
   for (i=0;i<n;i++) 
 6fe:	2f 5f       	subi	r18, 0xFF	; 255
 700:	3f 4f       	sbci	r19, 0xFF	; 255
 702:	28 17       	cp	r18, r24
 704:	39 07       	cpc	r19, r25
 706:	d1 f7       	brne	.-12     	; 0x6fc <delay_nus+0x6>
 708:	08 95       	ret

0000070a <delay_1ms>:
   delay_1us(); 
  } 
   
void delay_1ms(void)                 //1ms延时函数 
  { 
 70a:	08 95       	ret

0000070c <delay_nms>:
   unsigned int i; 
   for (i=0;i<1140;i++); 
  } 
   
void delay_nms(unsigned int n)       //N ms延时函数 
  { 
 70c:	08 95       	ret

0000070e <init_1820>:
/********************************************************
             DS18B20初始化
*********************************************************/
void init_1820()  
{  
 70e:	a0 9a       	sbi	0x14, 0	; 20
    SET_DIR_1WIRE;                //设置PC2 为输出 
    SET_OP_1WIRE;   
 710:	a8 9a       	sbi	0x15, 0	; 21
    CLR_OP_1WIRE;  
 712:	a8 98       	cbi	0x15, 0	; 21
 714:	80 e0       	ldi	r24, 0x00	; 0
 716:	90 e0       	ldi	r25, 0x00	; 0
    系统时钟:8M 
********************************************************/
void delay_1us(void)                 //1us延时函数 
  { 
   asm("nop"); 
 718:	00 00       	nop
  } 

void delay_nus(unsigned int n)       //N us延时函数 
  { 
   unsigned int i=0; 
   for (i=0;i<n;i++) 
 71a:	01 96       	adiw	r24, 0x01	; 1
 71c:	21 e0       	ldi	r18, 0x01	; 1
 71e:	80 3e       	cpi	r24, 0xE0	; 224
 720:	92 07       	cpc	r25, r18
 722:	d1 f7       	brne	.-12     	; 0x718 <init_1820+0xa>
    SET_DIR_1WIRE;                //设置PC2 为输出 
    SET_OP_1WIRE;   
    CLR_OP_1WIRE;  
    delay_nus(480);    //480us以上  
    SET_OP_1WIRE;  
 724:	a8 9a       	sbi	0x15, 0	; 21
    CLR_DIR_1WIRE;  
 726:	a0 98       	cbi	0x14, 0	; 20
 728:	80 e0       	ldi	r24, 0x00	; 0
 72a:	90 e0       	ldi	r25, 0x00	; 0
    系统时钟:8M 
********************************************************/
void delay_1us(void)                 //1us延时函数 
  { 
   asm("nop"); 
 72c:	00 00       	nop
  } 

void delay_nus(unsigned int n)       //N us延时函数 
  { 
   unsigned int i=0; 
   for (i=0;i<n;i++) 
 72e:	01 96       	adiw	r24, 0x01	; 1
 730:	84 31       	cpi	r24, 0x14	; 20
 732:	91 05       	cpc	r25, r1
 734:	d9 f7       	brne	.-10     	; 0x72c <init_1820+0x1e>
    delay_nus(480);    //480us以上  
    SET_OP_1WIRE;  
    CLR_DIR_1WIRE;  
    delay_nus(20);     //15~60us  
    while(CHECK_IP_1WIRE);  
 736:	98 99       	sbic	0x13, 0	; 19
 738:	fe cf       	rjmp	.-4      	; 0x736 <init_1820+0x28>
    SET_DIR_1WIRE;  
 73a:	a0 9a       	sbi	0x14, 0	; 20
    SET_OP_1WIRE;  
 73c:	a8 9a       	sbi	0x15, 0	; 21
 73e:	80 e0       	ldi	r24, 0x00	; 0
 740:	90 e0       	ldi	r25, 0x00	; 0
    系统时钟:8M 
********************************************************/
void delay_1us(void)                 //1us延时函数 
  { 
   asm("nop"); 
 742:	00 00       	nop
  } 

void delay_nus(unsigned int n)       //N us延时函数 
  { 
   unsigned int i=0; 
   for (i=0;i<n;i++) 
 744:	01 96       	adiw	r24, 0x01	; 1
 746:	8c 38       	cpi	r24, 0x8C	; 140
 748:	91 05       	cpc	r25, r1
 74a:	d9 f7       	brne	.-10     	; 0x742 <init_1820+0x34>
 74c:	08 95       	ret

0000074e <write_1820>:
/********************************************************
    向DS18B20写入一个字节
********************************************************/
void write_1820(unsigned char x)  
{     
 74e:	20 e0       	ldi	r18, 0x00	; 0
 750:	30 e0       	ldi	r19, 0x00	; 0
 752:	48 2f       	mov	r20, r24
 754:	55 27       	eor	r21, r21
     unsigned char m;  
    for(m=0;m<8;m++)  
    {  
       CLR_OP_1WIRE;  
 756:	a8 98       	cbi	0x15, 0	; 21
       if(x&(1<<m))    //写数据了,先写低位的! 
 758:	ca 01       	movw	r24, r20
 75a:	02 2e       	mov	r0, r18
 75c:	02 c0       	rjmp	.+4      	; 0x762 <write_1820+0x14>
 75e:	95 95       	asr	r25
 760:	87 95       	ror	r24
 762:	0a 94       	dec	r0
 764:	e2 f7       	brpl	.-8      	; 0x75e <write_1820+0x10>
 766:	80 ff       	sbrs	r24, 0
 768:	02 c0       	rjmp	.+4      	; 0x76e <write_1820+0x20>
       SET_OP_1WIRE;  
 76a:	a8 9a       	sbi	0x15, 0	; 21
 76c:	01 c0       	rjmp	.+2      	; 0x770 <write_1820+0x22>
       else  
       {CLR_OP_1WIRE;}  
 76e:	a8 98       	cbi	0x15, 0	; 21
 770:	80 e0       	ldi	r24, 0x00	; 0
 772:	90 e0       	ldi	r25, 0x00	; 0
    系统时钟:8M 
********************************************************/
void delay_1us(void)                 //1us延时函数 
  { 
   asm("nop"); 
 774:	00 00       	nop
  } 

void delay_nus(unsigned int n)       //N us延时函数 
  { 
   unsigned int i=0; 
   for (i=0;i<n;i++) 
 776:	01 96       	adiw	r24, 0x01	; 1
 778:	88 32       	cpi	r24, 0x28	; 40
 77a:	91 05       	cpc	r25, r1
 77c:	d9 f7       	brne	.-10     	; 0x774 <write_1820+0x26>
       SET_OP_1WIRE;  
       else  
       {CLR_OP_1WIRE;}  
       delay_nus(40);   //15~60us  
       SET_OP_1WIRE;  
 77e:	a8 9a       	sbi	0x15, 0	; 21
 780:	2f 5f       	subi	r18, 0xFF	; 255
 782:	3f 4f       	sbci	r19, 0xFF	; 255
 784:	28 30       	cpi	r18, 0x08	; 8
 786:	31 05       	cpc	r19, r1
 788:	31 f7       	brne	.-52     	; 0x756 <write_1820+0x8>
    }  
     SET_OP_1WIRE;  
 78a:	a8 9a       	sbi	0x15, 0	; 21
 78c:	08 95       	ret

0000078e <read_1820>:
}  

/********************************************************
             从DS18B20读出一个字节
********************************************************/
unsigned char read_1820()  
{      
 78e:	40 e0       	ldi	r20, 0x00	; 0
 790:	20 e0       	ldi	r18, 0x00	; 0
 792:	30 e0       	ldi	r19, 0x00	; 0
 794:	61 e0       	ldi	r22, 0x01	; 1
 796:	70 e0       	ldi	r23, 0x00	; 0
    unsigned char temp,k,n;  
    temp=0;  
    for(n=0;n<8;n++)  
       {  
      CLR_OP_1WIRE;  
 798:	a8 98       	cbi	0x15, 0	; 21
      SET_OP_1WIRE;  
 79a:	a8 9a       	sbi	0x15, 0	; 21
      CLR_DIR_1WIRE;  
 79c:	a0 98       	cbi	0x14, 0	; 20
      k=(CHECK_IP_1WIRE);    //读数据,从低位开始  
      if(k)  
 79e:	98 9b       	sbis	0x13, 0	; 19
 7a0:	09 c0       	rjmp	.+18     	; 0x7b4 <read_1820+0x26>
      temp|=(1<<n);  
 7a2:	cb 01       	movw	r24, r22
 7a4:	02 2e       	mov	r0, r18
 7a6:	02 c0       	rjmp	.+4      	; 0x7ac <read_1820+0x1e>
 7a8:	88 0f       	add	r24, r24
 7aa:	99 1f       	adc	r25, r25
 7ac:	0a 94       	dec	r0
 7ae:	e2 f7       	brpl	.-8      	; 0x7a8 <read_1820+0x1a>
 7b0:	48 2b       	or	r20, r24
 7b2:	09 c0       	rjmp	.+18     	; 0x7c6 <read_1820+0x38>
      else  
      temp&=~(1<<n);  
 7b4:	cb 01       	movw	r24, r22
 7b6:	02 2e       	mov	r0, r18
 7b8:	02 c0       	rjmp	.+4      	; 0x7be <read_1820+0x30>
 7ba:	88 0f       	add	r24, r24
 7bc:	99 1f       	adc	r25, r25
 7be:	0a 94       	dec	r0
 7c0:	e2 f7       	brpl	.-8      	; 0x7ba <read_1820+0x2c>
 7c2:	80 95       	com	r24
 7c4:	48 23       	and	r20, r24
 7c6:	80 e0       	ldi	r24, 0x00	; 0
 7c8:	90 e0       	ldi	r25, 0x00	; 0
    系统时钟:8M 
********************************************************/
void delay_1us(void)                 //1us延时函数 
  { 
   asm("nop"); 
 7ca:	00 00       	nop
  } 

void delay_nus(unsigned int n)       //N us延时函数 
  { 
   unsigned int i=0; 
   for (i=0;i<n;i++) 
 7cc:	01 96       	adiw	r24, 0x01	; 1
 7ce:	82 33       	cpi	r24, 0x32	; 50
 7d0:	91 05       	cpc	r25, r1
 7d2:	d9 f7       	brne	.-10     	; 0x7ca <read_1820+0x3c>
      temp|=(1<<n);  
      else  
      temp&=~(1<<n);  
      delay_nus(50); //60~120us      
      SET_DIR_1WIRE;  
 7d4:	a0 9a       	sbi	0x14, 0	; 20
 7d6:	2f 5f       	subi	r18, 0xFF	; 255
 7d8:	3f 4f       	sbci	r19, 0xFF	; 255
 7da:	28 30       	cpi	r18, 0x08	; 8
 7dc:	31 05       	cpc	r19, r1
 7de:	e1 f6       	brne	.-72     	; 0x798 <read_1820+0xa>
   }  
   return (temp);  
}   
 7e0:	84 2f       	mov	r24, r20
 7e2:	99 27       	eor	r25, r25
 7e4:	08 95       	ret

000007e6 <gettemp>:

/********************************************************
       读取温度值 
       返回一个字节 
********************************************************/	   
unsigned char gettemp()                  
{  
 7e6:	1f 93       	push	r17
     char temh,teml;
	 //float temper;
     init_1820();        //复位18b20  
 7e8:	0e 94 87 03 	call	0x70e	; 0x70e <init_1820>
     write_1820(0xcc);   // 发出转换命令  
 7ec:	8c ec       	ldi	r24, 0xCC	; 204
 7ee:	0e 94 a7 03 	call	0x74e	; 0x74e <write_1820>
     write_1820(0x44); 
 7f2:	84 e4       	ldi	r24, 0x44	; 68
 7f4:	0e 94 a7 03 	call	0x74e	; 0x74e <write_1820>
 //  delay_nms(800);     //不延时也好使,不知道怎么回事! 
     init_1820();  
 7f8:	0e 94 87 03 	call	0x70e	; 0x70e <init_1820>
     write_1820(0xcc);  //发出读命令  
 7fc:	8c ec       	ldi	r24, 0xCC	; 204
 7fe:	0e 94 a7 03 	call	0x74e	; 0x74e <write_1820>
     write_1820(0xbe);  
 802:	8e eb       	ldi	r24, 0xBE	; 190
 804:	0e 94 a7 03 	call	0x74e	; 0x74e <write_1820>
     teml=read_1820();  //读数据  
 808:	0e 94 c7 03 	call	0x78e	; 0x78e <read_1820>
 80c:	18 2f       	mov	r17, r24
     temh=read_1820();
 80e:	0e 94 c7 03 	call	0x78e	; 0x78e <read_1820>
 812:	82 95       	swap	r24
 814:	80 7f       	andi	r24, 0xF0	; 240
 816:	80 77       	andi	r24, 0x70	; 112
 818:	12 95       	swap	r17
 81a:	1f 70       	andi	r17, 0x0F	; 15
 81c:	81 2b       	or	r24, r17
	 //temp_int= (( temh << 4 )& 0x70 )|(( teml >> 4 )& 0x0f );
     //temper = (teml&0xf)*0.0625;
     //temp_point=(unsigned char)temper*100;
	 return (( temh << 4 )& 0x70 )|(( teml >> 4 )& 0x0f );
}   
 81e:	99 27       	eor	r25, r25
 820:	1f 91       	pop	r17
 822:	08 95       	ret

00000824 <main>:
#include "sound.h"
#include "ds18b20.h"
#include<avr/io.h>
void main()
{
 824:	1f 93       	push	r17
char data;
DDRC|=0x01;
 826:	a0 9a       	sbi	0x14, 0	; 20
data=gettemp();                 //DS18B20初始值为85度,先读出来丢掉
 828:	0e 94 f3 03 	call	0x7e6	; 0x7e6 <gettemp>
delay_nms(270);
 82c:	8e e0       	ldi	r24, 0x0E	; 14
 82e:	91 e0       	ldi	r25, 0x01	; 1
 830:	0e 94 86 03 	call	0x70c	; 0x70c <delay_nms>
init_lcd();                   //初始化
 834:	0e 94 ec 00 	call	0x1d8	; 0x1d8 <init_lcd>
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 838:	81 e0       	ldi	r24, 0x01	; 1
 83a:	90 e0       	ldi	r25, 0x00	; 0
 83c:	01 97       	sbiw	r24, 0x01	; 1
 83e:	f1 f7       	brne	.-4      	; 0x83c <main+0x18>
_delay_ms(0.0001);                 //延时
clear_panel();           //清屏
 840:	0e 94 b2 01 	call	0x364	; 0x364 <clear_panel>
 while (1)
    {
      data=gettemp();               //读温度
 844:	0e 94 f3 03 	call	0x7e6	; 0x7e6 <gettemp>
 848:	18 2f       	mov	r17, r24
	  if(data>=ALARM_TEMP)          //如果大于警报温度就报警
 84a:	84 31       	cpi	r24, 0x14	; 20
 84c:	10 f0       	brcs	.+4      	; 0x852 <main+0x2e>
	     sound();
 84e:	0e 94 71 03 	call	0x6e2	; 0x6e2 <sound>
	  templetrue=data;
 852:	10 93 7c 00 	sts	0x007C, r17
	  disp_lcd();
 856:	0e 94 0b 03 	call	0x616	; 0x616 <disp_lcd>
 85a:	f4 cf       	rjmp	.-24     	; 0x844 <main+0x20>

0000085c <__udivmodqi4>:
 85c:	99 1b       	sub	r25, r25
 85e:	79 e0       	ldi	r23, 0x09	; 9
 860:	04 c0       	rjmp	.+8      	; 0x86a <__udivmodqi4_ep>

00000862 <__udivmodqi4_loop>:
 862:	99 1f       	adc	r25, r25
 864:	96 17       	cp	r25, r22
 866:	08 f0       	brcs	.+2      	; 0x86a <__udivmodqi4_ep>
 868:	96 1b       	sub	r25, r22

0000086a <__udivmodqi4_ep>:
 86a:	88 1f       	adc	r24, r24
 86c:	7a 95       	dec	r23
 86e:	c9 f7       	brne	.-14     	; 0x862 <__udivmodqi4_loop>
 870:	80 95       	com	r24
 872:	08 95       	ret

00000874 <__divmodhi4>:
 874:	97 fb       	bst	r25, 7
 876:	09 2e       	mov	r0, r25
 878:	07 26       	eor	r0, r23
 87a:	0a d0       	rcall	.+20     	; 0x890 <__divmodhi4_neg1>
 87c:	77 fd       	sbrc	r23, 7
 87e:	04 d0       	rcall	.+8      	; 0x888 <__divmodhi4_neg2>
 880:	0c d0       	rcall	.+24     	; 0x89a <__udivmodhi4>
 882:	06 d0       	rcall	.+12     	; 0x890 <__divmodhi4_neg1>
 884:	00 20       	and	r0, r0
 886:	1a f4       	brpl	.+6      	; 0x88e <__divmodhi4_exit>

00000888 <__divmodhi4_neg2>:
 888:	70 95       	com	r23
 88a:	61 95       	neg	r22
 88c:	7f 4f       	sbci	r23, 0xFF	; 255

0000088e <__divmodhi4_exit>:
 88e:	08 95       	ret

00000890 <__divmodhi4_neg1>:
 890:	f6 f7       	brtc	.-4      	; 0x88e <__divmodhi4_exit>
 892:	90 95       	com	r25
 894:	81 95       	neg	r24
 896:	9f 4f       	sbci	r25, 0xFF	; 255
 898:	08 95       	ret

0000089a <__udivmodhi4>:
 89a:	aa 1b       	sub	r26, r26
 89c:	bb 1b       	sub	r27, r27
 89e:	51 e1       	ldi	r21, 0x11	; 17
 8a0:	07 c0       	rjmp	.+14     	; 0x8b0 <__udivmodhi4_ep>

000008a2 <__udivmodhi4_loop>:
 8a2:	aa 1f       	adc	r26, r26
 8a4:	bb 1f       	adc	r27, r27
 8a6:	a6 17       	cp	r26, r22
 8a8:	b7 07       	cpc	r27, r23
 8aa:	10 f0       	brcs	.+4      	; 0x8b0 <__udivmodhi4_ep>
 8ac:	a6 1b       	sub	r26, r22
 8ae:	b7 0b       	sbc	r27, r23

000008b0 <__udivmodhi4_ep>:
 8b0:	88 1f       	adc	r24, r24
 8b2:	99 1f       	adc	r25, r25
 8b4:	5a 95       	dec	r21
 8b6:	a9 f7       	brne	.-22     	; 0x8a2 <__udivmodhi4_loop>
 8b8:	80 95       	com	r24
 8ba:	90 95       	com	r25
 8bc:	bc 01       	movw	r22, r24
 8be:	cd 01       	movw	r24, r26
 8c0:	08 95       	ret

000008c2 <_exit>:
 8c2:	ff cf       	rjmp	.-2      	; 0x8c2 <_exit>

⌨️ 快捷键说明

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