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

📄 1302-162.lst

📁 有遥控的温度计,用dS1302做时钟芯片
💻 LST
📖 第 1 页 / 共 5 页
字号:
  b                    --> R20
  n                    --> R22
    010C D452      RCALL	push_gset2
    010D 2F60      MOV	R22,R16
(0041) 			;
(0042) }
(0043) void delay_ns(uchar n)
(0044) { unsigned char  b;
(0045)   for(b=0;b<n;b++)
    010E 2744      CLR	R20
    010F C003      RJMP	0x0113
(0046)   delay_nms(200);
    0110 EC08      LDI	R16,0xC8
    0111 DFED      RCALL	_delay_nms
    0112 9543      INC	R20
    0113 1746      CP	R20,R22
    0114 F3D8      BCS	0x0110
    0115 D43D      RCALL	pop_gset2
    0116 9508      RET
_int0_isr:
  t                    --> R20
  store                --> R20
  user_code            --> R12
  data_code            --> R22
  i                    --> R10
    0117 D460      RCALL	push_lset
    0118 D442      RCALL	push_gset4
    0119 9722      SBIW	R28,2
(0047)  }
(0048) #pragma interrupt_handler int0_isr:2
(0049) void int0_isr(void)
(0050) {
(0051)  //external interupt on INT0
(0052)    uchar i;
(0053)    uint user_code=0;
    011A 24CC      CLR	R12
    011B 24DD      CLR	R13
(0054)    uint data_code=0,store;
    011C 2766      CLR	R22
    011D 2777      CLR	R23
(0055)    CLI();     //关闭中断
    011E 94F8      BCLR	7
(0056)  //**********************目的是检测在3毫秒内如果出现高电平就退出解码程序  
(0057)    for(i=0;i<3;i++)
    011F 24AA      CLR	R10
    0120 C007      RJMP	0x0128
(0058)    {
(0059)     delay_nms(90);        //延时1ms
    0121 E50A      LDI	R16,0x5A
    0122 DFDC      RCALL	_delay_nms
(0060)    if(PIND&0X04)
    0123 B380      IN	R24,0x10
    0124 7084      ANDI	R24,4
    0125 F009      BEQ	0x0127
(0061)      {
(0062) 	goto ret;
    0126 C1C2      RJMP	0x02E9
    0127 94A3      INC	R10
    0128 2D8A      MOV	R24,R10
    0129 3083      CPI	R24,3
    012A F3B0      BCS	0x0121
(0063) 	 }
(0064)     }  
(0065)  //**********************等高电平出现,再延时4.7ms,跳过结果码
(0066)  	while(!(PIND&004));
    012B B380      IN	R24,0x10
    012C 7084      ANDI	R24,4
    012D F3E9      BEQ	0x012B
(0067)     while(PIND&0X04);        
    012E B380      IN	R24,0x10
    012F 7084      ANDI	R24,4
    0130 F7E9      BNE	0x012E
(0068)  //**********************开始接收用户码
(0069)  	for(i=0;i<16;i++)
    0131 24AA      CLR	R10
    0132 C01C      RJMP	0x014F
(0070)     {
(0071) 	 while(!(PIND&0X04));
    0133 B380      IN	R24,0x10
    0134 7084      ANDI	R24,4
    0135 F3E9      BEQ	0x0133
(0072) 	 delay_nms(90);       //延时1.05ms     
    0136 E50A      LDI	R16,0x5A
    0137 DFC7      RCALL	_delay_nms
(0073) 	if(PIND&0X04)         
    0138 B380      IN	R24,0x10
    0139 7084      ANDI	R24,4
    013A F041      BEQ	0x0143
(0074) 		{
(0075) 		user_code|=(1<<i);
    013B 2D2A      MOV	R18,R10
    013C 2733      CLR	R19
    013D E001      LDI	R16,1
    013E E010      LDI	R17,0
    013F D466      RCALL	lsl16
    0140 2AC0      OR	R12,R16
    0141 2AD1      OR	R13,R17
(0076) 		
(0077) 		}
    0142 C00B      RJMP	0x014E
(0078) 	else
(0079) 	    {
(0080) 		user_code&=~(1<<i);
    0143 2D2A      MOV	R18,R10
    0144 2733      CLR	R19
    0145 E001      LDI	R16,1
    0146 E010      LDI	R17,0
    0147 D45E      RCALL	lsl16
    0148 2E20      MOV	R2,R16
    0149 2E31      MOV	R3,R17
    014A 9420      COM	R2
    014B 9430      COM	R3
    014C 20C2      AND	R12,R2
    014D 20D3      AND	R13,R3
    014E 94A3      INC	R10
    014F 2D8A      MOV	R24,R10
    0150 3180      CPI	R24,0x10
    0151 F308      BCS	0x0133
(0081) 		}
(0082) 	 }
(0083) 
(0084)    //**********************开始接收数据
(0085)     for(i=0;i<16;i++)
    0152 24AA      CLR	R10
    0153 C01C      RJMP	0x0170
(0086)     {
(0087) 	 while(!(PIND&0X04));
    0154 B380      IN	R24,0x10
    0155 7084      ANDI	R24,4
    0156 F3E9      BEQ	0x0154
(0088) 	delay_nms(90);       //延时1.05ms    
    0157 E50A      LDI	R16,0x5A
    0158 DFA6      RCALL	_delay_nms
(0089) 	if(PIND&0X04)
    0159 B380      IN	R24,0x10
    015A 7084      ANDI	R24,4
    015B F041      BEQ	0x0164
(0090) 		{
(0091) 		data_code|=(1<<i);
    015C 2D2A      MOV	R18,R10
    015D 2733      CLR	R19
    015E E001      LDI	R16,1
    015F E010      LDI	R17,0
    0160 D445      RCALL	lsl16
    0161 2B60      OR	R22,R16
    0162 2B71      OR	R23,R17
(0092) 		
(0093) 		}
    0163 C00B      RJMP	0x016F
(0094) 	else
(0095) 	    {
(0096) 		data_code&=~(1<<i);
    0164 2D2A      MOV	R18,R10
    0165 2733      CLR	R19
    0166 E001      LDI	R16,1
    0167 E010      LDI	R17,0
    0168 D43D      RCALL	lsl16
    0169 2E20      MOV	R2,R16
    016A 2E31      MOV	R3,R17
    016B 9420      COM	R2
    016C 9430      COM	R3
    016D 2162      AND	R22,R2
    016E 2173      AND	R23,R3
    016F 94A3      INC	R10
    0170 2D8A      MOV	R24,R10
    0171 3180      CPI	R24,0x10
    0172 F308      BCS	0x0154
(0097) 		}
(0098) 	 }
(0099) 	store=data_code;      //采集到数据码
    0173 2F46      MOV	R20,R22
    0174 2F57      MOV	R21,R23
(0100) 	delay_ns(240); 
    0175 EF00      LDI	R16,0xF0
    0176 DF95      RCALL	_delay_ns
(0101)         //延时50ms,不接收连续码
(0102)     //设置开关
(0103) 	if(store==0x0901)
    0177 3061      CPI	R22,1
    0178 E0E9      LDI	R30,0x9
    0179 077E      CPC	R23,R30
    017A F431      BNE	0x0181
(0104) 		{
(0105) 	      flag^=0X01;
    017B E081      LDI	R24,1
    017C 90200060  LDS	R2,flag
    017E 2628      EOR	R2,R24
    017F 92200060  STS	flag,R2
(0106) 		}   
(0107) 	//设置时间
(0108)   	if(flag)
    0181 90200060  LDS	R2,flag
    0183 2022      TST	R2
    0184 F409      BNE	0x0186
    0185 C15E      RJMP	0x02E4
(0109) 	  {
(0110) 	  uchar t;
(0111) 	  LCD_write_string(8,1,"s"); 
    0186 E98E      LDI	R24,0x9E
    0187 E090      LDI	R25,0
    0188 8399      STD	Y+1,R25
    0189 8388      STD	Y+0,R24
    018A E021      LDI	R18,1
    018B E008      LDI	R16,0x8
    018C D2E0      RCALL	_LCD_write_string
(0112) 	  switch(store)
    018D 3441      CPI	R20,0x41
    018E E0E2      LDI	R30,2
    018F 075E      CPC	R21,R30
    0190 F409      BNE	0x0192
    0191 C0A7      RJMP	0x0239
    0192 E481      LDI	R24,0x41
    0193 E092      LDI	R25,2
    0194 1784      CP	R24,R20
    0195 0795      CPC	R25,R21
    0196 F40C      BGE	0x0198
    0197 C030      RJMP	0x01C8
    0198 3041      CPI	R20,1
    0199 E8E2      LDI	R30,0x82
    019A 075E      CPC	R21,R30
    019B F409      BNE	0x019D
    019C C0A2      RJMP	0x023F
    019D E081      LDI	R24,1
    019E E892      LDI	R25,0x82
    019F 1784      CP	R24,R20
    01A0 0795      CPC	R25,R21
    01A1 F084      BLT	0x01B2
    01A2 3841      CPI	R20,0x81
    01A3 E8E0      LDI	R30,0x80
    01A4 075E      CPC	R21,R30
    01A5 F409      BNE	0x01A7
    01A6 C08C      RJMP	0x0233
    01A7 3841      CPI	R20,0x81
    01A8 E8E0      LDI	R30,0x80
    01A9 075E      CPC	R21,R30
    01AA F40C      BGE	0x01AC
    01AB C094      RJMP	0x0240
    01AC 3041      CPI	R20,1
    01AD E8E1      LDI	R30,0x81
    01AE 075E      CPC	R21,R30
    01AF F409      BNE	0x01B1
    01B0 C086      RJMP	0x0237
    01B1 C08E      RJMP	0x0240
    01B2 3441      CPI	R20,0x41
    01B3 E0E0      LDI	R30,0
    01B4 075E      CPC	R21,R30
    01B5 F409      BNE	0x01B7
    01B6 C07A      RJMP	0x0231
    01B7 E481      LDI	R24,0x41
    01B8 E090      LDI	R25,0
    01B9 1784      CP	R24,R20
    01BA 0795      CPC	R25,R21
    01BB F034      BLT	0x01C2
    01BC 3041      CPI	R20,1
    01BD E8E4      LDI	R30,0x84
    01BE 075E      CPC	R21,R30
    01BF F409      BNE	0x01C1
    01C0 C045      RJMP	0x0206
    01C1 C07E      RJMP	0x0240
    01C2 3441      CPI	R20,0x41
    01C3 E0E1      LDI	R30,1
    01C4 075E      CPC	R21,R30
    01C5 F409      BNE	0x01C7
    01C6 C06E      RJMP	0x0235
    01C7 C078      RJMP	0x0240
    01C8 3441      CPI	R20,0x41
    01C9 E0E5      LDI	R30,5
    01CA 075E      CPC	R21,R30
    01CB F409      BNE	0x01CD
    01CC C070      RJMP	0x023D
    01CD E481      LDI	R24,0x41
    01CE E095      LDI	R25,5
    01CF 1784      CP	R24,R20
    01D0 0795      CPC	R25,R21
    01D1 F084      BLT	0x01E2
    01D2 3841      CPI	R20,0x81
    01D3 E0E2      LDI	R30,2
    01D4 075E      CPC	R21,R30
    01D5 F409      BNE	0x01D7
    01D6 C064      RJMP	0x023B
    01D7 3841      CPI	R20,0x81
    01D8 E0E2      LDI	R30,2
    01D9 075E      CPC	R21,R30
    01DA F40C      BGE	0x01DC
    01DB C064      RJMP	0x0240
    01DC 3441      CPI	R20,0x41
    01DD E0E4      LDI	R30,4
    01DE 075E      CPC	R21,R30
    01DF F409      BNE	0x01E1
    01E0 C04C      RJMP	0x022D
    01E1 C05E      RJMP	0x0240
    01E2 3041      CPI	R20,1
    01E3 E0E9      LDI	R30,0x9
    01E4 075E      CPC	R21,R30
    01E5 F081      BEQ	0x01F6
    01E6 E081      LDI	R24,1
    01E7 E099      LDI	R25,0x9
    01E8 1784      CP	R24,R20
    01E9 0795      CPC	R25,R21
    01EA F02C      BLT	0x01F0
    01EB 3441      CPI	R20,0x41
    01EC E0E8      LDI	R30,0x8
    01ED 075E      CPC	R21,R30
    01EE F161      BEQ	0x021B
    01EF C050      RJMP	0x0240
    01F0 3041      CPI	R20,1
    01F1 E4E0      LDI	R30,0x40
    01F2 075E      CPC	R21,R30
    01F3 F409      BNE	0x01F5
    01F4 C03A      RJMP	0x022F
    01F5 C04A      RJMP	0x0240
(0113)  		{
(0114) 		case 0x0901 :LCD_set_xy(8,1);LCD_write_char('s');n=0;LCD_set_xy(9,1);
    01F6 E021      LDI	R18,1
    01F7 E008      LDI	R16,0x8
    01F8 D25C      RCALL	_LCD_set_xy
    01F9 E703      LDI	R16,0x73
    01FA D26A      RCALL	_LCD_write_char
    01FB 2422      CLR	R2
    01FC 92200061  STS	n,R2
    01FE E021      LDI	R18,1
    01FF E009      LDI	R16,0x9
    0200 D254      RCALL	_LCD_set_xy
(0115) 	                 LCD_write_char(n+48);goto ret;break;
    0201 91000061  LDS	R16,n
    0203 5D00      SUBI	R16,0xD0
    0204 D260      RCALL	_LCD_write_char
    0205 C0E3      RJMP	0x02E9
(0116) 		case 0x8401 :n++;if(n>10) n=0;  LCD_set_xy(9,1);
    0206 91800061  LDS	R24,n
    0208 5F8F      SUBI	R24,0xFF
    0209 93800061  STS	n,R24
    020B E08A      LDI	R24,0xA
    020C 90200061  LDS	R2,n
    020E 1582      CP	R24,R2
    020F F418      BCC	0x0213
    0210 2422      CLR	R2
    0211 92200061  STS	n,R2
    0213 E021      LDI	R18,1
    0214 E009      LDI	R16,0x9
    0215 D23F      RCALL	_LCD_set_xy
(0117) 	                 LCD_write_char(n+48); goto ret;break;
    0216 91000061  LDS	R16,n
    0218 5D00      SUBI	R16,0xD0
    0219 D24B      RCALL	_LCD_write_char
    021A C0CE      RJMP	0x02E9
(0118) 		case 0x0841 :n=n-1;if(n==0) n=10;  LCD_set_xy(9,1);
    021B 91800061  LDS	R24,n
    021D 5081      SUBI	R24,1
    021E 93800061  STS	n,R24
    0220 2388      TST	R24
    0221 F419      BNE	0x0225
    0222 E08A      LDI	R24,0xA
    0223 93800061  STS	n,R24
    0225 E021      LDI	R18,1
    0226 E009      LDI	R16,0x9
    0227 D22D      RCALL	_LCD_set_xy
(0119) 	                 LCD_write_char(n+48); goto ret;break;
    0228 91000061  LDS	R16,n
    022A 5D00      SUBI	R16,0xD0
    022B D239      RCALL	_LCD_write_char
    022C C0BC      RJMP	0x02E9
(0120) 		case 0x0441 :t=0;break;
    022D 2744      CLR	R20
    022E C011      RJMP	0x0240
(0121)  		case 0x4001 :t=1;break;
    022F E041      LDI	R20,1
    0230 C00F      RJMP	0x0240
(0122)  		case 0x0041 :t=2;break;
    0231 E042      LDI	R20,2
    0232 C00D      RJMP	0x0240
(0123)  		case 0x8081 :t=3;break;
    0233 E043      LDI	R20,3
    0234 C00B      RJMP	0x0240
(0124)  		case 0x0141 :t=4;break;
    0235 E044      LDI	R20,4
    0236 C009      RJMP	0x0240
(0125)  		case 0x8101 :t=5;break;
    0237 E045      LDI	R20,5
    0238 C007      RJMP	0x0240
(0126)  		case 0x0241 :t=6;break;
    0239 E046      LDI	R20,6
    023A C005      RJMP	0x0240
(0127)  		case 0x0281 :t=7;break;
    023B E047      LDI	R20,7
    023C C003      RJMP	0x0240
(0128)  		case 0x0541 :t=8;break;
    023D E048      LDI	R20,0x8
    023E C001      RJMP	0x0240
(0129)  		case 0x8201 :t=9;break;
    023F E049      LDI	R20,0x9
(0130) 		}
(0131) 	  
(0132) 	  switch(n)
    0240 91600061  LDS	R22,n
    0242 2777      CLR	R23
    0243 3060      CPI	R22,0
    0244 0767      CPC	R22,R23
    0245 F409      BNE	0x0247
    0246 C033      RJMP	0x027A
    0247 3061      CPI	R22,1
    0248 E0E0      LDI	R30,0
    0249 077E      CPC	R23,R30
    024A F409      BNE	0x024C
    024B C039      RJMP	0x0285
    024C 3062      CPI	R22,2
    024D E0E0      LDI	R30,0
    024E 077E      CPC	R23,R30
    024F F409      BNE	0x0251
    0250 C03C      RJMP	0x028D
    0251 3063      CPI	R22,3
    0252 E0E0      LDI	R30,0
    0253 077E      CPC	R23,R30

⌨️ 快捷键说明

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