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

📄 main.lss

📁 AVR atmega64串口驱动
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     6ac:	80 93 5c 0a 	sts	0x0A5C, r24
  addr_e=0;            		//tc35 失败=1
     6b0:	80 91 5c 0a 	lds	r24, 0x0A5C
     6b4:	87 7f       	andi	r24, 0xF7	; 247
     6b6:	80 93 5c 0a 	sts	0x0A5C, r24
  read_sms=0;          		//标记有新短信,主动处理一次
     6ba:	80 91 5c 0a 	lds	r24, 0x0A5C
     6be:	8f 7e       	andi	r24, 0xEF	; 239
     6c0:	80 93 5c 0a 	sts	0x0A5C, r24
  sms_t=0;             		//正在发送短信 0=没有发送  
     6c4:	80 91 66 0a 	lds	r24, 0x0A66
     6c8:	8f 77       	andi	r24, 0x7F	; 127
     6ca:	80 93 66 0a 	sts	0x0A66, r24
  error=0;
     6ce:	80 91 5c 0a 	lds	r24, 0x0A5C
     6d2:	8f 77       	andi	r24, 0x7F	; 127
     6d4:	80 93 5c 0a 	sts	0x0A5C, r24
  ok=0;
     6d8:	80 91 5c 0a 	lds	r24, 0x0A5C
     6dc:	8f 7d       	andi	r24, 0xDF	; 223
     6de:	80 93 5c 0a 	sts	0x0A5C, r24
  qu=0; 
     6e2:	80 91 5c 0a 	lds	r24, 0x0A5C
     6e6:	8f 7b       	andi	r24, 0xBF	; 191
     6e8:	80 93 5c 0a 	sts	0x0A5C, r24
  request_msm_to=0; 
     6ec:	80 91 5a 0a 	lds	r24, 0x0A5A
     6f0:	8f 77       	andi	r24, 0x7F	; 127
     6f2:	80 93 5a 0a 	sts	0x0A5A, r24
  count30s=20;  
     6f6:	84 e1       	ldi	r24, 0x14	; 20
     6f8:	80 93 21 02 	sts	0x0221, r24
  WDT_C=0;
     6fc:	80 91 5c 0a 	lds	r24, 0x0A5C
     700:	8e 7f       	andi	r24, 0xFE	; 254
     702:	80 93 5c 0a 	sts	0x0A5C, r24
  Receiver_c=0;//接收机
     706:	80 91 5a 0a 	lds	r24, 0x0A5A
     70a:	8d 7f       	andi	r24, 0xFD	; 253
     70c:	80 93 5a 0a 	sts	0x0A5A, r24
  Transmitter_c=0;//发射机
     710:	80 91 5a 0a 	lds	r24, 0x0A5A
     714:	8b 7f       	andi	r24, 0xFB	; 251
     716:	80 93 5a 0a 	sts	0x0A5A, r24
  Frequency_c=0;//频率精度
     71a:	80 91 5a 0a 	lds	r24, 0x0A5A
     71e:	87 7f       	andi	r24, 0xF7	; 247
     720:	80 93 5a 0a 	sts	0x0A5A, r24
     724:	08 95       	ret

00000726 <int_init>:
}
//外中断初始化
void int_init(void)
{
     726:	08 95       	ret

00000728 <init_devices>:

}
//系统初始化
void init_devices(void)
{
	cli(); 						//禁止所有中断
     728:	f8 94       	cli
	MCUCR  = 0x00;
     72a:	15 be       	out	0x35, r1	; 53
	MCUCSR |= 0x80;				//禁止JTAG
     72c:	84 b7       	in	r24, 0x34	; 52
     72e:	80 68       	ori	r24, 0x80	; 128
     730:	84 bf       	out	0x34, r24	; 52
	port_init();
     732:	0e 94 17 03 	call	0x62e <port_init>
	timer ();
     736:	0e 94 34 05 	call	0xa68 <timer>
	int_init();
	UART0_InitUART(9600);		//硬件串口0初始化
     73a:	60 e8       	ldi	r22, 0x80	; 128
     73c:	75 e2       	ldi	r23, 0x25	; 37
     73e:	80 e0       	ldi	r24, 0x00	; 0
     740:	90 e0       	ldi	r25, 0x00	; 0
     742:	0e 94 8c 18 	call	0x3118 <UART0_InitUART>
	UART1_InitUART(9600);	//串口1  9600,接收
     746:	60 e8       	ldi	r22, 0x80	; 128
     748:	75 e2       	ldi	r23, 0x25	; 37
     74a:	80 e0       	ldi	r24, 0x00	; 0
     74c:	90 e0       	ldi	r25, 0x00	; 0
     74e:	0e 94 55 19 	call	0x32aa <UART1_InitUART>
	Variable_init();
     752:	0e 94 30 03 	call	0x660 <Variable_init>
	sei();//开全局中断
     756:	78 94       	sei
     758:	08 95       	ret

0000075a <main>:
}

//--------------------------------------------------------------------- 
//主函数
int main(void)
{    
     75a:	cf ef       	ldi	r28, 0xFF	; 255
     75c:	d0 e1       	ldi	r29, 0x10	; 16
     75e:	de bf       	out	0x3e, r29	; 62
     760:	cd bf       	out	0x3d, r28	; 61
    wdt_enable(WDTO_2S);//启用看门狗,2S 
     762:	88 e1       	ldi	r24, 0x18	; 24
     764:	90 e0       	ldi	r25, 0x00	; 0
     766:	2f e0       	ldi	r18, 0x0F	; 15
     768:	0f b6       	in	r0, 0x3f	; 63
     76a:	f8 94       	cli
     76c:	a8 95       	wdr
     76e:	81 bd       	out	0x21, r24	; 33
     770:	0f be       	out	0x3f, r0	; 63
     772:	21 bd       	out	0x21, r18	; 33
	init_devices();//系统初始化
     774:	0e 94 94 03 	call	0x728 <init_devices>
	CPU_STATUS =MCUCSR;			//读取MCU控制和状态寄存器
     778:	84 b7       	in	r24, 0x34	; 52
    CPU_STATUS&=0x1F;
     77a:	8f 71       	andi	r24, 0x1F	; 31
     77c:	80 93 59 0a 	sts	0x0A59, r24
    switch (CPU_STATUS)
     780:	88 30       	cpi	r24, 0x08	; 8
     782:	29 f4       	brne	.+10     	; 0x78e <main+0x34>
    {
    case (1<<WDRF):			//看门狗引起的复位?
        WDT_C=1;//标记看门狗复位,在密码发给我
     784:	80 91 5c 0a 	lds	r24, 0x0A5C
     788:	81 60       	ori	r24, 0x01	; 1
     78a:	80 93 5c 0a 	sts	0x0A5C, r24
        break;
    default:				//多种复位同时发生?
    break;
    }
    MCUCSR=0x80;			//清除标志位	
     78e:	80 e8       	ldi	r24, 0x80	; 128
     790:	84 bf       	out	0x34, r24	; 52
	sms_counts(14);//密码qu
     792:	8e e0       	ldi	r24, 0x0E	; 14
     794:	0e 94 67 0a 	call	0x14ce <sms_counts>
    sms_counts(8);//上电报告
     798:	88 e0       	ldi	r24, 0x08	; 8
     79a:	0e 94 67 0a 	call	0x14ce <sms_counts>
	sms_counts(5);//发送状态报告
     79e:	85 e0       	ldi	r24, 0x05	; 5
     7a0:	0e 94 67 0a 	call	0x14ce <sms_counts>
	clr_ds18b20_dq();
     7a4:	c6 98       	cbi	0x18, 6	; 24
	set_ds18b20_dq_ddr();
     7a6:	be 9a       	sbi	0x17, 6	; 23
	convert_ds18b20();			//DS18B20初始化
     7a8:	0e 94 84 1a 	call	0x3508 <convert_ds18b20>
	eeprom_read();//调入初始设置
     7ac:	0e 94 1e 07 	call	0xe3c <eeprom_read>
	read_temperature();		//读温度
     7b0:	0e 94 93 1a 	call	0x3526 <read_temperature>
	adv_m=27.5*AdcConvert(ADC_POW);  //电源电压
     7b4:	80 e0       	ldi	r24, 0x00	; 0
     7b6:	0e 94 37 05 	call	0xa6e <AdcConvert>
     7ba:	8c 01       	movw	r16, r24
     7bc:	c8 01       	movw	r24, r16
     7be:	aa 27       	eor	r26, r26
     7c0:	97 fd       	sbrc	r25, 7
     7c2:	a0 95       	com	r26
     7c4:	ba 2f       	mov	r27, r26
     7c6:	bc 01       	movw	r22, r24
     7c8:	cd 01       	movw	r24, r26
     7ca:	0e 94 1d 1d 	call	0x3a3a <__floatsisf>
     7ce:	17 ff       	sbrs	r17, 7
     7d0:	06 c0       	rjmp	.+12     	; 0x7de <main+0x84>
     7d2:	20 e0       	ldi	r18, 0x00	; 0
     7d4:	30 e0       	ldi	r19, 0x00	; 0
     7d6:	40 e8       	ldi	r20, 0x80	; 128
     7d8:	57 e4       	ldi	r21, 0x47	; 71
     7da:	0e 94 be 1c 	call	0x397c <__addsf3>
     7de:	20 e0       	ldi	r18, 0x00	; 0
     7e0:	30 e0       	ldi	r19, 0x00	; 0
     7e2:	4c ed       	ldi	r20, 0xDC	; 220
     7e4:	51 e4       	ldi	r21, 0x41	; 65
     7e6:	0e 94 72 1d 	call	0x3ae4 <__mulsf3>
     7ea:	dc 01       	movw	r26, r24
     7ec:	cb 01       	movw	r24, r22
     7ee:	bc 01       	movw	r22, r24
     7f0:	cd 01       	movw	r24, r26
     7f2:	0e 94 00 1d 	call	0x3a00 <__fixsfsi>
     7f6:	dc 01       	movw	r26, r24
     7f8:	cb 01       	movw	r24, r22
     7fa:	90 93 1e 02 	sts	0x021E, r25
     7fe:	80 93 1d 02 	sts	0x021D, r24
	Condition_control();               //状态控制
     802:	0e 94 19 07 	call	0xe32 <Condition_control>
	CLR_IGT;//GSM开机
     806:	1a 98       	cbi	0x03, 2	; 3
    DelayMs(100);
     808:	84 e6       	ldi	r24, 0x64	; 100
     80a:	90 e0       	ldi	r25, 0x00	; 0
     80c:	0e 94 cd 05 	call	0xb9a <DelayMs>
    SET_IGT;//拉高
     810:	1a 9a       	sbi	0x03, 2	; 3
	DelayMs(1000);
     812:	88 ee       	ldi	r24, 0xE8	; 232
     814:	93 e0       	ldi	r25, 0x03	; 3
     816:	0e 94 cd 05 	call	0xb9a <DelayMs>
	UART0_Transmitstr("应答器遥测启动");  
     81a:	82 e3       	ldi	r24, 0x32	; 50
     81c:	91 e0       	ldi	r25, 0x01	; 1
     81e:	0e 94 25 19 	call	0x324a <UART0_Transmitstr>
	CR;  
     822:	89 e2       	ldi	r24, 0x29	; 41
     824:	91 e0       	ldi	r25, 0x01	; 1
     826:	0e 94 25 19 	call	0x324a <UART0_Transmitstr>
	DelayMs(500);
     82a:	84 ef       	ldi	r24, 0xF4	; 244
     82c:	91 e0       	ldi	r25, 0x01	; 1
     82e:	0e 94 cd 05 	call	0xb9a <DelayMs>
	while(UART0_DataInReceiveBuffer()) UART0_ReceiveByte(); //清空接收区
     832:	02 c0       	rjmp	.+4      	; 0x838 <main+0xde>
     834:	0e 94 02 19 	call	0x3204 <UART0_ReceiveByte>
     838:	0e 94 49 19 	call	0x3292 <UART0_DataInReceiveBuffer>
     83c:	88 23       	and	r24, r24
     83e:	d1 f7       	brne	.-12     	; 0x834 <main+0xda>
	while(1)
	{	

		if(time100ms==1)
     840:	80 91 5b 0a 	lds	r24, 0x0A5B
     844:	80 ff       	sbrs	r24, 0
     846:	06 c0       	rjmp	.+12     	; 0x854 <main+0xfa>
		{
			time100ms=0;	
     848:	80 91 5b 0a 	lds	r24, 0x0A5B
     84c:	8e 7f       	andi	r24, 0xFE	; 254
     84e:	80 93 5b 0a 	sts	0x0A5B, r24
			wdt_reset();//复位看门狗
     852:	a8 95       	wdr
		}
		if(time500ms==1)
     854:	80 91 5b 0a 	lds	r24, 0x0A5B
     858:	86 95       	lsr	r24
     85a:	80 ff       	sbrs	r24, 0
     85c:	08 c0       	rjmp	.+16     	; 0x86e <main+0x114>
		{
			time500ms=0;
     85e:	80 91 5b 0a 	lds	r24, 0x0A5B
     862:	8d 7f       	andi	r24, 0xFD	; 253
     864:	80 93 5b 0a 	sts	0x0A5B, r24
			wdt_reset();//复位看门狗
     868:	a8 95       	wdr
			sms_event_circulation ();  //监测发送短信
     86a:	0e 94 d2 14 	call	0x29a4 <sms_event_circulation>
		}
		if(time1s==1)
     86e:	80 91 5b 0a 	lds	r24, 0x0A5B
     872:	86 95       	lsr	r24
     874:	86 95       	lsr	r24
     876:	80 ff       	sbrs	r24, 0
     878:	0a c0       	rjmp	.+20     	; 0x88e <main+0x134>
		{
			time1s=0;
     87a:	80 91 5b 0a 	lds	r24, 0x0A5B
     87e:	8b 7f       	andi	r24, 0xFB	; 251
     880:	80 93 5b 0a 	sts	0x0A5B, r24
			wdt_reset();//复位看门狗
     884:	a8 95       	wdr
			Condition_control();               //状态控制
     886:	0e 94 19 07 	call	0xe32 <Condition_control>
			read_sms_1();                      //接收解码短信		
     88a:	0e 94 0b 16 	call	0x2c16 <read_sms_1>
		}
		if(time3s==1)
     88e:	80 91 5b 0a 	lds	r24, 0x0A5B
     892:	86 95       	lsr	r24
     894:	86 95       	lsr	r24
     896:	86 95       	lsr	r24
     898:	80 ff       	sbrs	r24, 0
     89a:	08 c0       	rjmp	.+16     	; 0x8ac <main+0x152>
		{
			time3s=0;	
     89c:	80 91 5b 0a 	lds	r24, 0x0A5B
     8a0:	87 7f       	andi	r24, 0xF7	; 247
     8a2:	80 93 5b 0a 	sts	0x0A5B, r24
			wdt_reset();//复位看门狗		
     8a6:	a8 95       	wdr
            read_inbuf();                //检查新的短信息
     8a8:	0e 94 e0 11 	call	0x23c0 <read_inbuf>
			//UART0_Transmitstr("温度:"); 
			//hex_bcd1(temper);
			//UART0_Transmitstr("电压:"); 
			//hex_bcd1(adv_m);
			//Data_acquisition();//应答器数据采集
		}
		if(time30s==1)
     8ac:	80 91 5a 0a 	lds	r24, 0x0A5A
     8b0:	82 95       	swap	r24
     8b2:	86 95       	lsr	r24
     8b4:	86 95       	lsr	r24
     8b6:	83 70       	andi	r24, 0x03	; 3
     8b8:	80 ff       	sbrs	r24, 0
     8ba:	0f c0       	rjmp	.+30     	; 0x8da <main+0x180>
		{
			time30s=0;
     8bc:	80 91 5a 0a 	lds	r24, 0x0A5A
     8c0:	8f 7b       	andi	r24, 0xBF	; 191
     8c2:	80 93 5a 0a 	sts	0x0A5A, r24
			wdt_reset();					//复位看门狗
     8c6:	a8 95       	wdr
			read_sms=1; 					//轮寻读取短信
     8c8:	80 91 5c 0a 	lds	r24, 0x0A5C
     8cc:	80 61       	ori	r24, 0x10	; 16
     8ce:	80 93 5c 0a 	sts	0x0A5C, r24
			write_addr();                   //短信中心	 ok
     8d2:	0e 94 21 13 	call	0x2642 <write_addr>
			tc35_count ();					//TC35初始化
     8d6:	0e 94 7d 12 	call	0x24fa <tc35_count>
		//*******************************************************		
			//signal_c=1;//测试,不用装卡发短信
		   // addr_e=1;//测试,不用装卡发短信
		//*******************************************************
	    }
		if(time1m==1)
     8da:	80 91 5b 0a 	lds	r24, 0x0A5B
     8de:	82 95       	swap	r24
     8e0:	8f 70       	andi	r24, 0x0F	; 15
     8e2:	80 ff       	sbrs	r24, 0
     8e4:	09 c0       	rjmp	.+18     	; 0x8f8 <main+0x19e>
		{
			time1m=0;
     8e6:	80 91 5b 0a 	lds	r24, 0x0A5B
     8ea:	8f 7e       	andi	r24, 0xEF	; 239
     8ec:	80 93 5b 0a 	sts	0x0A5B, r24
			Charge_Control();//充电控制
     8f0:	0e 94 6e 06 	call	0xcdc <Charge_Control>
			Data_acquisition();//应答器数据采集
     8f4:	0e 94 2b 1b 	call	0x3656 <Data_acquisition>
		}
		if(time1h==1)
     8f8:	80 91 5b 0a 	lds	r24, 0x0A5B
     8fc:	82 95       	swap	r24
     8fe:	86 95       	lsr	r24
     900:	87 70       	andi	r24, 0x07	; 7
     902:	80 ff       	sbrs	r24, 0
     904:	9d cf       	rjmp	.-198    	; 0x840 <main+0xe6>
		{
			time1h=0;
     906:	80 91 5b 0a 	lds	r24, 0x0A5B
     90a:	8f 7d       	andi	r24, 0xDF	; 223
     90c:	80 93 5b 0a 	sts	0x0A5B, r24
			Communication_tx();//定时发送监测数据
     910:	0e 94 61 1c 	call	0x38c2 <Communication_tx>
     914:	95 cf       	rjmp	.-214    	; 0x840 <main+0xe6>

00000916 <timer2_init>:
//***********************
//定时器T2初始化,系统核心时钟,重要重要
void timer2_init(void)
{
	TCCR2  = 0x00;//停止定时器
     916:	15 bc       	out	0x25, r1	; 37
	ASSR   = 0x00;//异步时钟模式
     918:	10 be       	out	0x30, r1	; 48
	TCNT2  = 0x10;//初始值
     91a:	80 e1       	ldi	r24, 0x10	; 16
     91c:	84 bd       	out	0x24, r24	; 36
	OCR2   = 0xF0;//匹配值
     91e:	80 ef       	ldi	r24, 0xF0	; 240
     920:	83 bd       	out	0x23, r24	; 35
	TIMSK |= 0x80;//中断允许
     922:	87 b7       	in	r24, 0x37	; 55
     924:	80 68       	ori	r24, 0x80	; 128
     926:	87 bf       	out	0x37, r24	; 55
	TCCR2  = 0x0D;//启动定时器 1024分频 33.333MS
     928:	8d e0       	ldi	r24, 0x0D	; 13

⌨️ 快捷键说明

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