📄 wsd1.src
字号:
; .\wsd1.SRC generated from: wsd1.c
; COMPILER INVOKED BY:
; C:\KEIL\C51\BIN\C51.EXE wsd1.c BROWSE DEBUG OBJECTEXTEND SRC(.\wsd1.SRC)
$NOMOD51
NAME WSD1
K4 BIT 080H.4
ACC7 BIT 0E0H.7
P0 DATA 080H
SRCLK BIT 090H.6
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
T2 BIT 090H.0
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
SOUTH BIT 080H.2
P3_2 BIT 0B0H.2
P2_3 BIT 0A0H.3
P1_4 BIT 090H.4
P0_5 BIT 080H.5
EXF2 BIT 0C8H.6
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
SOUTL BIT 080H.3
WOUTH BIT 080H.0
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
WOUTL BIT 080H.1
INT1 BIT 0B0H.3
TI BIT 098H.1
beep BIT 0A0H.1
RCAP2H DATA 0CBH
PS BIT 0B8H.4
SP DATA 081H
ds1820 BIT 0B0H.4
T2EX BIT 090H.1
OV BIT 0D0H.2
RCAP2L DATA 0CAH
C_T2 BIT 0C8H.1
WR BIT 0B0H.6
RCLK BIT 0C8H.5
TCLK BIT 0C8H.4
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
CP_RL2 BIT 0C8H.0
ACC DATA 0E0H
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
ET2 BIT 0A8H.5
TF1 BIT 088H.7
TF2 BIT 0C8H.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
TH2 DATA 0CDH
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
TL2 DATA 0CCH
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
TR2 BIT 0C8H.2
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
CLK BIT 090H.5
DPH DATA 083H
DPL DATA 082H
EXEN2 BIT 0C8H.3
REN BIT 098H.4
T2MOD DATA 0C9H
T2CON DATA 0C8H
SER BIT 090H.4
RXD BIT 0B0H.0
TXD BIT 0B0H.1
F0 BIT 0D0H.5
ACC0 BIT 0E0H.0
ACC1 BIT 0E0H.1
ACC2 BIT 0E0H.2
ACC3 BIT 0E0H.3
PSW DATA 0D0H
K1 BIT 080H.5
ACC4 BIT 0E0H.4
K2 BIT 080H.6
ACC5 BIT 0E0H.5
K3 BIT 080H.7
ACC6 BIT 0E0H.6
?PR?_delay1?WSD1 SEGMENT CODE
?PR?_d595?WSD1 SEGMENT CODE
?PR?cjtemp?WSD1 SEGMENT CODE
?DT?cjtemp?WSD1 SEGMENT DATA OVERLAYABLE
?PR?wdcl?WSD1 SEGMENT CODE
?PR?RDSDZ?WSD1 SEGMENT CODE
?DT?WSD1 SEGMENT DATA
?PR?AJ?WSD1 SEGMENT CODE
?DT?AJ?WSD1 SEGMENT DATA OVERLAYABLE
?PR?Show0?WSD1 SEGMENT CODE
?PR?Show1?WSD1 SEGMENT CODE
?PR?kzbj?WSD1 SEGMENT CODE
?PR?time0_int?WSD1 SEGMENT CODE
?DT?time0_int?WSD1 SEGMENT DATA OVERLAYABLE
?PR?time1_int?WSD1 SEGMENT CODE
?PR?time2_int?WSD1 SEGMENT CODE
?PR?main?WSD1 SEGMENT CODE
?C_INITSEG SEGMENT CODE
?CO?WSD1 SEGMENT CODE
?BA?WSD1 SEGMENT DATA BITADDRESSABLE
EXTRN CODE (_d25045)
EXTRN CODE (?C?IMUL)
EXTRN CODE (?C?UIDIV)
EXTRN CODE (?C_STARTUP)
PUBLIC db1
PUBLIC TAB
PUBLIC plz
PUBLIC wdz
PUBLIC msn
PUBLIC SOUT
PUBLIC db?
PUBLIC x3
PUBLIC x0
PUBLIC x
PUBLIC xs1
PUBLIC SDTAB
PUBLIC DAT1
PUBLIC DAT
PUBLIC main
PUBLIC time2_int
PUBLIC time1_int
PUBLIC time0_int
PUBLIC kzbj
PUBLIC Show1
PUBLIC Show0
PUBLIC AJ
PUBLIC RDSDZ
PUBLIC wdcl
PUBLIC cjtemp
PUBLIC _d595
PUBLIC _delay1
RSEG ?DT?cjtemp?WSD1
?cjtemp?BYTE:
z?245: DS 2
RSEG ?DT?AJ?WSD1
?AJ?BYTE:
a?552: DS 1
b?553: DS 1
c?554: DS 1
RSEG ?DT?time0_int?WSD1
?time0_int?BYTE:
i?956: DS 1
z?957: DS 1
pplz?958: DS 2
RSEG ?DT?WSD1
a?448: DS 1
RSEG ?DT?WSD1
S1?449: DS 1
RSEG ?DT?WSD1
S2?450: DS 1
RSEG ?DT?WSD1
S3?451: DS 1
xs1: DS 8
SOUT: DS 2
msn: DS 1
wdz: DS 2
plz: DS 2
TAB: DS 18
RSEG ?BA?WSD1
x: DS 1
x0 EQU (x+0).7
x3 EQU (x+0).4
db? EQU (x+0).6
db1 EQU (x+0).5
RSEG ?CO?WSD1
DAT:
DB 080H
DB 040H
DB 020H
DB 010H
DB 008H
DB 004H
DB 002H
DB 001H
DB 000H,000H,000H
DAT1:
DB 0EBH
DB 00AH
DB 079H
DB 05BH
DB 09AH
DB 0D3H
DB 0F3H
DB 04AH
DB 0FBH
DB 0DBH
DB 040H
DB 010H
DB 001H
DB 03BH
DB 000H
DB 0F0H
DB 0BAH
DB 000H
SDTAB:
DW 01C75H
DW 01C4DH
DW 01C41H
DW 01C35H
DW 01C33H
DW 01C27H
DW 01C1BH
DW 01C0FH
DW 01C03H
DW 01BF7H
DW 01BF1H
DW 01BE5H
DW 01BD9H
DW 01BCDH
DW 01BB7H
DW 01BABH
DW 01B9FH
DW 01B93H
DW 01B87H
DW 01B7BH
DW 01B6DH
DW 01B61H
DW 01B55H
DW 01B49H
DW 01B3DH
DW 01B31H
DW 01B25H
DW 01B19H
DW 01B0DH
DW 01B01H
DW 01AF3H
DW 01AE7H
DW 01ADBH
DW 01ACFH
DW 01AC3H
DW 01AB7H
DW 01AABH
DW 01A9FH
DW 01A93H
DW 01A87H
DW 01A77H
DW 01A6BH
DW 01A5FH
DW 01A53H
DW 01A47H
DW 01A3BH
DW 01A2FH
DW 01A23H
DW 01A17H
DW 01A0BH
DW 019F8H
DW 019ECH
DW 019E0H
DW 019D4H
DW 019C8H
DW 019BCH
DW 019B0H
DW 019A4H
DW 01998H
DW 0198CH
DW 0196BH
DW 0195FH
DW 01953H
DW 01947H
DW 01945H
DW 0192FH
DW 01923H
DW 01917H
DW 0190BH
DW 01909H
DW 018EDH
DW 018E1H
DW 018D5H
DW 018C9H
DW 018BDH
DW 018B1H
DW 018A5H
DW 01899H
DW 0188DH
DW 01881H
DW 0185EH
DW 01852H
DW 01846H
DW 0183AH
DW 0182EH
DW 01822H
DW 01816H
DW 0180AH
DW 017FEH
DW 017F2H
DW 017B4H
DW 017A8H
DW 0179CH
DW 01790H
DW 01784H
DW 01782H
DW 01776H
DW 0176AH
DW 0175EH
DW 01752H
DB 000H,000H
RSEG ?C_INITSEG
DB 001H
DB msn
DB 032H
; /*-----------------------------------------
; 编者:吴威 04.09.16
; -----------------------------------------*/
; #include <REGX52.H>
; #define uchar unsigned char
; #define fchar signed char
; #define uint unsigned int
; #define dat 30
; #define dat1 60
; #define dat2 30
; /*--------------------------------*/
; sbit K1=P0^5;
; sbit K2=P0^6;
; sbit K3=P0^7;
; sbit K4=P0^4;
;
; sbit WOUTH=P0^0;
; sbit WOUTL=P0^1;
; sbit SOUTH=P0^2;
; sbit SOUTL=P0^3;
;
; sbit SER=P1^4; //14,8位串行输入
; sbit SRCLK=P1^6; //12琐存
; sbit CLK=P1^5; //11时钟
;
; sbit ds1820=P3^4;
; sbit beep=P2^1;
; //-----------------------------
; uchar bdata x;
; sbit x0 =x^7;
; sbit db =x^6; //小数点控制位
; sbit db1 =x^5;
; sbit x3 =x^4;
; //-----------------------------
; uchar data TAB[18],xs1[8],msn=50;
; uint SOUT,plz,wdz;
; //-----------------------------
; extern void d25045(uchar x);
; /*-----------------------------------*/
; uchar code DAT[11]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; //位驱动数组
;
; uchar code DAT1[18]={0xeb,0x0a,0x79,0x5b,0x9a,
; 0xd3,0xf3,0x4a,0xfb,0xdb,
; 0x40,0x10,0x01,0x3b,0x00,
; 0xf0,0xba,0x00};
; uint code SDTAB[101]=
; /*
; {
; 7285,7276,7264,7252,7240,7228,7216,7204,7192,7180,
; 7168,7156,7144,7132,7120,7108,7096,7084,7072,7060,
; 7048,7036,7024,7012,7000,6988,6976,6964,6952,6940,
; 6928,6916,6904,6892,6880,6868,6856,6844,6832,6820,
; 6808,6796,6784,6772,6760,6748,6736,6724,6712,6700,
; 6688,6675,6664,6652,6640,6628,6616,6604,6592,6580,
; 6568,6556,6544,6532,6520,6508,6496,6484,6472,6460,
; 6448,6436,6424,6412,6400,6388,6376,6364,6352,6340,
; 6328,6316,6304,6292,6280,6268,6256,6244,6232,6220,
; 6088,6076,6064,6052,6040,6028,6016,6004,5992,5980,
; };
; */
; {
; 7285,7245,7233,7221,7219,7207,7195,7183,7171,7159,
; 7153,7141,7129,7117,7095,7083,7071,7059,7047,7035,
; 7021,7009,6997,6985,6973,6961,6949,6937,6925,6913,
; 6899,6887,6875,6863,6851,6839,6827,6815,6803,6791,
; 6775,6763,6751,6739,6727,6715,6703,6691,6679,6667,
; 6648,6636,6624,6612,6600,6588,6576,6564,6552,6540,
; 6507,6495,6483,6471,6469,6447,6435,6423,6411,6409,
; 6381,6369,6357,6345,6333,6321,6309,6297,6285,6273,
; 6238,6226,6214,6202,6190,6178,6166,6154,6142,6130,
; 6068,6056,6044,6032,6020,6018,6006,5994,5982,5970,
; };
; /*
; {
; 5970,5982,5994,6006,6018,6020,6032,6044,6056,6068,
; 6130,6142,6154,6166,6178,6190,6202,6214,6226,6238,
; 6273,6285,6297,6309,6321,6333,6345,6357,6369,6381,
; 6409,6411,6423,6435,6447,6469,6471,6483,6495,6507,
; 6540,6552,6564,6576,6588,6600,6612,6624,6636,6648,
; 6667,6679,6691,6703,6715,6727,6739,6751,6763,6775,
; 6791,6803,6815,6827,6839,6851,6863,6875,6887,6899,
; 6913,6925,6937,6949,6961,6973,6985,6997,7009,7021,
; 7035,7047,7059,7071,7083,7095,7117,7129,7141,7153,
; 7159,7171,7183,7195,7207,7219,7221,7233,7245,7285,
; };
; */
; //-----------------------------
; void delay1(uint ms)
RSEG ?PR?_delay1?WSD1
L?0098:
USING 0
L?0099:
MOV DPTR,#DAT1
MOVC A,@A+DPTR
MOV R7,A
LCALL _d595
L?0100:
CLR SRCLK
SETB SRCLK
MOV R7,#01EH
MOV R6,#00H
_delay1:
USING 0
; SOURCE LINE # 88
;---- Variable 'ms?040' assigned to Register 'R6/R7' ----
; {
; SOURCE LINE # 89
; uint i;
; for(i=0;i<ms;i++); //Feed the dog
; SOURCE LINE # 91
;---- Variable 'i?041' assigned to Register 'R4/R5' ----
CLR A
MOV R5,A
MOV R4,A
?C0001:
CLR C
MOV A,R5
SUBB A,R7
MOV A,R4
SUBB A,R6
JNC ?C0004
INC R5
CJNE R5,#00H,?C0097
INC R4
?C0097:
SJMP ?C0001
; }
; SOURCE LINE # 92
?C0004:
RET
; END OF _delay1
; //*******************************************
; void d595(uchar x)
RSEG ?PR?_d595?WSD1
L?0101:
USING 0
CLR A
MOVC A,@A+DPTR
MOV R7,A
_d595:
USING 0
; SOURCE LINE # 94
;---- Variable 'x?142' assigned to Register 'R7' ----
; {
; SOURCE LINE # 95
; uchar temp,j;
; temp=x;
; SOURCE LINE # 97
;---- Variable 'temp?143' assigned to Register 'R7' ----
; if(db==1)
; SOURCE LINE # 98
JNB db?,?C0005
; {
; SOURCE LINE # 99
; if(db1==1){temp=temp|4;}
; SOURCE LINE # 100
JNB db1,?C0005
ORL AR7,#04H
; }
; SOURCE LINE # 101
?C0005:
; for (j=0;j<8;j++){
; SOURCE LINE # 102
;---- Variable 'j?144' assigned to Register 'R6' ----
CLR A
MOV R6,A
?C0007:
; temp=temp>>1; SER=CY; CLK=1; CLK=0;
; SOURCE LINE # 103
MOV A,R7
CLR C
RRC A
MOV R7,A
MOV SER,C
SETB CLK
CLR CLK
; }
; SOURCE LINE # 104
INC R6
CJNE R6,#08H,?C0007
; }
; SOURCE LINE # 105
?C0010:
RET
; END OF _d595
; /*-------------------------------*/
; uint cjtemp(void)
RSEG ?PR?cjtemp?WSD1
cjtemp:
USING 0
; SOURCE LINE # 107
; {uint z;
; SOURCE LINE # 108
;
; #pragma asm
; GET_TEMP:
GET_TEMP:
; //CLR EA ;使用ds1820一定要禁止任何中断产生
; ACALL INT ;调用初使化子程序
ACALL INT ;调用初使化子程序
; MOV A,#0CCH
MOV A,#0CCH
; ACALL WRITE ;送入跳过ROM命令
ACALL WRITE ;送入跳过ROM命令
; MOV A, #44H
MOV A, #44H
; ACALL WRITE ;送入温度转换命令
ACALL WRITE ;送入温度转换命令
; ACALL INT ;温度转换完全,再次初使化ds1820
ACALL INT ;温度转换完全,再次初使化ds1820
; MOV A,#0CCH
MOV A,#0CCH
; ACALL WRITE ;送入跳过ROM命令
ACALL WRITE ;送入跳过ROM命令
; MOV A,#0BEH
MOV A,#0BEH
; ACALL WRITE ;送入读温度暂存器命令
ACALL WRITE ;送入读温度暂存器命令
; ACALL READ
ACALL READ
; mov r7,a ;读出温度值低字节存入R7
mov r7,a ;读出温度值低字节存入R7
; ACALL READ
ACALL READ
; ;lr ACC.7
;lr ACC.7
; mov r6,a ;读出谩度值高字节存入R6
mov r6,a ;读出谩度值高字节存入R6
; SETB EA
SETB EA
; RET
RET
; INT:
INT:
; CLR EA ;初始化ds1820子程序
CLR EA ;初始化ds1820子程序
; L0:CLR ds1820 ;ds1820总线为低复位电平87460452
L0:CLR ds1820 ;ds1820总线为低复位电平87460452
; MOV R2,#200
MOV R2,#200
; L1:CLR ds1820
L1:CLR ds1820
; DJNZ R2,L1 ;总线复位电平保持400us
DJNZ R2,L1 ;总线复位电平保持400us
; SETB ds1820 ;释放ds1820总线
SETB ds1820 ;释放ds1820总线
; MOV R2,#30
MOV R2,#30
; L4:DJNZ R2,L4 ;释放ds1820总线保持60us
L4:DJNZ R2,L4 ;释放ds1820总线保持60us
; CLR C ;清存在信号(存在C=0,不存在C=1)
CLR C ;清存在信号(存在C=0,不存在C=1)
; ORL C,ds1820
ORL C,ds1820
; ;JC L0
;JC L0
; MOV R6,#80
MOV R6,#80
; L5:ORL C,ds1820
L5:ORL C,ds1820
; JC L3
JC L3
; DJNZ R6,L5
DJNZ R6,L5
; ;AJMP L0
;AJMP L0
; L3:MOV R2,#240
L3:MOV R2,#240
; L2:DJNZ R2,L2
L2:DJNZ R2,L2
; SETB EA
SETB EA
; RET
RET
; WRITE: ;向ds1820写操作命令子程序
WRITE: ;向ds1820写操作命令子程序
; CLR EA
CLR EA
; MOV R3,#8 ;写入ds1820的bit数,一个字节8个bit
MOV R3,#8 ;写入ds1820的bit数,一个字节8个bit
; WR1:SETB ds1820
WR1:SETB ds1820
; MOV R4,#8
MOV R4,#8
; RRC A ;把一个字节data(A)分成8个bit环移给 C
RRC A ;把一个字节data(A)分成8个bit环移给 C
; CLR ds1820 ;开始写入ds1820总线要处于复位(低)状态
CLR ds1820 ;开始写入ds1820总线要处于复位(低)状态
; WR2:DJNZ R4,WR2 ;ds1820总线复位保持16us
WR2:DJNZ R4,WR2 ;ds1820总线复位保持16us
; MOV ds1820,C ;写入一个bit
MOV ds1820,C ;写入一个bit
; MOV R4,#20
MOV R4,#20
; WR3:DJNZ R4,WR3 ;等待40us
WR3:DJNZ R4,WR3 ;等待40us
; DJNZ R3,WR1 ;写入下一个bit
DJNZ R3,WR1 ;写入下一个bit
; SETB ds1820 ;重新释放ds1820总线
SETB ds1820 ;重新释放ds1820总线
; SETB EA
SETB EA
; RET
RET
; READ:
READ:
; CLR EA
CLR EA
; MOV R6,#8 ;连续读8个bit
MOV R6,#8 ;连续读8个bit
; RE1:CLR ds1820 ;读前总线保持为低
RE1:CLR ds1820 ;读前总线保持为低
; MOV R4,#4
MOV R4,#4
; NOP
NOP
; SETB ds1820 ;开始读,总线释放
SETB ds1820 ;开始读,总线释放
; RE2:DJNZ R4,RE2 ;持续8us
RE2:DJNZ R4,RE2 ;持续8us
; MOV C,ds1820 ;从ds1820总线读得一个bit
MOV C,ds1820 ;从ds1820总线读得一个bit
; RRC A ;把读得的位值环移给 A
RRC A ;把读得的位值环移给 A
; MOV R5,#30
MOV R5,#30
; RE3:DJNZ R5,RE3 ;持续60us
RE3:DJNZ R5,RE3 ;持续60us
; DJNZ R6,RE1 ;读下一个bit
DJNZ R6,RE1 ;读下一个bit
; SETB ds1820 ;重新释放ds1820总线
SETB ds1820 ;重新释放ds1820总线
; SETB EA
SETB EA
; RET
RET
; #pragma endasm
;
; return z;
; SOURCE LINE # 184
MOV R6,z?245
MOV R7,z?245+01H
; }
; SOURCE LINE # 185
?C0011:
RET
; END OF cjtemp
; //--------------------------------
; uint wdcl(void)
RSEG ?PR?wdcl?WSD1
wdcl:
USING 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -