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