?? ds18b20.lst
字號:
C51 COMPILER V7.06 DS18B20 05/04/2005 22:51:36 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DS18B20
OBJECT MODULE PLACED IN DS18B20.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil20\C51\BIN\C51.EXE DS18B20.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //-----------------------函數聲明,變量定義--------------------------------------------------------
2 #include <reg51.h>
3 sbit DQ=P1^0; // 將p1.0口模擬時鐘輸出
4 #define jump_ROM 0xCC //跳過ROM命令
5 #define start 0x44 //啟動轉換命令
6 #define read_EEROM 0xBE //讀存儲器命令
7 unsigned char TMPH,TMPL; //溫度值
8 //--------------------------------------------------------------------------------------------------
9 // 函數名稱: delay
10 // 入口參數: N
11 // 函數功能:延時子程序,實現(16*N+24)us的延時
12 // 系統采用11.0592MHz的時鐘時,延時滿足要求,其它情況需要改動
13 //--------------------------------------------------------------------------------------------------
14 void delay(unsigned int N)
15 {
16 1 int i;
17 1 for(i=0;i<N;i++);
18 1 }
19 //--------------------------------------------------------------------------------------------------
20 // 函數名稱: Reset
21 // 入口參數: 無
22 // 返回deceive_ready
23 // 函數功能:復位
24 //--------------------------------------------------------------------------------------------------
25 unsigned char Reset(void)
26 {
27 1 unsigned char deceive_ready;
28 1 DQ=0; //拉低DQ線
29 1 delay(29); //延時至少480us~960us
30 1 DQ=1; //將DQ線設置位邏輯高
31 1 delay(3); //延時等待deceive_ready響應
32 1 deceive_ready=DQ; //采樣deceive_ready信號
33 1 delay(25); //等待時序結束
34 1 return(deceive_ready); //有deceive_ready信號時返回0,否則返回1
35 1 }
36 //--------------------------------------------------------------------------------------------------
37 // 函數名稱:read_bit
38 // 入口參數: 無
39 // 返回接收的數據
40 // 函數功能:讀一個bit子程序
41 //--------------------------------------------------------------------------------------------------
42 unsigned char read_bit(void)
43 {
44 1 unsigned char i;
45 1 DQ=0; //拉低DQ線開始時序
46 1 DQ=1; //升高DQ線
47 1 for(i=0;i<3;i++); //延時至時序開始15us
48 1 return(DQ); //返回DQ值
49 1 }
50 //--------------------------------------------------------------------------------------------------
51 // 函數名稱: write_bit
52 // 入口參數: bitval
53 // 函數功能:寫一個bit子程序
54 //--------------------------------------------------------------------------------------------------
55 void write_bit(unsigned char bitval)
C51 COMPILER V7.06 DS18B20 05/04/2005 22:51:36 PAGE 2
56 {
57 1 DQ=0; //拉低DQ線開始時序
58 1 if(bitval==1)
59 1 DQ=1; //如果寫邏輯為高
60 1 delay(5); //延時
61 1 DQ=1; //升高DQ線
62 1 }
63 //--------------------------------------------------------------------------------------------------
64 // 函數名稱: write_byte
65 // 入口參數: val
66 // 函數功能:寫一個byte子程序
67 //--------------------------------------------------------------------------------------------------
68 void write_byte(unsigned char val)
69 {
70 1 unsigned char i,temp;
71 1 for(i=0;i<8;i++)
72 1 {
73 2 temp=val>>i; //將val位右移i位賦值給比temp
74 2 temp=temp&0x01; //取temp最低位
75 2 write_bit(temp);
76 2 delay(5); //延時至時序結束
77 2 }
78 1 }
79 //--------------------------------------------------------------------------------------------------
80 // 函數名稱: read_byte
81 // 返回接收的數據 value
82 // 函數功能:讀一個byte子程序
83 //--------------------------------------------------------------------------------------------------
84 unsigned char read_byte(void)
85 {unsigned char i,m,receive_data;
86 1 m=1;receive_data=0; //初始化
87 1 for(i=0;i<8;i++)
88 1 {
89 2 if(read_bit())
90 2 {
91 3 receive_data=receive_data+(m<<i);
92 3 } //每讀一位數據據,左移一位
93 2 delay(6); //延時至時序結束
94 2 }
95 1 return(receive_data); //返回value
96 1 }
97 //--------------------------------------------------------------------------------------------------
98 // 函數名稱: main
99 // 函數功能: 主函數
100 //--------------------------------------------------------------------------------------------------
101 void main()
102 {
103 1 Reset();
104 1 write_byte(jump_ROM); //發跳過ROM命令
105 1 write_byte(start); //發啟動轉換命令
106 1 Reset();
107 1 write_byte(jump_ROM); //發跳過ROM命令
108 1 write_byte(read_EEROM); //發跳過ROM命令
109 1 TMPL=read_byte(); //讀低8位溫度值
110 1 TMPH=read_byte(); //讀高8位溫度值
111 1 }
112
113
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 189 ----
C51 COMPILER V7.06 DS18B20 05/04/2005 22:51:36 PAGE 3
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -