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

📄 main.lss

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

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000008c4  00000000  00000000  00000094  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000001a  00800060  000008c4  00000958  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000003  0080007a  0080007a  00000972  2**0
                  ALLOC
  3 .stab         00000378  00000000  00000000  00000974  2**2
                  CONTENTS, READONLY, DEBUGGING
  4 .stabstr      00000071  00000000  00000000  00000cec  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_aranges 00000020  00000000  00000000  00000d5d  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 00000193  00000000  00000000  00000d7d  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   00000b20  00000000  00000000  00000f10  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 000002cc  00000000  00000000  00001a30  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   0000098d  00000000  00000000  00001cfc  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_frame  000001c0  00000000  00000000  0000268c  2**2
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_str    0000023f  00000000  00000000  0000284c  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_loc    00000618  00000000  00000000  00002a8b  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 49 00 	jmp	0x92	; 0x92 <__ctors_end>
   4:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
   8:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
   c:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  10:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  14:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  18:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  1c:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  20:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  24:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  28:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  2c:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  30:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  34:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  38:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  3c:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  40:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  44:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  48:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  4c:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  50:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  54:	cc 02       	muls	r28, r28
  56:	d2 02       	muls	r29, r18
  58:	d0 02       	muls	r29, r16
  5a:	db 02       	muls	r29, r27
  5c:	db 02       	muls	r29, r27
  5e:	db 02       	muls	r29, r27
  60:	db 02       	muls	r29, r27
  62:	db 02       	muls	r29, r27
  64:	d0 02       	muls	r29, r16
  66:	d2 02       	muls	r29, r18
  68:	cc 02       	muls	r28, r28
  6a:	ce 02       	muls	r28, r30
  6c:	d0 02       	muls	r29, r16
  6e:	db 02       	muls	r29, r27
  70:	db 02       	muls	r29, r27
  72:	db 02       	muls	r29, r27
  74:	db 02       	muls	r29, r27
  76:	db 02       	muls	r29, r27
  78:	d4 02       	muls	r29, r20
  7a:	d2 02       	muls	r29, r18
  7c:	d2 02       	muls	r29, r18
  7e:	d2 02       	muls	r29, r18
  80:	d4 02       	muls	r29, r20
  82:	db 02       	muls	r29, r27
  84:	db 02       	muls	r29, r27
  86:	db 02       	muls	r29, r27
  88:	db 02       	muls	r29, r27
  8a:	d6 02       	muls	r29, r22
  8c:	d8 02       	muls	r29, r24
  8e:	d8 02       	muls	r29, r24
  90:	d8 02       	muls	r29, r24

00000092 <__ctors_end>:
  92:	11 24       	eor	r1, r1
  94:	1f be       	out	0x3f, r1	; 63
  96:	cf e5       	ldi	r28, 0x5F	; 95
  98:	d4 e0       	ldi	r29, 0x04	; 4
  9a:	de bf       	out	0x3e, r29	; 62
  9c:	cd bf       	out	0x3d, r28	; 61

0000009e <__do_copy_data>:
  9e:	10 e0       	ldi	r17, 0x00	; 0
  a0:	a0 e6       	ldi	r26, 0x60	; 96
  a2:	b0 e0       	ldi	r27, 0x00	; 0
  a4:	e4 ec       	ldi	r30, 0xC4	; 196
  a6:	f8 e0       	ldi	r31, 0x08	; 8
  a8:	02 c0       	rjmp	.+4      	; 0xae <.do_copy_data_start>

000000aa <.do_copy_data_loop>:
  aa:	05 90       	lpm	r0, Z+
  ac:	0d 92       	st	X+, r0

000000ae <.do_copy_data_start>:
  ae:	aa 37       	cpi	r26, 0x7A	; 122
  b0:	b1 07       	cpc	r27, r17
  b2:	d9 f7       	brne	.-10     	; 0xaa <.do_copy_data_loop>

000000b4 <__do_clear_bss>:
  b4:	10 e0       	ldi	r17, 0x00	; 0
  b6:	aa e7       	ldi	r26, 0x7A	; 122
  b8:	b0 e0       	ldi	r27, 0x00	; 0
  ba:	01 c0       	rjmp	.+2      	; 0xbe <.do_clear_bss_start>

000000bc <.do_clear_bss_loop>:
  bc:	1d 92       	st	X+, r1

000000be <.do_clear_bss_start>:
  be:	ad 37       	cpi	r26, 0x7D	; 125
  c0:	b1 07       	cpc	r27, r17
  c2:	e1 f7       	brne	.-8      	; 0xbc <.do_clear_bss_loop>
  c4:	0e 94 12 04 	call	0x824	; 0x824 <main>
  c8:	0c 94 61 04 	jmp	0x8c2	; 0x8c2 <_exit>

000000cc <__bad_interrupt>:
  cc:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

000000d0 <sendbyte>:

//向LCD发送一个字节******************************************************************************
 
 void sendbyte(unsigned char senddata)
  {
  d0:	48 2f       	mov	r20, r24
    int i=0,j=0;
	Set_WData();     //数据输出,DDRA=0XFF; 设置端口A为写(输出)
  d2:	8f ef       	ldi	r24, 0xFF	; 255
  d4:	8a bb       	out	0x1a, r24	; 26
    cS_1();                   //模组片选端有效
  d6:	db 9a       	sbi	0x1b, 3	; 27
    CLK_0();                  //时钟设低电平,以便产生上升沿
  d8:	d9 98       	cbi	0x1b, 1	; 27
  da:	20 e0       	ldi	r18, 0x00	; 0
  dc:	30 e0       	ldi	r19, 0x00	; 0
  de:	e1 e0       	ldi	r30, 0x01	; 1
  e0:	f0 e0       	ldi	r31, 0x00	; 0
  
      for(i=0;i<8;i++)  //八位
      {
	     if(senddata&0x80)   //从高到低将数据传送到LCD,如果该位是1则SID置1,否则SID置0
  e2:	47 ff       	sbrs	r20, 7
  e4:	02 c0       	rjmp	.+4      	; 0xea <sendbyte+0x1a>
		    SID_1();
  e6:	da 9a       	sbi	0x1b, 2	; 27
  e8:	01 c0       	rjmp	.+2      	; 0xec <sendbyte+0x1c>
	     else
		    SID_0();		
  ea:	da 98       	cbi	0x1b, 2	; 27
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  ec:	cf 01       	movw	r24, r30
  ee:	01 97       	sbiw	r24, 0x01	; 1
  f0:	f1 f7       	brne	.-4      	; 0xee <sendbyte+0x1e>
	     _delay_ms(0.0001);         //延时
	     CLK_1();            //上升沿读取SID数据写到LCD
  f2:	d9 9a       	sbi	0x1b, 1	; 27
	     senddata<<=1;       //数据左移一位
	     CLK_0();            //时钟设低电平
  f4:	d9 98       	cbi	0x1b, 1	; 27
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  f6:	cf 01       	movw	r24, r30
  f8:	01 97       	sbiw	r24, 0x01	; 1
  fa:	f1 f7       	brne	.-4      	; 0xf8 <sendbyte+0x28>
  fc:	2f 5f       	subi	r18, 0xFF	; 255
  fe:	3f 4f       	sbci	r19, 0xFF	; 255
 100:	28 30       	cpi	r18, 0x08	; 8
 102:	31 05       	cpc	r19, r1
 104:	11 f0       	breq	.+4      	; 0x10a <sendbyte+0x3a>
 106:	44 0f       	add	r20, r20
 108:	ec cf       	rjmp	.-40     	; 0xe2 <sendbyte+0x12>
		  _delay_ms(0.0001);
      }
    cS_0();                  //片选无效
 10a:	db 98       	cbi	0x1b, 3	; 27
 10c:	08 95       	ret

0000010e <readByte>:
  }

//从LCD读一个字节**********************************************************************************
//参数 readtype 指明所要读的数据是"指令数据"还是"显示数据"

 unsigned char readByte(unsigned char readtype)
 {
 10e:	9f ef       	ldi	r25, 0xFF	; 255
 110:	9a bb       	out	0x1a, r25	; 26
  int i=0;
  Set_WData();                 //数据输出
  sendbyte(readtype);          //告诉LCD读什么样的数据
 112:	0e 94 68 00 	call	0xd0	; 0xd0 <sendbyte>
  cS_1();                      //模组片选端有效
 116:	db 9a       	sbi	0x1b, 3	; 27
  CLK_0();                     //低电平,以便产生上升沿
 118:	d9 98       	cbi	0x1b, 1	; 27
  //DDRA&=0xFB;                  // set SID(PA2) input,others ouput
  Set_RData();
 11a:	8b ef       	ldi	r24, 0xFB	; 251
 11c:	8a bb       	out	0x1a, r24	; 26
 11e:	20 e0       	ldi	r18, 0x00	; 0
 120:	30 e0       	ldi	r19, 0x00	; 0
 122:	60 e0       	ldi	r22, 0x00	; 0
 124:	e0 ed       	ldi	r30, 0xD0	; 208
 126:	f7 e0       	ldi	r31, 0x07	; 7

  unsigned char temph=0,templ=0,temp=0;
  
  for(i=0;i<7;i++)       //读高四位
  {
	    CLK_1();              //上升沿,读一位
 128:	d9 9a       	sbi	0x1b, 1	; 27
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 12a:	cf 01       	movw	r24, r30
 12c:	01 97       	sbiw	r24, 0x01	; 1
 12e:	f1 f7       	brne	.-4      	; 0x12c <readByte+0x1e>
         _delay_ms(1);
	    if(PINA&0x04)
 130:	ca 99       	sbic	0x19, 2	; 25
			temph=temph|1;
 132:	61 60       	ori	r22, 0x01	; 1
	    temph<<=1;            //存到temph中
 134:	66 0f       	add	r22, r22
		CLK_0();
 136:	d9 98       	cbi	0x1b, 1	; 27
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 138:	cf 01       	movw	r24, r30
 13a:	01 97       	sbiw	r24, 0x01	; 1
 13c:	f1 f7       	brne	.-4      	; 0x13a <readByte+0x2c>
 13e:	2f 5f       	subi	r18, 0xFF	; 255
 140:	3f 4f       	sbci	r19, 0xFF	; 255
 142:	27 30       	cpi	r18, 0x07	; 7
 144:	31 05       	cpc	r19, r1
 146:	81 f7       	brne	.-32     	; 0x128 <readByte+0x1a>
		 _delay_ms(1);
  }
  CLK_1();              //上升沿,读一位
 148:	d9 9a       	sbi	0x1b, 1	; 27
  CLK_0();
 14a:	d9 98       	cbi	0x1b, 1	; 27
 14c:	40 e0       	ldi	r20, 0x00	; 0
 14e:	50 e0       	ldi	r21, 0x00	; 0
 150:	20 e0       	ldi	r18, 0x00	; 0
 152:	e0 ed       	ldi	r30, 0xD0	; 208
 154:	f7 e0       	ldi	r31, 0x07	; 7
  
  for(i=0;i<7;i++)      //读低四位
  {
	   CLK_1();
 156:	d9 9a       	sbi	0x1b, 1	; 27
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 158:	cf 01       	movw	r24, r30
 15a:	01 97       	sbiw	r24, 0x01	; 1
 15c:	f1 f7       	brne	.-4      	; 0x15a <readByte+0x4c>
        _delay_ms(1);
	   if(PINA&0x04)
 15e:	ca 99       	sbic	0x19, 2	; 25
		    templ=templ|1;
 160:	21 60       	ori	r18, 0x01	; 1
	   templ<<=1;            //存到templ中
 162:	22 0f       	add	r18, r18
	   CLK_0();
 164:	d9 98       	cbi	0x1b, 1	; 27
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 166:	cf 01       	movw	r24, r30
 168:	01 97       	sbiw	r24, 0x01	; 1
 16a:	f1 f7       	brne	.-4      	; 0x168 <readByte+0x5a>
 16c:	4f 5f       	subi	r20, 0xFF	; 255
 16e:	5f 4f       	sbci	r21, 0xFF	; 255
 170:	47 30       	cpi	r20, 0x07	; 7
 172:	51 05       	cpc	r21, r1
 174:	81 f7       	brne	.-32     	; 0x156 <readByte+0x48>
	    _delay_ms(1);
  }
  CLK_1();              //上升沿,读一位
 176:	d9 9a       	sbi	0x1b, 1	; 27
  
  temp=(temph&0xf0)|((templ&0xf0)>>4);     //存到temp中
  Set_WData();                     // GPDIR 的CS,SID,SCLK为输出 
 178:	8f ef       	ldi	r24, 0xFF	; 255
 17a:	8a bb       	out	0x1a, r24	; 26
  cS_0();                                   //模组片选无效
 17c:	db 98       	cbi	0x1b, 3	; 27
 17e:	60 7f       	andi	r22, 0xF0	; 240
 180:	22 95       	swap	r18
 182:	2f 70       	andi	r18, 0x0F	; 15
 184:	26 2b       	or	r18, r22
  return(temp);
 }
 186:	82 2f       	mov	r24, r18
 188:	99 27       	eor	r25, r25
 18a:	08 95       	ret

0000018c <busywait>:

//判断忙否,直到不忙才往下运行***********************************************************************

void busywait(void)
{
 18c:	8c ef       	ldi	r24, 0xFC	; 252
 18e:	0e 94 87 00 	call	0x10e	; 0x10e <readByte>
  unsigned char bf;
  do
  {
	bf=readByte(_rcomm_);      //读指令
  }
  while(bf&0x80);
 192:	87 fd       	sbrc	r24, 7
 194:	fb cf       	rjmp	.-10     	; 0x18c <busywait>
 196:	08 95       	ret

00000198 <wr_comm_lcd>:
}


//写入一个字节的命令******************************************************************************
//参数 command 指明所要写入LCD的命令

void wr_comm_lcd(unsigned char command)
{
 198:	1f 93       	push	r17
 19a:	18 2f       	mov	r17, r24
  //busywait();                      //忙否
  sendbyte(_wcomm_);               //告诉LCD要写指令了
 19c:	88 ef       	ldi	r24, 0xF8	; 248
 19e:	0e 94 68 00 	call	0xd0	; 0xd0 <sendbyte>
  sendbyte(command&0xf0);          //写指令的高四位
 1a2:	81 2f       	mov	r24, r17
 1a4:	80 7f       	andi	r24, 0xF0	; 240
 1a6:	0e 94 68 00 	call	0xd0	; 0xd0 <sendbyte>
  sendbyte((command&0x0f)<<4);     //写指令的低四位
 1aa:	81 2f       	mov	r24, r17
 1ac:	82 95       	swap	r24
 1ae:	80 7f       	andi	r24, 0xF0	; 240
 1b0:	0e 94 68 00 	call	0xd0	; 0xd0 <sendbyte>
 1b4:	1f 91       	pop	r17
 1b6:	08 95       	ret

000001b8 <wr_data_lcd>:
}

//写入一个字节的数据*****************************************************************************
//参数 wdata 指明所要发送的显示数据

void wr_data_lcd(unsigned char wdata)
{
 1b8:	1f 93       	push	r17
 1ba:	18 2f       	mov	r17, r24
  //busywait();                     //忙否
  sendbyte(_wdata_);              //告诉LCD要写数据了
 1bc:	8a ef       	ldi	r24, 0xFA	; 250
 1be:	0e 94 68 00 	call	0xd0	; 0xd0 <sendbyte>
  sendbyte(wdata&0xF0);           //写数据的高四位
 1c2:	81 2f       	mov	r24, r17
 1c4:	80 7f       	andi	r24, 0xF0	; 240
 1c6:	0e 94 68 00 	call	0xd0	; 0xd0 <sendbyte>
  sendbyte((wdata&0x0F)<<4);     //写数据的低四位
 1ca:	81 2f       	mov	r24, r17
 1cc:	82 95       	swap	r24
 1ce:	80 7f       	andi	r24, 0xF0	; 240
 1d0:	0e 94 68 00 	call	0xd0	; 0xd0 <sendbyte>
 1d4:	1f 91       	pop	r17
 1d6:	08 95       	ret

000001d8 <init_lcd>:
}

//液晶屏幕初始化************************************************************************************

void init_lcd(void)
{
 1d8:	0f 93       	push	r16
 1da:	1f 93       	push	r17
  RET_0();                      //复位 低电平有效
 1dc:	d8 98       	cbi	0x1b, 0	; 27
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 1de:	00 ed       	ldi	r16, 0xD0	; 208
 1e0:	17 e0       	ldi	r17, 0x07	; 7
 1e2:	c8 01       	movw	r24, r16
 1e4:	01 97       	sbiw	r24, 0x01	; 1
 1e6:	f1 f7       	brne	.-4      	; 0x1e4 <init_lcd+0xc>
  _delay_ms(1);                //延时
  RET_1(); 
 1e8:	d8 9a       	sbi	0x1b, 0	; 27
  Set_WData();                  //写(输出)
 1ea:	8f ef       	ldi	r24, 0xFF	; 255
 1ec:	8a bb       	out	0x1a, r24	; 26
  wr_comm_lcd(0x30);            //功能设置,基本指令集动作
 1ee:	80 e3       	ldi	r24, 0x30	; 48
 1f0:	0e 94 cc 00 	call	0x198	; 0x198 <wr_comm_lcd>
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 1f4:	c8 01       	movw	r24, r16
 1f6:	01 97       	sbiw	r24, 0x01	; 1
 1f8:	f1 f7       	brne	.-4      	; 0x1f6 <init_lcd+0x1e>
  _delay_ms(1);                //延时
  wr_comm_lcd(0x0c);            //显示状态ON,游标OFF,反白OFF
 1fa:	8c e0       	ldi	r24, 0x0C	; 12

⌨️ 快捷键说明

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