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

📄 temperature.lst

📁 ADC采集温度数据通过nrf905发送出去
💻 LST
📖 第 1 页 / 共 5 页
字号:
      93 2444      CLR	R4
      94 2455      CLR	R5
      95 1628      CP	R2,R24
      96 0639      CPC	R3,R25
      97 064A      CPC	R4,R26
      98 065B      CPC	R5,R27
      99 F394      BLT	0x008C
      9A 5F4F      SUBI	R20,0xFF
      9B 4F5F      SBCI	R21,0xFF
      9C 1740      CP	R20,R16
      9D 0751      CPC	R21,R17
      9E F350      BCS	0x0089
      9F C8E1      RJMP	pop_xgsetF000
_ms:
  i                    --> R20
  j                    --> R22
  n                    --> R16
      A0 D8DB      RCALL	push_xgsetF000
(0269) }
(0270) 
(0271) void ms(WORD n)
(0272) {	//延时n毫秒
(0273) 	WORD i,j;
(0274) 
(0275) 	for(i=0; i<n; i++)
      A1 2744      CLR	R20
      A2 2755      CLR	R21
      A3 C013      RJMP	0x00B7
(0276) 		for(j=0; j<MS_COUNT;j++);
      A4 2766      CLR	R22
      A5 2777      CLR	R23
      A6 C002      RJMP	0x00A9
      A7 5F6F      SUBI	R22,0xFF
      A8 4F7F      SBCI	R23,0xFF
      A9 EB81      LDI	R24,0xB1
      AA E091      LDI	R25,1
      AB E0A0      LDI	R26,0
      AC E0B0      LDI	R27,0
      AD 011B      MOVW	R2,R22
      AE 2444      CLR	R4
      AF 2455      CLR	R5
      B0 1628      CP	R2,R24
      B1 0639      CPC	R3,R25
      B2 064A      CPC	R4,R26
      B3 065B      CPC	R5,R27
      B4 F394      BLT	0x00A7
      B5 5F4F      SUBI	R20,0xFF
      B6 4F5F      SBCI	R21,0xFF
      B7 1740      CP	R20,R16
      B8 0751      CPC	R21,R17
      B9 F350      BCS	0x00A4
      BA C8C6      RJMP	pop_xgsetF000
_us:
  i                    --> R20
  j                    --> R22
  n                    --> R16
      BB D8C0      RCALL	push_xgsetF000
(0277) }
(0278) 
(0279) void us(WORD n)
(0280) {	//延时n毫秒
(0281) 	WORD i,j;
(0282) 
(0283) 	for(i=0; i<n; i++)
      BC 2744      CLR	R20
      BD 2755      CLR	R21
      BE C013      RJMP	0x00D2
(0284) 		for(j=0; j<MS_COUNT/1000;j++);
      BF 2766      CLR	R22
      C0 2777      CLR	R23
      C1 C002      RJMP	0x00C4
      C2 5F6F      SUBI	R22,0xFF
      C3 4F7F      SBCI	R23,0xFF
      C4 E080      LDI	R24,0
      C5 E090      LDI	R25,0
      C6 E0A0      LDI	R26,0
      C7 E0B0      LDI	R27,0
      C8 011B      MOVW	R2,R22
      C9 2444      CLR	R4
      CA 2455      CLR	R5
      CB 1628      CP	R2,R24
      CC 0639      CPC	R3,R25
      CD 064A      CPC	R4,R26
      CE 065B      CPC	R5,R27
      CF F394      BLT	0x00C2
      D0 5F4F      SUBI	R20,0xFF
      D1 4F5F      SBCI	R21,0xFF
      D2 1740      CP	R20,R16
      D3 0751      CPC	R21,R17
      D4 F350      BCS	0x00BF
      D5 C8AB      RJMP	pop_xgsetF000
_delay_s:
  i                    --> R20
  n                    --> R10
      D6 D89B      RCALL	push_xgset300C
      D7 0158      MOVW	R10,R16
(0285) }
(0286) 
(0287) /////////////////////////////////////////////////////////////
(0288) void delay_s(WORD n)
(0289) {
(0290) 	WORD	i;
(0291) 	for ( i=0; i<10*n; i++ )	ms(100);
      D8 2744      CLR	R20
      D9 2755      CLR	R21
      DA C005      RJMP	0x00E0
      DB E604      LDI	R16,0x64
      DC E010      LDI	R17,0
      DD DFC2      RCALL	_ms
      DE 5F4F      SUBI	R20,0xFF
      DF 4F5F      SBCI	R21,0xFF
      E0 E00A      LDI	R16,0xA
      E1 E010      LDI	R17,0
      E2 0195      MOVW	R18,R10
      E3 D87E      RCALL	empy16s
      E4 1740      CP	R20,R16
      E5 0751      CPC	R21,R17
      E6 F3A0      BCS	0x00DB
      E7 C88F      RJMP	pop_xgset300C
(0292) }
(0293) 
(0294) /////////////////////////////////////////////////////////////
(0295) //UART口
(0296) void uart_init(void)
(0297) {
(0298) 	UCSRB = 0x00;							//设置波特率时关闭发送和接收
_uart_init:
      E8 2422      CLR	R2
      E9 B82A      OUT	0x0A,R2
(0299) 	UCSRA = 0x00;
      EA B82B      OUT	0x0B,R2
(0300) 	UCSRC = (1<<UCSZ1)|(1<<UCSZ0);			//8位数据+1位STOP位
      EB E086      LDI	R24,6
      EC BD80      OUT	0x20,R24
(0301) 	UBRRL=(fosc/16/baud-1)%256;
      ED E083      LDI	R24,3
      EE B989      OUT	0x09,R24
(0302) 	UBRRH=(fosc/16/baud-1)/256;			//设置波特率
      EF BC20      OUT	0x20,R2
(0303) 	UCSRB =(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);	//允许发送和接收
      F0 E988      LDI	R24,0x98
      F1 B98A      OUT	0x0A,R24
      F2 9508      RET
(0304) }
(0305) 
(0306) /////////////////////////////////////////////////////////////
(0307) //URAT口
(0308) BYTE uart_RxChar(void)
(0309) {
(0310) 	while(!(UCSRA& (1<<RXC)));//判断是否接收到数据
_uart_RxChar:
      F3 9B5F      SBIS	0x0B,7
      F4 CFFE      RJMP	_uart_RxChar
(0311) 	return UDR;                //接收数据
      F5 B10C      IN	R16,0x0C
      F6 9508      RET
(0312) }
(0313) 
(0314) /////////////////////////////////////////////////////////////
(0315) void uart_TxChar(BYTE c)
(0316) {
(0317) 	while (!(UCSRA&(1<<UDRE)));//判断上次发送是否完成
_uart_TxChar:
  c                    --> R16
      F7 9B5D      SBIS	0x0B,5
      F8 CFFE      RJMP	_uart_TxChar
(0318) 	UDR=c;                      //发送数据
      F9 B90C      OUT	0x0C,R16
      FA 9508      RET
_put_bytes:
  i                    --> R20
  len                  --> R10
  buf                  --> R12
      FB D898      RCALL	push_xgset303C
      FC 0159      MOVW	R10,R18
      FD 0168      MOVW	R12,R16
(0319) }
(0320) 
(0321) /////////////////////////////////////////////////////////////////////////////////
(0322) void put_bytes(BYTE *buf,int len)
(0323) {
(0324) 	int		i;
(0325) 	for ( i=0; i<len; i++ )		uart_TxChar(buf[i]);
      FE 2744      CLR	R20
      FF 2755      CLR	R21
     100 C007      RJMP	0x0108
     101 01FA      MOVW	R30,R20
     102 0DEC      ADD	R30,R12
     103 1DFD      ADC	R31,R13
     104 8100      LDD	R16,Z+0
     105 DFF1      RCALL	_uart_TxChar
     106 5F4F      SUBI	R20,0xFF
     107 4F5F      SBCI	R21,0xFF
     108 154A      CP	R20,R10
     109 055B      CPC	R21,R11
     10A F3B4      BLT	0x0101
     10B C88F      RJMP	pop_xgset303C
(0326) }
(0327) 
(0328) /////////////////////////////////////////////////////////////////////////////////
(0329) //ADC初始化
(0330) void adc_init(void)
(0331) {
(0332) 	ADCSRA = 0x00;
_adc_init:
     10C 2422      CLR	R2
     10D B826      OUT	0x06,R2
(0333) 	
(0334) 	ADMUX =(1<<REFS0)|(adc_mux&0x0F);
     10E 9180 013F LDS	R24,adc_mux
     110 9190 0140 LDS	R25,adc_mux+1
     112 708F      ANDI	R24,0xF
     113 7090      ANDI	R25,0
     114 6480      ORI	R24,0x40
     115 B987      OUT	0x07,R24
(0335) 	
(0336) 	ACSR  =(1<<ACD);//关闭模拟比较器
     116 E880      LDI	R24,0x80
     117 B988      OUT	0x08,R24
(0337) 	
(0338) 	ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0) ;//128分频
     118 EC87      LDI	R24,0xC7
     119 B986      OUT	0x06,R24
(0339) 
(0340) 	us(2);
     11A E002      LDI	R16,2
     11B E010      LDI	R17,0
     11C DF9E      RCALL	_us
(0341) 	
(0342) 	ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0) ;//128分频
     11D EC8F      LDI	R24,0xCF
     11E B986      OUT	0x06,R24
     11F 9508      RET
_AlarmPro:
  j                    --> Y,+1
  temp                 --> R10
  i                    --> R20
     120 D851      RCALL	push_xgset300C
(0343) 
(0344) }
(0345) 
(0346) void AlarmPro(void)
(0347) {
(0348)    BYTE  i,j;
(0349)    WORD temp;
(0350)    
(0351)    for(i=0;i<num;i++){
     121 2744      CLR	R20
     122 C08B      RJMP	0x01AE
(0352) 	
(0353)    	if(i == 4) i=i+2;
     123 3044      CPI	R20,4
     124 F409      BNE	0x0126
     125 5F4E      SUBI	R20,0xFE
(0354)    	temp = data[i]+(data[i+1]<<8);
     126 E186      LDI	R24,0x16
     127 E091      LDI	R25,1
     128 2FE4      MOV	R30,R20
     129 27FF      CLR	R31
     12A 0FE8      ADD	R30,R24
     12B 1FF9      ADC	R31,R25
     12C 8020      LDD	R2,Z+0
     12D 2433      CLR	R3
     12E 2C32      MOV	R3,R2
     12F 2422      CLR	R2
     130 E185      LDI	R24,0x15
     131 E091      LDI	R25,1
     132 2FE4      MOV	R30,R20
     133 27FF      CLR	R31
     134 0FE8      ADD	R30,R24
     135 1FF9      ADC	R31,R25
     136 80A0      LDD	R10,Z+0
     137 24BB      CLR	R11
     138 0CA2      ADD	R10,R2
     139 1CB3      ADC	R11,R3
(0355) 	
(0356)        alarmno = i;
     13A 9340 00E2 STS	alarmno,R20
(0357) 	   
(0358) 	      if(temp < limit[i][2])  {
     13C E086      LDI	R24,6
     13D 9F84      MUL	R24,R20
     13E 01F0      MOVW	R30,R0
     13F EE87      LDI	R24,0xE7
     140 E090      LDI	R25,0
     141 0FE8      ADD	R30,R24
     142 1FF9      ADC	R31,R25
     143 8020      LDD	R2,Z+0
     144 8031      LDD	R3,Z+1
     145 14A2      CP	R10,R2
     146 04B3      CPC	R11,R3
     147 F448      BCC	0x0151
(0359) 		       
(0360) 		       alarm_flag[i] = 3;
     148 EA88      LDI	R24,0xA8
     149 E090      LDI	R25,0
     14A 2FE4      MOV	R30,R20
     14B 27FF      CLR	R31
     14C 0FE8      ADD	R30,R24
     14D 1FF9      ADC	R31,R25
     14E E083      LDI	R24,3
     14F 8380      STD	Z+0,R24
(0361) 		       }
     150 C032      RJMP	0x0183
(0362) 	     else {
(0363)                if(temp < limit[i][1])  {
     151 E086      LDI	R24,6
     152 9F84      MUL	R24,R20
     153 01F0      MOVW	R30,R0
     154 EE85      LDI	R24,0xE5
     155 E090      LDI	R25,0
     156 0FE8      ADD	R30,R24
     157 1FF9      ADC	R31,R25
     158 8020      LDD	R2,Z+0
     159 8031      LDD	R3,Z+1
     15A 14A2      CP	R10,R2
     15B 04B3      CPC	R11,R3
     15C F448      BCC	0x0166
(0364) 		                
(0365) 		               alarm_flag[i] = 2;
     15D EA88      LDI	R24,0xA8
     15E E090      LDI	R25,0
     15F 2FE4      MOV	R30,R20
     160 27FF      CLR	R31
     161 0FE8      ADD	R30,R24
     162 1FF9      ADC	R31,R25
     163 E082      LDI	R24,2
     164 8380      STD	Z+0,R24
(0366) 		       }
     165 C01D      RJMP	0x0183
(0367) 			   else {
(0368)                                 if(temp < limit[i][0])  {
     166 E086      LDI	R24,6
     167 9F84      MUL	R24,R20
     168 01F0      MOVW	R30,R0
     169 EE83      LDI	R24,0xE3
     16A E090      LDI	R25,0
     16B 0FE8      ADD	R30,R24
     16C 1FF9      ADC	R31,R25
     16D 8020      LDD	R2,Z+0
     16E 8031      LDD	R3,Z+1
     16F 14A2      CP	R10,R2
     170 04B3      CPC	R11,R3
     171 F448      BCC	0x017B
(0369) 		                              
(0370) 		                             alarm_flag[i] = 1;
     172 EA88      LDI	R24,0xA8
     173 E090      LDI	R25,0
     174 2FE4      MOV	R30,R20
     175 27FF      CLR	R31
     176 0FE8      ADD	R30,R24
     177 1FF9      ADC	R31,R25
     178 E081      LDI	R24,1
     179 8380      STD	Z+0,R24
(0371) 		                         }
     17A C008      RJMP	0x0183
(0372) 				      else{
(0373)                                           alarm_flag[i] = 0;
     17B EA88      LDI	R24,0xA8
     17C E090      LDI	R25,0
     17D 2FE4      MOV	R30,R20
     17E 27FF      CLR	R31
     17F 0FE8      ADD	R30,R24
     180 1FF9      ADC	R31,R25
     181 2422      CLR	R2
     182 8220      STD	Z+0,R2
(0374) 					      }	 
(0375) 			   }
(0376) 		 }
(0377) 
(0378)       if(alarm_flag[i] != Alarm_flag_prev[i]) {
     183 EB80      LDI	R24,0xB0
     184 E090      LDI	R25,0
     185 2FE4      MOV	R30,R20
     186 27FF      CLR	R31
     187 0FEE      LSL	R30
     188 1FFF      ROL	R31
     189 0FE8      ADD	R30,R24
     18A 1FF9      ADC	R31,R25
     18B 8020      LDD	R2,Z+0
     18C 8031      LDD	R3,Z+1
     18D EA88      LDI	R24,0xA8
     18E E090      LDI	R25,0
     18F 2FE4      MOV	R30,R20
     190 27FF      CLR	R31
     191 0FE8      ADD	R30,R24
     192 1FF9      ADC	R31,R25
     193 8040      LDD	R4,Z+0
     194 2455      CLR	R5
     195 1442      CP	R4,R2
     196 0453      CPC	R5,R3
     197 F0A9      BEQ	0x01AD
(0379) 	  	SendGram(CMD_RETDATA);
     198 E001      LDI	R16,1
     199 D4A9      RCALL	_SendGram
(0380) 	       Alarm_flag_prev[i] = alarm_flag[i];
     19A EA88      LDI	R24,0xA8
     19B E090      LDI	R25,0
     19C 2FE4      MOV	R30,R20
     19D 27FF      CLR	R31
     19E 0FE8      ADD	R30,R24
     19F 1FF9      ADC	R31,R25
     1A0 8020      LDD	R2,Z+0
     1A1 2433      CLR	R3
     1A2 EB80      LDI	R24,0xB0
     1A3 E090      LDI	R25,0
     1A4 2FE4      MOV	R30,R20
     1A5 27FF      CLR	R31
     1A6 0FEE      LSL	R30
     1A7 1FFF      ROL	R31
     1A8 0FE8      ADD	R30,R24
     1A9 1FF9      ADC	R31,R25
     1AA 8231      STD	Z+1,R3
     1AB 8220      STD	Z+0,R2
(0381) 		 return ;

⌨️ 快捷键说明

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