📄 display_dhtxx.lst
字号:
01F3 9020006F LDS R2,U8T_data_H_temp
01F5 92200074 STS U8T_data_H,R2
(0335) U8T_data_L=U8T_data_L_temp;
01F7 9020006E LDS R2,U8T_data_L_temp
01F9 92200073 STS U8T_data_L,R2
(0336) U8RH_data_H=U8RH_data_H_temp;
01FB 9020006D LDS R2,U8RH_data_H_temp
01FD 92200072 STS U8RH_data_H,R2
(0337) U8RH_data_L=U8RH_data_L_temp;
01FF 9020006C LDS R2,U8RH_data_L_temp
0201 92200071 STS U8RH_data_L,R2
(0338) U8checkdata=U8checkdata_temp;
0203 9020006B LDS R2,U8checkdata_temp
0205 92200070 STS U8checkdata,R2
(0339) }//fi
(0340)
(0341)
(0342) COM_IN;
0207 98A5 CBI 0x14,5
(0343) COM_SET;
0208 9AAD SBI 0x15,5
0209 9508 RET
(0344)
(0345) }
(0346) void Display_data(void)
(0347) {
(0348) if(U8FLAG==1)
_Display_data:
020A 91800078 LDS R24,U8FLAG
020C 3081 CPI R24,1
020D F471 BNE 0x021C
(0349) {
(0350) PLAY[0] = 12;
020E E08C LDI R24,0xC
020F 93800060 STS PLAY,R24
(0351) PLAY[1] = 13;
0211 E08D LDI R24,0xD
0212 93800061 STS PLAY+1,R24
(0352) PLAY[2] = 13;
0214 93800062 STS PLAY+2,R24
(0353)
(0354) PLAY[3] = 12;
0216 E08C LDI R24,0xC
0217 93800063 STS PLAY+3,R24
(0355) PLAY[4] = 13;
0219 E08D LDI R24,0xD
021A D11B RCALL 0x0336
(0356) PLAY[5] = 13;
(0357) }//fi
021B C0A4 RJMP 0x02C0
(0358) else
(0359) {
(0360) ReceiveHighByte=U8T_data_H;
021C 90200074 LDS R2,U8T_data_H
021E 2433 CLR R3
021F 92300069 STS ReceiveHighByte+1,R3
0221 92200068 STS ReceiveHighByte,R2
0223 D108 RCALL 0x032C
(0361) ReceiveHighByte<<=8;
0224 2C32 MOV R3,R2
0225 2422 CLR R2
0226 92300069 STS ReceiveHighByte+1,R3
0228 92200068 STS ReceiveHighByte,R2
(0362) ReceiveHighByte|=U8T_data_L;
022A 90200073 LDS R2,U8T_data_L
022C 2433 CLR R3
022D 90400068 LDS R4,ReceiveHighByte
022F 90500069 LDS R5,ReceiveHighByte+1
0231 2842 OR R4,R2
0232 2853 OR R5,R3
0233 92500069 STS ReceiveHighByte+1,R5
0235 92400068 STS ReceiveHighByte,R4
(0363) ReceiveLowByte=U8RH_data_H;
0237 90200072 LDS R2,U8RH_data_H
0239 2433 CLR R3
023A 92300067 STS ReceiveLowByte+1,R3
023C 92200066 STS ReceiveLowByte,R2
(0364) ReceiveLowByte<<=8;
023E 90200066 LDS R2,ReceiveLowByte
0240 90300067 LDS R3,ReceiveLowByte+1
0242 2C32 MOV R3,R2
0243 2422 CLR R2
0244 92300067 STS ReceiveLowByte+1,R3
0246 92200066 STS ReceiveLowByte,R2
(0365) ReceiveLowByte|=U8RH_data_L;
0248 90200071 LDS R2,U8RH_data_L
024A 2433 CLR R3
024B 90400066 LDS R4,ReceiveLowByte
024D 90500067 LDS R5,ReceiveLowByte+1
024F 2842 OR R4,R2
0250 2853 OR R5,R3
0251 92500067 STS ReceiveLowByte+1,R5
0253 92400066 STS ReceiveLowByte,R4
0255 D0D6 RCALL 0x032C
(0366)
(0367)
(0368) if(ReceiveHighByte&0x8000)
0256 FE37 SBRS R3,7
0257 C034 RJMP 0x028C
(0369) {
(0370) ReceiveHighByte&=0x7fff; //清负数标志
0258 01C1 MOVW R24,R2
0259 779F ANDI R25,0x7F
025A 93900069 STS ReceiveHighByte+1,R25
025C 93800068 STS ReceiveHighByte,R24
(0371) if(ReceiveHighByte>=199)
025E 3C87 CPI R24,0xC7
025F E0E0 LDI R30,0
0260 079E CPC R25,R30
0261 F030 BCS 0x0268
(0372) {
(0373) PLAY[3] = 11;
0262 E08B LDI R24,0xB
0263 93800063 STS PLAY+3,R24
(0374) PLAY[4] = 9;
0265 E089 LDI R24,0x9
0266 D0CF RCALL 0x0336
(0375) PLAY[5] = 9;
(0376) }//fi
0267 C03B RJMP 0x02A3
(0377) else if(ReceiveHighByte>=100)
0268 D0BB RCALL 0x0324
0269 F088 BCS 0x027B
(0378) {
(0379) PLAY[3] = 11;
026A E08B LDI R24,0xB
026B 93800063 STS PLAY+3,R24
(0380) PLAY[4] = ReceiveHighByte%100/10;
026D E624 LDI R18,0x64
026E D0A9 RCALL <created procedures>
026F D06B RCALL mod16u
0270 E02A LDI R18,0xA
0271 E030 LDI R19,0
0272 D06A RCALL div16u
0273 93000064 STS 0x64,R16
(0381) PLAY[5] = ReceiveHighByte%10;
0275 E02A LDI R18,0xA
0276 D0A1 RCALL <created procedures>
0277 D063 RCALL mod16u
0278 93000065 STS 0x65,R16
(0382) } //esle if
027A C028 RJMP 0x02A3
(0383) else
(0384) {
(0385) PLAY[3] = 10;
027B E08A LDI R24,0xA
027C 93800063 STS PLAY+3,R24
(0386) PLAY[4] = ReceiveHighByte%100/10;
027E E624 LDI R18,0x64
027F D098 RCALL <created procedures>
0280 D05A RCALL mod16u
0281 E02A LDI R18,0xA
0282 E030 LDI R19,0
0283 D059 RCALL div16u
0284 93000064 STS 0x64,R16
(0387) PLAY[5] = ReceiveHighByte%10;
0286 E02A LDI R18,0xA
0287 D090 RCALL <created procedures>
0288 D052 RCALL mod16u
0289 93000065 STS 0x65,R16
(0388) } //esle
(0389)
(0390) } //fi
028B C017 RJMP 0x02A3
(0391) else
(0392) {
(0393) PLAY[3] = ReceiveHighByte/100;
028C E624 LDI R18,0x64
028D D08A RCALL <created procedures>
028E D04E RCALL div16u
028F 93000063 STS PLAY+3,R16
(0394) PLAY[4] = ReceiveHighByte%100/10;
0291 E624 LDI R18,0x64
0292 D085 RCALL <created procedures>
0293 D047 RCALL mod16u
0294 E02A LDI R18,0xA
0295 E030 LDI R19,0
0296 D046 RCALL div16u
0297 93000064 STS 0x64,R16
(0395) PLAY[5] = ReceiveHighByte%10;
0299 E02A LDI R18,0xA
029A D07D RCALL <created procedures>
029B D03F RCALL mod16u
029C 93000065 STS 0x65,R16
029E D085 RCALL 0x0324
(0396) if(ReceiveHighByte<100)
029F F418 BCC 0x02A3
(0397) {
(0398) PLAY[3]=14;
02A0 E08E LDI R24,0xE
02A1 93800063 STS PLAY+3,R24
(0399) }
(0400) } //esle
(0401)
(0402) PLAY[0] = ReceiveLowByte/100; //湿度
02A3 E624 LDI R18,0x64
02A4 D079 RCALL 0x031E
02A5 D037 RCALL div16u
02A6 93000060 STS PLAY,R16
(0403) PLAY[1] = ReceiveLowByte%100/10;
02A8 E624 LDI R18,0x64
02A9 D074 RCALL 0x031E
02AA D030 RCALL mod16u
02AB E02A LDI R18,0xA
02AC E030 LDI R19,0
02AD D02F RCALL div16u
02AE 93000061 STS PLAY+1,R16
(0404) PLAY[2] = ReceiveLowByte%10;
02B0 E02A LDI R18,0xA
02B1 D06C RCALL 0x031E
02B2 D028 RCALL mod16u
02B3 93000062 STS PLAY+2,R16
(0405) if(ReceiveLowByte<100)
02B5 91800066 LDS R24,ReceiveLowByte
02B7 91900067 LDS R25,ReceiveLowByte+1
02B9 3684 CPI R24,0x64
02BA E0E0 LDI R30,0
02BB 079E CPC R25,R30
02BC F418 BCC 0x02C0
(0406) {
(0407) PLAY[0]=14;
02BD E08E LDI R24,0xE
02BE 93800060 STS PLAY,R24
(0408) }
(0409)
(0410) }//esle
02C0 9508 RET
(0411)
(0412) }
(0413)
(0414) /**************************************************************************
(0415)
(0416)
(0417)
(0418) 主函数
(0419)
(0420)
(0421)
(0422)
(0423) **************************************************************************/
(0424)
(0425)
(0426)
(0427)
(0428) void main(void)
(0429) {
(0430)
(0431) init_devices() ;
_main:
02C1 DD89 RCALL _init_devices
(0432) COM_IN;
02C2 98A5 CBI 0x14,5
(0433) COM_SET;
02C3 9AAD SBI 0x15,5
02C4 C014 RJMP 0x02D9
(0434) while(1)
(0435) {
(0436)
(0437) RH();
02C5 DEA9 RCALL _RH
(0438) Display_data();
02C6 DF43 RCALL _Display_data
(0439) Display();
02C7 DDB8 RCALL _Display
(0440) //延时2S
(0441)
(0442) for(U8temp=0;U8temp<200;U8temp++)
02C8 2422 CLR R2
02C9 92200075 STS U8temp,R2
02CB C009 RJMP 0x02D5
(0443) {
(0444) DelaymS(5);
02CC E005 LDI R16,5
02CD E010 LDI R17,0
02CE DD9E RCALL _DelaymS
(0445) Display();
FILE: <library>
02CF DDB0 RCALL _Display
02D0 91800075 LDS R24,U8temp
02D2 5F8F SUBI R24,0xFF
02D3 93800075 STS U8temp,R24
02D5 91800075 LDS R24,U8temp
02D7 3C88 CPI R24,0xC8
02D8 F398 BCS 0x02CC
02D9 CFEB RJMP 0x02C5
02DA 9508 RET
mod16u:
02DB 9468 BSET 6
02DC C001 RJMP xdiv16u
div16u:
02DD 94E8 BCLR 6
xdiv16u:
02DE 92EA ST R14,-Y
02DF 92FA ST R15,-Y
02E0 938A ST R24,-Y
02E1 24EE CLR R14
02E2 24FF CLR R15
02E3 E180 LDI R24,0x10
02E4 0F00 LSL R16
02E5 1F11 ROL R17
02E6 1CEE ROL R14
02E7 1CFF ROL R15
02E8 16E2 CP R14,R18
02E9 06F3 CPC R15,R19
02EA F018 BCS 0x02EE
02EB 1AE2 SUB R14,R18
02EC 0AF3 SBC R15,R19
02ED 9503 INC R16
02EE 958A DEC R24
02EF F7A1 BNE 0x02E4
02F0 F416 BRTC 0x02F3
02F1 2D0E MOV R16,R14
02F2 2D1F MOV R17,R15
02F3 9189 LD R24,Y+
02F4 90F9 LD R15,Y+
02F5 90E9 LD R14,Y+
02F6 9508 RET
pop_gset5:
02F7 27EE CLR R30
02F8 C00C RJMP pop
push_gset5:
02F9 92FA ST R15,-Y
02FA 92EA ST R14,-Y
push_gset4:
02FB 92DA ST R13,-Y
02FC 92CA ST R12,-Y
push_gset3:
02FD 92BA ST R11,-Y
02FE 92AA ST R10,-Y
push_gset2:
02FF 937A ST R23,-Y
0300 936A ST R22,-Y
push_gset1:
0301 935A ST R21,-Y
0302 934A ST R20,-Y
0303 9508 RET
pop_gset1:
0304 E0E1 LDI R30,1
pop:
0305 9149 LD R20,Y+
0306 9159 LD R21,Y+
0307 FDE0 SBRC R30,0
0308 9508 RET
0309 9169 LD R22,Y+
030A 9179 LD R23,Y+
030B FDE1 SBRC R30,1
030C 9508 RET
030D 90A9 LD R10,Y+
030E 90B9 LD R11,Y+
030F FDE2 SBRC R30,2
0310 9508 RET
0311 90C9 LD R12,Y+
0312 90D9 LD R13,Y+
0313 FDE3 SBRC R30,3
0314 9508 RET
0315 90E9 LD R14,Y+
0316 90F9 LD R15,Y+
0317 9508 RET
<created procedures>:
0318 E030 LDI R19,0
0319 91000068 LDS R16,ReceiveHighByte
031B 91100069 LDS R17,ReceiveHighByte+1
031D 9508 RET
031E E030 LDI R19,0
031F 91000066 LDS R16,ReceiveLowByte
0321 91100067 LDS R17,ReceiveLowByte+1
0323 9508 RET
0324 91800068 LDS R24,ReceiveHighByte
0326 91900069 LDS R25,ReceiveHighByte+1
0328 3684 CPI R24,0x64
0329 E0E0 LDI R30,0
032A 079E CPC R25,R30
032B 9508 RET
032C 90200068 LDS R2,ReceiveHighByte
032E 90300069 LDS R3,ReceiveHighByte+1
0330 9508 RET
0331 0118 MOVW R2,R16
0332 5001 SUBI R16,1
0333 4010 SBCI R17,0
0334 2022 TST R2
0335 9508 RET
0336 93800064 STS 0x64,R24
0338 93800065 STS 0x65,R24
033A 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -