📄 ds1820ds.lst
字号:
C51 COMPILER V7.09 DS1820DS 05/01/2005 18:17:00 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE DS1820DS
OBJECT MODULE PLACED IN DS1820ds.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS1820ds.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3
4
5
6 //**********************************************************************//
7 // 头文件区 //
8 //**********************************************************************//
9
10 #include <reg52.h> /*单片机内部寄存器*/
11
12 #include <intrins.h> /*内部函数调用,如_nop_() 、_crol_()、cror();*/
13
14 #include <absacc.h> /*绝对地址访问,如XBYTE[0x0fff0]*/
15
16
17 //**********************************************************************//
18 // 全局变量定义区 //
19 //**********************************************************************//
20
21 #define Com7218 XBYTE [0x0300] //外部地址必须大于FF,否则不能正常读写
22
23 #define IN0 XBYTE[0x8FFa] //定义ADC0809的通道0地址//ADC0809地址定义
24
25 sbit ICM7218Mode = P1^4; //7218模式选择,状态为0是即选择送数据,
26
27 sbit TSOR = P2^3;
28
29 static unsigned char MSB=0,LSB=0;//温度值的整数部分,小数部分
30 static unsigned char count_remain=0,count_pre_c=0;
31 //**********************************************************************//
32 // 7218字型码表 0~9,A~F //
33 //**********************************************************************//
34 unsigned char code table[]={0xFB,0xB0,0xED,0xF5,0xB6, /* 0,1,2,3,4 */
35 0xD7,0xDF,0xF0,0xFF,0xF7, /* 5,6,7,8,9 */
36 0xFE,0x9F,0xCB,0xBD,0xCF, /* A,b,C,d,E */
37 0xCE,0x00,0x80,0xEE,0xF6, /* F,.(16),blank(17),P(18),q(19)*/
38 0xBE,0x84,0xBB,0xFA /* H(20), -(21),U(22),n(23) */
39 }; /*字型码表 */
40
41 unsigned char code top_table[]={0x7b,0x30,0x6D,0x75,0x36,0x57,0x5F,0x70,0x7F,0x77};
42 // 0.,1.,2.,3.,4., 5.,6.,7.,8.,9. 小数点显示
43
44 unsigned char buffer[8]={0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80};
45 //码表缓冲区
46
47 //**********************************************************************//
48 // 延时子程序 //
49 //**********************************************************************//
50 void delay(unsigned int d) //延时d微秒
51 {
52 1 while(d--);
53 1 }
54
55 void delay100ms(void)
C51 COMPILER V7.09 DS1820DS 05/01/2005 18:17:00 PAGE 2
56 {
57 1 unsigned char i,j,k;
58 1 for(i=0;i<8;i++)
59 1 for(j=0;j<25;j++)
60 1 for(k=0;k<250;k++);
61 1 }
62
63 void delay15us(void)
64 {
65 1 unsigned char i;
66 1 for(i=0;i<8;i++);
67 1 }
68
69 void delay60us(void)
70 {
71 1 unsigned char i;
72 1 for(i=0;i<30;i++);
73 1 }
74
75
76 void showdate(unsigned int t)
77 {
78 1 unsigned char mil,tho,hun,ten,one,i;
79 1 unsigned int count;
80 1 count=t;
81 1
82 1 mil=t/10000;
83 1 tho=t/1000%10;
84 1 hun=t/100%10;
85 1 ten=t/10%10;
86 1 one=t%10;
87 1
88 1 if(mil==0)
89 1 {
90 2 buffer[4] = 0x80;
91 2 }
92 1 else
93 1 {
94 2 buffer[4] = table[mil];
95 2 }
96 1
97 1 if(mil==0&&tho==0)
98 1 {
99 2 buffer[3] = 0x80;
100 2 }
101 1 else
102 1 {
103 2 if((count>=100)&&(count<=999))
104 2 buffer[3] = top_table[tho];
105 2 else buffer[3] = table[tho];
106 2 }
107 1
108 1 if(mil==0&&tho==0&&hun==0)
109 1 {
110 2 buffer[2] = 0x80;
111 2 }
112 1 else
113 1 {
114 2 if((count>=10)&&(count<=99))
115 2 buffer[2] = top_table[hun];
116 2 else buffer[2] = table[hun];
117 2 }
C51 COMPILER V7.09 DS1820DS 05/01/2005 18:17:00 PAGE 3
118 1
119 1
120 1 if(mil==0&&tho==0&&hun==0&&ten==0)
121 1 {
122 2 buffer[1] = 0x80;
123 2 }
124 1 else
125 1 {
126 2 buffer[1] = table[ten];
127 2 }
128 1
129 1 buffer[0] = table[one];
130 1
131 1 ICM7218Mode = 1 ; //ICM7218B的方式字
132 1 Com7218 = 0xF0 ; //非译码方式
133 1
134 1 delay(10);
135 1
136 1 //连续向显示芯片送显示数据
137 1 //=======================
138 1 ICM7218Mode=0;
139 1 for(i=0;i<8;i++)
140 1 {
141 2 Com7218 = buffer[ i ] ;
142 2 }
143 1 }
144
145
146 void write_0_DS(void)//写 bit 0
147 {//写数据位0:置总线为低电平并保持至少15us,
148 1 //然后保持低电平15us~45us等待从端对电平采样,最后拉高电平完成写操作
149 1 TSOR=1;
150 1 TSOR=0;
151 1 delay15us();
152 1 delay15us();
153 1 delay15us();
154 1 delay15us();
155 1 delay15us();
156 1
157 1 TSOR=1;
158 1
159 1 _nop_();
160 1 _nop_();
161 1 }
162
163 void write_1_DS(void)//写 bit 1
164 {//写数据位1:置总线为低电平并保持1us~15us,
165 1 //然后拉高电平并保持15us~45us等待从端对电平采样,最后完成写操作
166 1 TSOR=1;
167 1 TSOR=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -