📄 ds18b20.lis
字号:
00A4 ; /*******************中断函数****************************/
00A4 ; /*定时中断*/
00A4 ; void timer1_int(void)
00A4 ; {TCNT1=0xfd8f; //重赋初值
00A4 .dbline 98
00A4 8FE8 ldi R24,64911
00A6 9DEF ldi R25,253
00A8 90938500 sts 132+1,R25
00AC 80938400 sts 132,R24
00B0 .dbline 99
00B0 ; if(count1!=100)count1++;
00B0 80910B00 lds R24,_count1
00B4 8436 cpi R24,100
00B6 19F0 breq L17
00B8 X6:
00B8 .dbline 99
00B8 8F5F subi R24,255 ; addi 1
00BA 80930B00 sts _count1,R24
00BE L17:
00BE .dbline -2
00BE L16:
00BE .dbline 0 ; func end
00BE 8991 ld R24,y+
00C0 8FBF OUT 63,R24
00C2 9991 ld R25,y+
00C4 8991 ld R24,y+
00C6 1895 reti
00C8 .dbend
00C8 .dbfunc e display_int _display_int fV
.even
00C8 _display_int::
00C8 2A92 st -y,R2
00CA 3A92 st -y,R3
00CC 0A93 st -y,R16
00CE 1A93 st -y,R17
00D0 8A93 st -y,R24
00D2 9A93 st -y,R25
00D4 AA93 st -y,R26
00D6 EA93 st -y,R30
00D8 FA93 st -y,R31
00DA 2FB6 IN R2,63
00DC 2A92 st -y,R2
00DE .dbline -1
00DE .dbline 103
00DE ; }
00DE ; /*显示中断*/
00DE ; void display_int(void)
00DE ; {count2++;
00DE .dbline 103
00DE 80910A00 lds R24,_count2
00E2 8F5F subi R24,255 ; addi 1
00E4 80930A00 sts _count2,R24
00E8 .dbline 104
00E8 ; TCNT0=0xce; //重赋初值
00E8 8EEC ldi R24,206
00EA 86BD out 0x26,R24
00EC .dbline 105
00EC ; PORTC|=0x0e; //0000 1110
00EC 88B1 in R24,0x8
00EE 8E60 ori R24,14
00F0 88B9 out 0x8,R24
00F2 .dbline 106
00F2 ; PORTD|=0xd8; //1101 1000
00F2 8BB1 in R24,0xb
00F4 886D ori R24,216
00F6 8BB9 out 0xb,R24
00F8 .dbline 107
00F8 ; switch(count2)
00F8 00910A00 lds R16,_count2
00FC 1127 clr R17
00FE 0130 cpi R16,1
0100 E0E0 ldi R30,0
0102 1E07 cpc R17,R30
0104 C1F0 breq L23
0106 X7:
0106 0230 cpi R16,2
0108 E0E0 ldi R30,0
010A 1E07 cpc R17,R30
010C 19F1 breq L24
010E X8:
010E 0330 cpi R16,3
0110 E0E0 ldi R30,0
0112 1E07 cpc R17,R30
0114 71F1 breq L25
0116 X9:
0116 0430 cpi R16,4
0118 E0E0 ldi R30,0
011A 1E07 cpc R17,R30
011C 09F4 brne X13
011E 38C0 rjmp L26
0120 X13:
0120 X10:
0120 0530 cpi R16,5
0122 E0E0 ldi R30,0
0124 1E07 cpc R17,R30
0126 09F4 brne X14
0128 42C0 rjmp L27
012A X14:
012A X11:
012A 0630 cpi R16,6
012C E0E0 ldi R30,0
012E 1E07 cpc R17,R30
0130 09F4 brne X15
0132 4CC0 rjmp L28
0134 X15:
0134 X12:
0134 5CC0 rjmp L20
0136 L23:
0136 .dbline 109
0136 ; {case 1:
0136 ; PORTC&=0xf1; //L6 1111 0001
0136 88B1 in R24,0x8
0138 817F andi R24,241
013A 88B9 out 0x8,R24
013C .dbline 110
013C ; PORTD&=distable[timeb6];
013C 80E0 ldi R24,<_distable
013E 90E0 ldi R25,>_distable
0140 E0910500 lds R30,_timeb6
0144 FF27 clr R31
0146 E80F add R30,R24
0148 F91F adc R31,R25
014A 2080 ldd R2,z+0
014C 3BB0 in R3,0xb
014E 3220 and R3,R2
0150 3BB8 out 0xb,R3
0152 .dbline 111
0152 ; break;
0152 4DC0 rjmp L21
0154 L24:
0154 .dbline 113
0154 ; case 2:
0154 ; PORTC&=0xf3; //L5 1111 0011
0154 88B1 in R24,0x8
0156 837F andi R24,243
0158 88B9 out 0x8,R24
015A .dbline 114
015A ; PORTD&=distable[timeb5];
015A 80E0 ldi R24,<_distable
015C 90E0 ldi R25,>_distable
015E E0910600 lds R30,_timeb5
0162 FF27 clr R31
0164 E80F add R30,R24
0166 F91F adc R31,R25
0168 2080 ldd R2,z+0
016A 3BB0 in R3,0xb
016C 3220 and R3,R2
016E 3BB8 out 0xb,R3
0170 .dbline 115
0170 ; break;
0170 3EC0 rjmp L21
0172 L25:
0172 .dbline 117
0172 ; case 3:
0172 ; PORTC&=0xf5; //L4 1111 0101
0172 88B1 in R24,0x8
0174 857F andi R24,245
0176 88B9 out 0x8,R24
0178 .dbline 118
0178 ; PORTD&=distable[timeb4];
0178 80E0 ldi R24,<_distable
017A 90E0 ldi R25,>_distable
017C E0910700 lds R30,_timeb4
0180 FF27 clr R31
0182 E80F add R30,R24
0184 F91F adc R31,R25
0186 2080 ldd R2,z+0
0188 3BB0 in R3,0xb
018A 3220 and R3,R2
018C 3BB8 out 0xb,R3
018E .dbline 119
018E ; break;
018E 2FC0 rjmp L21
0190 L26:
0190 .dbline 121
0190 ; case 4:
0190 ; PORTC&=0xf7; //L3 1111 0111
0190 88B1 in R24,0x8
0192 877F andi R24,247
0194 88B9 out 0x8,R24
0196 .dbline 122
0196 ; PORTD&=distable[timeb3];
0196 80E0 ldi R24,<_distable
0198 90E0 ldi R25,>_distable
019A E0910800 lds R30,_timeb3
019E FF27 clr R31
01A0 E80F add R30,R24
01A2 F91F adc R31,R25
01A4 2080 ldd R2,z+0
01A6 3BB0 in R3,0xb
01A8 3220 and R3,R2
01AA 3BB8 out 0xb,R3
01AC .dbline 123
01AC ; break;
01AC 20C0 rjmp L21
01AE L27:
01AE .dbline 125
01AE ; case 5:
01AE ; PORTC&=0xf9; //L2 1111 1001
01AE 88B1 in R24,0x8
01B0 897F andi R24,249
01B2 88B9 out 0x8,R24
01B4 .dbline 126
01B4 ; PORTD&=distable[timeb2];
01B4 80E0 ldi R24,<_distable
01B6 90E0 ldi R25,>_distable
01B8 E0910900 lds R30,_timeb2
01BC FF27 clr R31
01BE E80F add R30,R24
01C0 F91F adc R31,R25
01C2 2080 ldd R2,z+0
01C4 3BB0 in R3,0xb
01C6 3220 and R3,R2
01C8 3BB8 out 0xb,R3
01CA .dbline 127
01CA ; break;
01CA 11C0 rjmp L21
01CC L28:
01CC .dbline 129
01CC ; case 6:
01CC ; count2=0;
01CC 2224 clr R2
01CE 20920A00 sts _count2,R2
01D2 .dbline 130
01D2 ; PORTC&=0xfb; //L1 1111 1011
01D2 88B1 in R24,0x8
01D4 8B7F andi R24,251
01D6 88B9 out 0x8,R24
01D8 .dbline 131
01D8 ; PORTD&=distable[timeb1];
01D8 80E0 ldi R24,<_distable
01DA 90E0 ldi R25,>_distable
01DC E0910A00 lds R30,_timeb1
01E0 FF27 clr R31
01E2 E80F add R30,R24
01E4 F91F adc R31,R25
01E6 2080 ldd R2,z+0
01E8 3BB0 in R3,0xb
01EA 3220 and R3,R2
01EC 3BB8 out 0xb,R3
01EE .dbline 132
01EE ; break;
01EE L20:
01EE L21:
01EE .dbline -2
01EE L19:
01EE .dbline 0 ; func end
01EE 2990 ld R2,y+
01F0 2FBE OUT 63,R2
01F2 F991 ld R31,y+
01F4 E991 ld R30,y+
01F6 A991 ld R26,y+
01F8 9991 ld R25,y+
01FA 8991 ld R24,y+
01FC 1991 ld R17,y+
01FE 0991 ld R16,y+
0200 3990 ld R3,y+
0202 2990 ld R2,y+
0204 1895 reti
0206 .dbend
0206 .dbfunc e PortInit _PortInit fV
.even
0206 _PortInit::
0206 .dbline -1
0206 .dbline 138
0206 ; }
0206 ; }
0206 ; /*******************子函数***********************************/
0206 ; /*端口及中断初始化*/
0206 ; void PortInit(void)
0206 ; {DDRC = 0xff;
0206 .dbline 138
0206 8FEF ldi R24,255
0208 87B9 out 0x7,R24
020A .dbline 139
020A ; PORTC=0xff;
020A 88B9 out 0x8,R24
020C .dbline 140
020C ; DDRD=0xff;
020C 8AB9 out 0xa,R24
020E .dbline 141
020E ; PORTD=0x00;
020E 2224 clr R2
0210 2BB8 out 0xb,R2
0212 .dbline 143
0212 ; /*T/C0*/
0212 ; TCCR0A=0x00;
0212 24BC out 0x24,R2
0214 .dbline 144
0214 ; TIMSK0=0x01;
0214 81E0 ldi R24,1
0216 80936E00 sts 110,R24
021A .dbline 145
021A ; TCNT0=0xce; // (1024/16,000,000)*50=3.2ms
021A 8EEC ldi R24,206
021C 86BD out 0x26,R24
021E .dbline 146
021E ; TCCR0B=0x05; // clk/1024
021E 85E0 ldi R24,5
0220 85BD out 0x25,R24
0222 .dbline 148
0222 ; /*T/C1*/
0222 ; TCCR1A=0x00;
0222 20928000 sts 128,R2
0226 .dbline 149
0226 ; TIMSK1=0x01;
0226 81E0 ldi R24,1
0228 80936F00 sts 111,R24
022C .dbline 150
022C ; TCNT1=0xfd8f; //10ms
022C 8FE8 ldi R24,64911
022E 9DEF ldi R25,253
0230 90938500 sts 132+1,R25
0234 80938400 sts 132,R24
0238 .dbline 151
0238 ; TCCR1B=0x04; // clk/256
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -