📄 ds18b20_main.lis
字号:
01E2 .dbline 58
01E2 ; }
01E2 ;
01E2 ; //1602初始化
01E2 ; void LcdInit(void)
01E2 ; {
01E2 .dbline 59
01E2 ; DDRD = 0xff;
01E2 8FEF ldi R24,255
01E4 81BB out 0x11,R24
01E6 .dbline 60
01E6 ; PORTD = 0x00;
01E6 2224 clr R2
01E8 22BA out 0x12,R2
01EA .dbline 61
01EA ; writecom(0x38);
01EA 08E3 ldi R16,56
01EC DEDF xcall _writecom
01EE .dbline 62
01EE ; s_ms(1000);
01EE 08EE ldi R16,1000
01F0 13E0 ldi R17,3
01F2 A7DF xcall _s_ms
01F4 .dbline 63
01F4 ; writecom(0x01);
01F4 01E0 ldi R16,1
01F6 D9DF xcall _writecom
01F8 .dbline 64
01F8 ; s_ms(1000);
01F8 08EE ldi R16,1000
01FA 13E0 ldi R17,3
01FC A2DF xcall _s_ms
01FE .dbline 65
01FE ; s_ms(1000);
01FE 08EE ldi R16,1000
0200 13E0 ldi R17,3
0202 9FDF xcall _s_ms
0204 .dbline 66
0204 ; s_ms(1000);
0204 08EE ldi R16,1000
0206 13E0 ldi R17,3
0208 9CDF xcall _s_ms
020A .dbline 67
020A ; s_ms(1000);
020A 08EE ldi R16,1000
020C 13E0 ldi R17,3
020E 99DF xcall _s_ms
0210 .dbline 68
0210 ; s_ms(1000);
0210 08EE ldi R16,1000
0212 13E0 ldi R17,3
0214 96DF xcall _s_ms
0216 .dbline 69
0216 ; s_ms(1000);
0216 08EE ldi R16,1000
0218 13E0 ldi R17,3
021A 93DF xcall _s_ms
021C .dbline 70
021C ; s_ms(1000);
021C 08EE ldi R16,1000
021E 13E0 ldi R17,3
0220 90DF xcall _s_ms
0222 .dbline 71
0222 ; writecom(0x02);
0222 02E0 ldi R16,2
0224 C2DF xcall _writecom
0226 .dbline 72
0226 ; s_ms(1000);
0226 08EE ldi R16,1000
0228 13E0 ldi R17,3
022A 8BDF xcall _s_ms
022C .dbline 73
022C ; writecom(0x06);
022C 06E0 ldi R16,6
022E BDDF xcall _writecom
0230 .dbline 74
0230 ; s_ms(1000);
0230 08EE ldi R16,1000
0232 13E0 ldi R17,3
0234 86DF xcall _s_ms
0236 .dbline 75
0236 ; writecom(0x0c);
0236 0CE0 ldi R16,12
0238 B8DF xcall _writecom
023A .dbline 76
023A ; s_ms(1000);
023A 08EE ldi R16,1000
023C 13E0 ldi R17,3
023E 81DF xcall _s_ms
0240 .dbline 77
0240 ; writecom(0x38);
0240 08E3 ldi R16,56
0242 B3DF xcall _writecom
0244 .dbline 78
0244 ; s_ms(1000);
0244 08EE ldi R16,1000
0246 13E0 ldi R17,3
0248 .dbline -2
0248 L48:
0248 .dbline 0 ; func end
0248 7CCF xjmp _s_ms
024A .dbend
024A .dbfunc e writedata _writedata fV
024A ; data -> R10
.even
024A _writedata::
024A AA92 st -y,R10
024C A02E mov R10,R16
024E .dbline -1
024E .dbline 83
024E ; }
024E ;
024E ; //写数据
024E ; void writedata(uchar data)
024E ; {
024E .dbline 84
024E ; busy();
024E 82DF xcall _busy
0250 .dbline 85
0250 ; s_ms(500);
0250 04EF ldi R16,500
0252 11E0 ldi R17,1
0254 76DF xcall _s_ms
0256 .dbline 86
0256 ; PORTA|=(1<<RS); //RS=1
0256 DD9A sbi 0x1b,5
0258 .dbline 87
0258 ; s_ms(500);
0258 04EF ldi R16,500
025A 11E0 ldi R17,1
025C 72DF xcall _s_ms
025E .dbline 88
025E ; PORTA&=~(1<<RW); //RW=0
025E DE98 cbi 0x1b,6
0260 .dbline 89
0260 ; s_ms(500);
0260 04EF ldi R16,500
0262 11E0 ldi R17,1
0264 6EDF xcall _s_ms
0266 .dbline 90
0266 ; PORTA|=(1<<EN); //EN=1
0266 DF9A sbi 0x1b,7
0268 .dbline 91
0268 ; s_ms(500);
0268 04EF ldi R16,500
026A 11E0 ldi R17,1
026C 6ADF xcall _s_ms
026E .dbline 92
026E ; PORTD = data; //输出数据
026E A2BA out 0x12,R10
0270 .dbline 93
0270 ; s_ms(500);
0270 04EF ldi R16,500
0272 11E0 ldi R17,1
0274 66DF xcall _s_ms
0276 .dbline 94
0276 ; PORTA&=~(1<<EN); //EN=0
0276 DF98 cbi 0x1b,7
0278 .dbline 95
0278 ; s_ms(500);
0278 04EF ldi R16,500
027A 11E0 ldi R17,1
027C 62DF xcall _s_ms
027E .dbline -2
027E L49:
027E .dbline 0 ; func end
027E A990 ld R10,y+
0280 0895 ret
0282 .dbsym r data 10 c
0282 .dbend
0282 .dbfunc e readdata _readdata fc
0282 ; temp -> R10
.even
0282 _readdata::
0282 AA92 st -y,R10
0284 .dbline -1
0284 .dbline 101
0284 ; }
0284 ;
0284 ;
0284 ; //读数据
0284 ; uchar readdata(void)
0284 ; {
0284 .dbline 103
0284 ; uchar temp;
0284 ; busy();
0284 67DF xcall _busy
0286 .dbline 104
0286 ; s_ms(500);
0286 04EF ldi R16,500
0288 11E0 ldi R17,1
028A 5BDF xcall _s_ms
028C .dbline 105
028C ; PORTA|=(1<<RS); //RS=1
028C DD9A sbi 0x1b,5
028E .dbline 106
028E ; s_ms(500);
028E 04EF ldi R16,500
0290 11E0 ldi R17,1
0292 57DF xcall _s_ms
0294 .dbline 107
0294 ; PORTA|=(1<<RW); //RW=1
0294 DE9A sbi 0x1b,6
0296 .dbline 108
0296 ; s_ms(500);
0296 04EF ldi R16,500
0298 11E0 ldi R17,1
029A 53DF xcall _s_ms
029C .dbline 109
029C ; PORTA|=(1<<EN); //EN=1
029C DF9A sbi 0x1b,7
029E .dbline 110
029E ; s_ms(500);
029E 04EF ldi R16,500
02A0 11E0 ldi R17,1
02A2 4FDF xcall _s_ms
02A4 .dbline 111
02A4 ; DDRD=0x00; //A端口变输入
02A4 2224 clr R2
02A6 21BA out 0x11,R2
02A8 .dbline 112
02A8 ; s_ms(500);
02A8 04EF ldi R16,500
02AA 11E0 ldi R17,1
02AC 4ADF xcall _s_ms
02AE .dbline 113
02AE ; temp = PIND; //读A端口
02AE A0B2 in R10,0x10
02B0 .dbline 114
02B0 ; s_ms(500);
02B0 04EF ldi R16,500
02B2 11E0 ldi R17,1
02B4 46DF xcall _s_ms
02B6 .dbline 115
02B6 ; DDRD=0xff; //A端口变输出
02B6 8FEF ldi R24,255
02B8 81BB out 0x11,R24
02BA .dbline 116
02BA ; s_ms(500);
02BA 04EF ldi R16,500
02BC 11E0 ldi R17,1
02BE 41DF xcall _s_ms
02C0 .dbline 117
02C0 ; PORTA&=~(1<<EN); //EN=0
02C0 DF98 cbi 0x1b,7
02C2 .dbline 118
02C2 ; s_ms(500);
02C2 04EF ldi R16,500
02C4 11E0 ldi R17,1
02C6 3DDF xcall _s_ms
02C8 .dbline 119
02C8 ; return temp;
02C8 0A2D mov R16,R10
02CA .dbline -2
02CA L50:
02CA .dbline 0 ; func end
02CA A990 ld R10,y+
02CC 0895 ret
02CE .dbsym r temp 10 c
02CE .dbend
02CE .dbfunc e WriteCGRAM _WriteCGRAM fV
02CE ; t -> R10,R11
02CE ; i -> R20,R21
02CE ; pBuffer -> R22,R23
02CE ; num -> R10,R11
.even
02CE _WriteCGRAM::
02CE 0E940000 xcall push_xgsetF00C
02D2 B901 movw R22,R18
02D4 5801 movw R10,R16
02D6 .dbline -1
02D6 .dbline 129
02D6 ; }
02D6 ;
02D6 ; //=================================================
02D6 ; // 描述: 写LCD内部CGRAM函数
02D6 ; // 入口: ‘num’要写的数据个数
02D6 ; // ‘pbuffer’要写的数据的首地址
02D6 ; // 出口: 无
02D6 ; //================================================
02D6 ; void WriteCGRAM(uint num, const uint *pBuffer)
02D6 ; {
02D6 .dbline 131
02D6 ; uint i,t;
02D6 ; writecom(0x40);
02D6 00E4 ldi R16,64
02D8 68DF xcall _writecom
02DA .dbline 132
02DA ; PORTA|=(1<<RS);
02DA DD9A sbi 0x1b,5
02DC .dbline 133
02DC ; PORTA&=~(1<<RW);
02DC DE98 cbi 0x1b,6
02DE .dbline 134
02DE ; for(i=num;i!=0;i--)
02DE A501 movw R20,R10
02E0 0AC0 xjmp L55
02E2 L52:
02E2 .dbline 135
02E2 ; {
02E2 .dbline 136
02E2 ; t = *pBuffer;
02E2 FB01 movw R30,R22
02E4 A080 ldd R10,z+0
02E6 B180 ldd R11,z+1
02E8 .dbline 137
02E8 ; PORTA|=(1<<EN);
02E8 DF9A sbi 0x1b,7
02EA .dbline 138
02EA ; PORTD = t;
02EA A2BA out 0x12,R10
02EC .dbline 139
02EC ; PORTA&=~(1<<EN);
02EC DF98 cbi 0x1b,7
02EE .dbline 140
02EE ; pBuffer++;
02EE 6E5F subi R22,254 ; offset = 2
02F0 7F4F sbci R23,255
02F2 .dbline 141
02F2 ; }
02F2 L53:
02F2 .dbline 134
02F2 4150 subi R20,1
02F4 5040 sbci R21,0
02F6 L55:
02F6 .dbline 134
02F6 4030 cpi R20,0
02F8 4507 cpc R20,R21
02FA 99F7 brne L52
02FC X12:
02FC .dbline -2
02FC L51:
02FC .dbline 0 ; func end
02FC 0C940000 xjmp pop_xgsetF00C
0300 .dbsym r t 10 i
0300 .dbsym r i 20 i
0300 .dbsym r pBuffer 22 pki
0300 .dbsym r num 10 i
0300 .dbend
0300 .dbfunc e WriteMenu _WriteMenu fV
0300 ; t -> R10
0300 ; i -> R22
0300 ; pBuffer -> R20,R21
.even
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -