⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stest.src

📁 我自己写的ds1820b温度测量程序
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; .\stest.SRC generated from: stest.c

$NOMOD51

NAME	STEST

P0	DATA	080H
P1	DATA	090H
P2	DATA	0A0H
P3	DATA	0B0H
AC	BIT	0D0H.6
T0	BIT	0B0H.4
T1	BIT	0B0H.5
EA	BIT	0A8H.7
IE	DATA	0A8H
P0_0	BIT	080H.0
P1_0	BIT	090H.0
P0_1	BIT	080H.1
FL	BIT	0D0H.1
P2_0	BIT	0A0H.0
P1_1	BIT	090H.1
P0_2	BIT	080H.2
P3_0	BIT	0B0H.0
P2_1	BIT	0A0H.1
P1_2	BIT	090H.2
P0_3	BIT	080H.3
P3_1	BIT	0B0H.1
P2_2	BIT	0A0H.2
P1_3	BIT	090H.3
P0_4	BIT	080H.4
P3_2	BIT	0B0H.2
P2_3	BIT	0A0H.3
P1_4	BIT	090H.4
P0_5	BIT	080H.5
RD	BIT	0B0H.7
P3_3	BIT	0B0H.3
P2_4	BIT	0A0H.4
P1_5	BIT	090H.5
P0_6	BIT	080H.6
P3_4	BIT	0B0H.4
P2_5	BIT	0A0H.5
P1_6	BIT	090H.6
P0_7	BIT	080H.7
P3_5	BIT	0B0H.5
ES	BIT	0A8H.4
P2_6	BIT	0A0H.6
P1_7	BIT	090H.7
P3_6	BIT	0B0H.6
P2_7	BIT	0A0H.7
IP	DATA	0B8H
P3_7	BIT	0B0H.7
RI	BIT	098H.0
CY	BIT	0D0H.7
INT0	BIT	0B0H.2
INT1	BIT	0B0H.3
TI	BIT	098H.1
PS	BIT	0B8H.4
SP	DATA	081H
OV	BIT	0D0H.2
WR	BIT	0B0H.6
SBUF	DATA	099H
PCON	DATA	087H
SCON	DATA	098H
TMOD	DATA	089H
TCON	DATA	088H
IE0	BIT	088H.1
IE1	BIT	088H.3
B	DATA	0F0H
ACC	DATA	0E0H
ET0	BIT	0A8H.1
ET1	BIT	0A8H.3
TF0	BIT	088H.5
ET2	BIT	0A8H.5
TF1	BIT	088H.7
RB8	BIT	098H.2
TH0	DATA	08CH
EX0	BIT	0A8H.0
IT0	BIT	088H.0
TH1	DATA	08DH
EX1	BIT	0A8H.2
TB8	BIT	098H.3
IT1	BIT	088H.2
P	BIT	0D0H.0
SM0	BIT	098H.7
TL0	DATA	08AH
SM1	BIT	098H.6
TL1	DATA	08BH
SM2	BIT	098H.5
PT0	BIT	0B8H.1
RS0	BIT	0D0H.3
PT1	BIT	0B8H.3
RS1	BIT	0D0H.4
PT2	BIT	0B8H.5
TR0	BIT	088H.4
TR1	BIT	088H.6
PX0	BIT	0B8H.0
PX1	BIT	0B8H.2
DPH	DATA	083H
DPL	DATA	082H
REN	BIT	098H.4
RXD	BIT	0B0H.0
TXD	BIT	0B0H.1
F0	BIT	0D0H.5
PSW	DATA	0D0H
?PR?initUart?STEST   SEGMENT CODE 
?PR?uart?STEST       SEGMENT CODE 
?DT?uart?STEST       SEGMENT DATA OVERLAYABLE 
?PR?Delay_110?STEST  SEGMENT CODE 
?PR?Delay_510?STEST  SEGMENT CODE 
?PR?InitDS1820?STEST SEGMENT CODE 
?PR?_ds1820command?STEST                 SEGMENT CODE 
?DT?_ds1820command?STEST                 SEGMENT DATA OVERLAYABLE 
?PR?_ds1820rd?STEST  SEGMENT CODE 
?DT?_ds1820rd?STEST  SEGMENT DATA OVERLAYABLE 
?PR?tmtoc?STEST      SEGMENT CODE 
?DT?tmtoc?STEST      SEGMENT DATA OVERLAYABLE 
?PR?_disp?STEST      SEGMENT CODE 
?PR?TMCLSHOW?STEST   SEGMENT CODE 
?PR?main?STEST       SEGMENT CODE 
?CO?STEST            SEGMENT CODE 
?C_INITSEG           SEGMENT CODE 
?BI?STEST            SEGMENT BIT 
?DT?STEST            SEGMENT DATA 
	EXTRN	CODE (?C?FCASTI)
	EXTRN	CODE (?C?FPMUL)
	EXTRN	CODE (?C?FPADD)
	EXTRN	CODE (?C?CASTF)
	EXTRN	CODE (?C?SIDIV)
	EXTRN	CODE (?C?CLDPTR)
	EXTRN	CODE (?C_STARTUP)
	PUBLIC	t
	PUBLIC	recived
	PUBLIC	DS1820ERR
	PUBLIC	MYWD
	PUBLIC	TMCL
	PUBLIC	comzf
	PUBLIC	comno
	PUBLIC	DS1820ON
	PUBLIC	disbuf
	PUBLIC	trance
	PUBLIC	readtm
	PUBLIC	main
	PUBLIC	TMCLSHOW
	PUBLIC	_disp
	PUBLIC	tmtoc
	PUBLIC	_ds1820rd
	PUBLIC	_ds1820command
	PUBLIC	InitDS1820
	PUBLIC	Delay_510
	PUBLIC	Delay_110
	PUBLIC	uart
	PUBLIC	initUart

	RSEG  ?DT?tmtoc?STEST
?tmtoc?BYTE:
       sign?743:   DS   1
         tm?744:   DS   2

	RSEG  ?DT?uart?STEST
?uart?BYTE:
          m?140:   DS   1

	RSEG  ?DT?_ds1820rd?STEST
?_ds1820rd?BYTE:
         pt?642:   DS   3

	RSEG  ?DT?_ds1820command?STEST
?_ds1820command?BYTE:
          a?541:   DS   1

	RSEG  ?BI?STEST
         readtm:   DBIT   1
       DS1820ON:   DBIT   1

	RSEG  ?DT?STEST
         trance:   DS   1
         disbuf:   DS   10
          comno:   DS   1
          comzf:   DS   1
           TMCL:   DS   5
           MYWD:   DS   7
      DS1820ERR:   DS   11
        recived:   DS   1
              t:   DS   2

	RSEG  ?CO?STEST
?SC_0:
	DB  'N' ,'O' ,'W' ,',' ,'t' ,'e' ,'m' ,'p' ,'e' ,'r' 
	DB  'a' ,'t' ,'u' ,'r' ,'e' ,' ' ,'i' ,'s' ,':' ,000H

?SC_20:
	DB  00AH,000H


	RSEG  ?C_INITSEG
	DB	007H
	DB	MYWD
	DB	000H
	DB	000H
	DB	000H
	DB	000H
	DB	000H
	DB	060H
	DB	043H

	DB	00BH
	DB	DS1820ERR
	DB  'N' ,'O' ,' ' ,'D' ,'S' ,'1' ,'8' ,'2' ,'0' ,'!' 
	DB  000H


	DB	005H
	DB	TMCL
	DB  'T' ,'M' ,'C' ,'L' ,000H


	DB	00AH
	DB	disbuf
	DB	000H
	DB  000H,000H,000H,000H,000H,000H,000H,000H,000H


	DB	001H
	DB	trance
	DB	000H

	DB	001H
	DB	recived
	DB	000H

	DB	001H
	DB	comno
	DB	000H

; #include <AT89X51.h>
; #include <intrins.h>
; 
; 
; #define TMPort P1_7
; 
; unsigned char MYWD[7]={0,0,0,0,0,'`','C'},DS1820ERR[]="NO DS1820!",TMCL[]={"TMCL"};
; unsigned char disbuf[10]={0};
; unsigned char trance=0,recived=0,comno=0,comzf;//发送状态、接受命令字符序号、接收的字符
; 
; unsigned int t;
; bit DS1820ON,readtm;//DS1820响应、是否接收测温命令。
; 
; void initUart(void)//波特率9600,24M时钟

	RSEG  ?PR?initUart?STEST
initUart:
			; SOURCE LINE # 14
; {
			; SOURCE LINE # 15
;  TMOD|=0x20;
			; SOURCE LINE # 16
	ORL  	TMOD,#020H
;  SCON=0x50;
			; SOURCE LINE # 17
	MOV  	SCON,#050H
;  PCON|=0x80;
			; SOURCE LINE # 18
	ORL  	PCON,#080H
;  TH1=0xf3;
			; SOURCE LINE # 19
	MOV  	TH1,#0F3H
;  TL1=0xf3;
			; SOURCE LINE # 20
	MOV  	TL1,#0F3H
;  TR1=1;
			; SOURCE LINE # 21
	SETB 	TR1
;  ES=1;
			; SOURCE LINE # 22
	SETB 	ES
; }
			; SOURCE LINE # 23
	RET  	
; END OF initUart

CSEG	AT	00023H
	LJMP	uart

; 
; 
; void uart(void) interrupt 4

	RSEG  ?PR?uart?STEST
	USING	0
uart:
			; SOURCE LINE # 26
; {
; unsigned char m=0; 
			; SOURCE LINE # 28
	MOV  	m?140,#00H
; if(RI)
			; SOURCE LINE # 29
	JNB  	RI,?C0002
; 	{comzf=SBUF;RI=0;recived=1;}
			; SOURCE LINE # 30
	MOV  	comzf,SBUF
	CLR  	RI
	MOV  	recived,#01H
	RETI 	
?C0002:
; else
;     {TI=0;trance=1;}    
			; SOURCE LINE # 32
	CLR  	TI
	MOV  	trance,#01H
; }
			; SOURCE LINE # 33
?C0004:
	RETI 	
; END OF uart

; 
; 
; void Delay_110(void)	//延时110微秒,24M晶振

	RSEG  ?PR?Delay_110?STEST
Delay_110:
			; SOURCE LINE # 36
; {EA=0;
			; SOURCE LINE # 37
	CLR  	EA
; #pragma asm
; 	MOV R0,#34H
	  MOV R0,#34H
; 	MOV R1,#02H
	  MOV R1,#02H
; 	TSR2:
	  TSR2:
; 	DJNZ R0,TSR2
	  DJNZ R0,TSR2
; 	MOV R0,#34H
	  MOV R0,#34H
; 	DJNZ R1,TSR2
	  DJNZ R1,TSR2
; #pragma endasm
; EA=1;}
			; SOURCE LINE # 46
	SETB 	EA
	RET  	
; END OF Delay_110

; 
; void Delay_510(void)	//延时510微秒,24M晶振

	RSEG  ?PR?Delay_510?STEST
Delay_510:
			; SOURCE LINE # 48
; {EA=0;
			; SOURCE LINE # 49
	CLR  	EA
; #pragma asm
;     nop
	  nop
; 	nop
	  nop
; 	MOV R0,#7DH
	  MOV R0,#7DH
; 	MOV R1,#04H
	  MOV R1,#04H
; 	TSR1:
	  TSR1:
; 	DJNZ R0,TSR1
	  DJNZ R0,TSR1
; 	MOV R0,#7DH
	  MOV R0,#7DH
; 	DJNZ R1,TSR1
	  DJNZ R1,TSR1
; #pragma endasm
; EA=1;}
			; SOURCE LINE # 60
	SETB 	EA
	RET  	
; END OF Delay_510

; 
; void InitDS1820(void)		//初始化DS1820

	RSEG  ?PR?InitDS1820?STEST
InitDS1820:
			; SOURCE LINE # 62
; {  EA=0;
			; SOURCE LINE # 63
	CLR  	EA
; 	TMPort = 1;		//拉高TMPort
			; SOURCE LINE # 64
	SETB 	P1_7
; 	_nop_();//保持一个周期
			; SOURCE LINE # 65
	NOP  	
;     _nop_();
			; SOURCE LINE # 66
	NOP  	
; 	TMPort = 0;		//拉低TMPort
			; SOURCE LINE # 67
	CLR  	P1_7
;     Delay_510();  //延时  DS1820复位时间要500us的低电平
			; SOURCE LINE # 68
	LCALL	Delay_510
;     TMPort = 1;   //拉高TMPort
			; SOURCE LINE # 69
	SETB 	P1_7
; 	Delay_110();  //延时110us 等待DS1820回应
			; SOURCE LINE # 70
	LCALL	Delay_110
;   if (!TMPort)  //回应信号为低电平
			; SOURCE LINE # 71
	JB   	P1_7,?C0007
;     {DS1820ON=1;}
			; SOURCE LINE # 72
	SETB 	DS1820ON
	SJMP 	?C0008
?C0007:
;   else
;     {DS1820ON=0;}
			; SOURCE LINE # 74
	CLR  	DS1820ON
?C0008:
;   Delay_110();  //延时
			; SOURCE LINE # 75
	LCALL	Delay_110
;   Delay_110();
			; SOURCE LINE # 76
	LCALL	Delay_110
;   TMPort=1;   //拉高TMPort
			; SOURCE LINE # 77
	SETB 	P1_7
; EA=1;
			; SOURCE LINE # 78
	SETB 	EA
; }
			; SOURCE LINE # 79
	RET  	
; END OF InitDS1820

; 
; 
; void ds1820command(unsigned char a) //写ds1820命令函数。

	RSEG  ?PR?_ds1820command?STEST
_ds1820command:
			; SOURCE LINE # 82
	MOV  	a?541,R7
; {
			; SOURCE LINE # 83
; EA=0;
			; SOURCE LINE # 84
	CLR  	EA
; #pragma asm
;   MOV A,R7
	  MOV A,R7
;   MOV R2,#8
	  MOV R2,#8
;   CLR C
	  CLR C
;   WR1:
	  WR1:
;   CLR TMPort
	  CLR P1_7
;   MOV R3,#2//延时3us,24M时钟
	  MOV R3,#2 
;   DJNZ R3,$
	  DJNZ R3,$
;   RRC A
	  RRC A
;   MOV TMPort,C
	  MOV P1_7,C
;   MOV R3,#68//延时70us
	  MOV R3,#68 
;   DJNZ R3,$
	  DJNZ R3,$
;   SETB TMPort
	  SETB P1_7
;   NOP
	  NOP
;   NOP
	  NOP
;   NOP
	  NOP
;   NOP
	  NOP
;   DJNZ R2,WR1
	  DJNZ R2,WR1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -