📄 温度测量.s
字号:
.module _温度测量.c
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
_str1::
.blkb 15
.area idata
.byte 't,'e,'m,'p,'e,'r,'a,'t,'u,'r,'e,49,58,32,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.dbsym e str1 _str1 A[15:15]c
_str2::
.blkb 15
.area idata
.byte 't,'e,'m,'p,'e,'r,'a,'t,'u,'r,'e,50,58,32,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.dbsym e str2 _str2 A[15:15]c
_str3::
.blkb 15
.area idata
.byte 't,'e,'m,'p,'e,'r,'a,'t,'u,'r,'e,51,58,32,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.dbsym e str3 _str3 A[15:15]c
_str4::
.blkb 15
.area idata
.byte 't,'e,'m,'p,'e,'r,'a,'t,'u,'r,'e,52,58,32,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.dbsym e str4 _str4 A[15:15]c
_str5::
.blkb 2
.area idata
.byte 40,'E
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 197,184
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 0,253
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 40,48
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 197,184
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 0,142
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 40,49
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 197,184
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 0,185
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 40,50
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 197,184
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.blkb 2
.area idata
.byte 0,224
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.dbsym e str5 _str5 A[32:4:8]c
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\徐胜辉\桌面\新建文件夹\温度测量.c
.dbfunc e delay1ms _delay1ms fV
; j -> R20,R21
; i -> R16,R17
.even
_delay1ms::
st -y,R20
st -y,R21
.dbline -1
.dbline 26
; #include<iom16v.h>
; #define uchar unsigned char
; #define uint unsigned int
; #define RS_1 PORTA|=(1<<3)
; #define RS_0 PORTA&=~(1<<3)
; #define RW_1 PORTA|=(1<<4)
; #define RW_0 PORTA&=~(1<<4)
; #define EN_1 PORTA|=(1<<5)
; #define EN_0 PORTA&=~(1<<5)
; unsigned char str1[]={"temperature1: "};
; unsigned char str2[]={"temperature2: "};
; unsigned char str3[]={"temperature3: "};
; unsigned char str4[]={"temperature4: "};
; unsigned char str5[4][8]={
; {0x28,0x45,0xc5,0xb8,0x00,0x00,0x00,0xfd},
; {0x28,0x30,0xc5,0xb8,0x00,0x00,0x00,0x8e},
; {0x28,0x31,0xc5,0xb8,0x00,0x00,0x00,0xb9},
; {0x28,0x32,0xc5,0xb8,0x00,0x00,0x00,0xe0}
; };
; uchar adata[5];
; uchar n;
; uint tvalue;//温度
; uchar tflag;//温度正负标志
; /*************************lcd1602程序**************************/
; void delay1ms(uint i)//延时1毫秒(不够精确的)
; {
.dbline 28
; unsigned int j;
; for(;i>0;i--)
xjmp L5
L2:
.dbline 29
; for(j=0;j<1142;j++);
clr R20
clr R21
xjmp L9
L6:
.dbline 29
L7:
.dbline 29
subi R20,255 ; offset = 1
sbci R21,255
L9:
.dbline 29
cpi R20,118
ldi R30,4
cpc R21,R30
brlo L6
X0:
L3:
.dbline 28
subi R16,1
sbci R17,0
L5:
.dbline 28
cpi R16,0
cpc R16,R17
brne L2
X1:
.dbline -2
L1:
.dbline 0 ; func end
ld R21,y+
ld R20,y+
ret
.dbsym r j 20 i
.dbsym r i 16 i
.dbend
.dbfunc e wr_com _wr_com fV
; com -> R10
.even
_wr_com::
st -y,R10
mov R10,R16
.dbline -1
.dbline 32
; }
; void wr_com(unsigned char com)//写指令//
; {
.dbline 33
; delay1ms(1);
ldi R16,1
ldi R17,0
xcall _delay1ms
.dbline 34
; RS_0;
cbi 0x1b,3
.dbline 35
; RW_0;
cbi 0x1b,4
.dbline 36
; EN_0;
cbi 0x1b,5
.dbline 37
; PORTB=com;
out 0x18,R10
.dbline 38
; delay1ms(1);
ldi R16,1
ldi R17,0
xcall _delay1ms
.dbline 39
; EN_1;
sbi 0x1b,5
.dbline 40
; delay1ms(1);
ldi R16,1
ldi R17,0
xcall _delay1ms
.dbline 41
; EN_0;
cbi 0x1b,5
.dbline -2
L10:
.dbline 0 ; func end
ld R10,y+
ret
.dbsym r com 10 c
.dbend
.dbfunc e wr_dat _wr_dat fV
; dat -> R10
.even
_wr_dat::
st -y,R10
mov R10,R16
.dbline -1
.dbline 44
; }
; void wr_dat(unsigned char dat)//写数据//
; {
.dbline 45
; delay1ms(1);
ldi R16,1
ldi R17,0
xcall _delay1ms
.dbline 46
; RS_1;
sbi 0x1b,3
.dbline 47
; RW_0;
cbi 0x1b,4
.dbline 48
; EN_0;
cbi 0x1b,5
.dbline 49
; PORTB=dat;
out 0x18,R10
.dbline 50
; delay1ms(1);
ldi R16,1
ldi R17,0
xcall _delay1ms
.dbline 51
; EN_1;
sbi 0x1b,5
.dbline 52
; delay1ms(1);
ldi R16,1
ldi R17,0
xcall _delay1ms
.dbline 53
; EN_0;
cbi 0x1b,5
.dbline -2
L11:
.dbline 0 ; func end
ld R10,y+
ret
.dbsym r dat 10 c
.dbend
.dbfunc e lcd_init _lcd_init fV
.even
_lcd_init::
.dbline -1
.dbline 56
; }
; void lcd_init()//初始化设置//
; {
.dbline 57
; DDRB|=0xFF; /*I/O口方向设置*/
in R24,0x17
ori R24,255
out 0x17,R24
.dbline 58
; DDRA|=(1<<3)|(1<<4)|(1<<5);
in R24,0x1a
ori R24,56
out 0x1a,R24
.dbline 59
; delay1ms(15);
ldi R16,15
ldi R17,0
xcall _delay1ms
.dbline 60
; wr_com(0x38);delay1ms(5);
ldi R16,56
xcall _wr_com
.dbline 60
ldi R16,5
ldi R17,0
xcall _delay1ms
.dbline 61
; wr_com(0x08);delay1ms(5);
ldi R16,8
xcall _wr_com
.dbline 61
ldi R16,5
ldi R17,0
xcall _delay1ms
.dbline 62
; wr_com(0x01);delay1ms(5);
ldi R16,1
xcall _wr_com
.dbline 62
ldi R16,5
ldi R17,0
xcall _delay1ms
.dbline 63
; wr_com(0x06);delay1ms(5);
ldi R16,6
xcall _wr_com
.dbline 63
ldi R16,5
ldi R17,0
xcall _delay1ms
.dbline 64
; wr_com(0x0c);delay1ms(5);
ldi R16,12
xcall _wr_com
.dbline 64
ldi R16,5
ldi R17,0
xcall _delay1ms
.dbline -2
L12:
.dbline 0 ; func end
ret
.dbend
.dbfunc e display _display fV
; p -> R20,R21
.even
_display::
st -y,R20
st -y,R21
movw R20,R16
.dbline -1
.dbline 68
; }
;
; void display(unsigned char *p)//显示//
; {
xjmp L15
L14:
.dbline 70
; while(*p!='\0')
; {
.dbline 71
; wr_dat(*p);
movw R30,R20
ldd R16,z+0
xcall _wr_dat
.dbline 72
; p++;
subi R20,255 ; offset = 1
sbci R21,255
.dbline 73
; delay1ms(1);
ldi R16,1
ldi R17,0
xcall _delay1ms
.dbline 74
; }
L15:
.dbline 69
movw R30,R20
ldd R2,z+0
tst R2
brne L14
X2:
.dbline -2
L13:
.dbline 0 ; func end
ld R21,y+
ld R20,y+
ret
.dbsym r p 20 pc
.dbend
.dbfunc e delay_18B20 _delay_18B20 fV
; time -> R16,R17
.even
_delay_18B20::
.dbline -1
.dbline 79
; }
;
; /******************************ds1820程序***************************************/
; void delay_18B20(int time)
; {
L18:
.dbline 81
; do
; time--;
subi R16,1
sbci R17,0
L19:
.dbline 82
; while(time>1);
ldi R24,1
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L18
X3:
.dbline -2
L17:
.dbline 0 ; func end
ret
.dbsym r time 16 I
.dbend
.dbfunc e ds1820rst _ds1820rst fc
; ack -> R20
.even
_ds1820rst::
st -y,R20
.dbline -1
.dbline 85
; }
; unsigned char ds1820rst()/*ds1820复位*/
; {
.dbline 87
; unsigned char ack;
; DDRA|=0x01;
sbi 0x1a,0
.dbline 88
; PORTA&=0xfe;
in R24,0x1b
andi R24,254
out 0x1b,R24
.dbline 89
; delay_18B20(500);
ldi R16,500
ldi R17,1
xcall _delay_18B20
.dbline 90
; PORTA|=0x01;
sbi 0x1b,0
.dbline 91
; DDRA&=0xfe;
in R24,0x1a
andi R24,254
out 0x1a,R24
.dbline 92
; delay_18B20(75);
ldi R16,75
ldi R17,0
xcall _delay_18B20
.dbline 93
; ack=PINA;
in R20,0x19
.dbline 94
; ack&=0x01;
andi R20,1
.dbline 95
; delay_18B20(500);
ldi R16,500
ldi R17,1
xcall _delay_18B20
.dbline 96
; return ack;
mov R16,R20
.dbline -2
L21:
.dbline 0 ; func end
ld R20,y+
ret
.dbsym r ack 20 c
.dbend
.dbfunc e ds1820rd _ds1820rd fc
; byte -> R20
; temp -> R10
; i -> R22
.even
_ds1820rd::
xcall push_xgsetF00C
.dbline -1
.dbline 100
; }
;
; unsigned char ds1820rd()/*读数据*/
; {
.dbline 102
; unsigned char i,byte,temp;
; byte=0x00;
clr R20
.dbline 103
; for (i=0;i<8;i++)
clr R22
xjmp L26
L23:
.dbline 104
; {
.dbline 105
; DDRA|=0x01;
sbi 0x1a,0
.dbline 106
; PORTA&=0xfe;//给脉冲信号
in R24,0x1b
andi R24,254
out 0x1b,R24
.dbline 107
; delay_18B20(3);
ldi R16,3
ldi R17,0
xcall _delay_18B20
.dbline 108
; PORTA|=0x01;
sbi 0x1b,0
.dbline 109
; DDRA&=0xfe;
in R24,0x1a
andi R24,254
out 0x1a,R24
.dbline 110
; delay_18B20(10);
ldi R16,10
ldi R17,0
xcall _delay_18B20
.dbline 111
; temp=(PINA&0x01);
in R24,0x19
andi R24,1
mov R10,R24
.dbline 112
; if(temp!=0x00)
tst R24
breq L27
X4:
.dbline 113
; byte|=0x80;
ori R20,128
L27:
.dbline 114
; if(i<7)
cpi R22,7
brsh L29
X5:
.dbline 115
; byte=byte>>1;
lsr R20
L29:
.dbline 116
; delay_18B20(100);
ldi R16,100
ldi R17,0
xcall _delay_18B20
.dbline 117
; DDRA|=0x01;
sbi 0x1a,0
.dbline 118
; delay_18B20(5);
ldi R16,5
ldi R17,0
xcall _delay_18B20
.dbline 119
; }
L24:
.dbline 103
inc R22
L26:
.dbline 103
cpi R22,8
brlo L23
X6:
.dbline 120
; return byte;
mov R16,R20
.dbline -2
L22:
.dbline 0 ; func end
xjmp pop_xgsetF00C
.dbsym r byte 20 c
.dbsym r temp 10 c
.dbsym r i 22 c
.dbend
.dbfunc e ds1820wr _ds1820wr fV
; i -> R22
; j -> R10
; wdata -> R20
.even
_ds1820wr::
xcall push_xgsetF00C
mov R20,R16
.dbline -1
.dbline 124
; }
;
; void ds1820wr(uchar wdata)/*写数据*/
; {
.dbline 126
; unsigned char i,j;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -