📄 1-wire.lst
字号:
C51 COMPILER V7.06 1_WIRE 03/29/2005 17:56:16 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 1_WIRE
OBJECT MODULE PLACED IN 1-wire.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE 1-wire.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //-----------------------函数声明,变量定义--------------------------------------------------------
2 #include <reg51.h>
3 sbit DQ=P1^0; // 将p1.0口模拟时钟输出
4
5 //--------------------------------------------------------------------------------------------------
6 // 函数名称: delay
7 // 入口参数: N
8 // 函数功能:延时子程序,实现(16*N+24)us的延时
9 // 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
10 //--------------------------------------------------------------------------------------------------
11 void delay(unsigned int N)
12 {
13 1 int i;
14 1 for(i=0;i<N;i++);
15 1 }
16 //--------------------------------------------------------------------------------------------------
17 // 函数名称: Reset
18 // 入口参数: 无
19 // 返回deceive_ready
20 // 函数功能:复位
21 //--------------------------------------------------------------------------------------------------
22 unsigned char Reset(void)
23 {
24 1 unsigned char deceive_ready;
25 1 DQ=0; //拉低DQ线
26 1 delay(29); //延时至少480us~960us
27 1 DQ=1; //将DQ线设置位逻辑高
28 1 delay(3); //延时等待deceive_ready响应
29 1 deceive_ready=DQ; //采样deceive_ready信号
30 1 delay(25); //等待时序结束
31 1 return(deceive_ready); //有deceive_ready信号时返回0,否则返回1
32 1 }
33 //--------------------------------------------------------------------------------------------------
34 // 函数名称:read_bit
35 // 入口参数: 无
36 // 返回接收的数据
37 // 函数功能:读一个bit子程序
38 //--------------------------------------------------------------------------------------------------
39 unsigned char read_bit(void)
40 {
41 1 unsigned char i;
42 1 DQ=0; //拉低DQ线开始时序
43 1 DQ=1; //升高DQ线 //延时至时序开始15us
44 1 for(i=0;i<3;i++); //延时15us
45 1 return(DQ); //返回DQ值
46 1 }
47 //--------------------------------------------------------------------------------------------------
48 // 函数名称: write_bit
49 // 入口参数: bitval
50 // 函数功能:写一个bit子程序
51 //--------------------------------------------------------------------------------------------------
52 void write_bit(unsigned char bitval)
53 {
54 1 DQ=0; //拉低DQ线开始时序
55 1 if(bitval==1)
C51 COMPILER V7.06 1_WIRE 03/29/2005 17:56:16 PAGE 2
56 1 DQ=1; //如果写逻辑为高
57 1 delay(5); //延时
58 1 DQ=1; //升高DQ线
59 1 }
60 //--------------------------------------------------------------------------------------------------
61 // 函数名称: write_byte
62 // 入口参数: val
63 // 函数功能:写一个byte子程序
64 //--------------------------------------------------------------------------------------------------
65 void write_byte(unsigned char val)
66 {
67 1 unsigned char i,temp;
68 1 for(i=0;i<8;i++)
69 1 {
70 2 temp=val>>i; //将val位右移i位赋值给比temp
71 2 temp=temp&0x01; //取temp最低位
72 2 write_bit(temp);
73 2 delay(5); //延时至时序结束
74 2 }
75 1 }
76 //--------------------------------------------------------------------------------------------------
77 // 函数名称: read_byte
78 // 返回接收的数据 value
79 // 函数功能:读一个byte子程序
80 //--------------------------------------------------------------------------------------------------
81 unsigned char read_byte(void)
82 {unsigned char i,m,receive_data;
83 1 m=1;receive_data=0; //初始化
84 1 for(i=0;i<8;i++)
85 1 {
86 2 if(read_bit())
87 2 {
88 3 receive_data=receive_data+(m<<i);
89 3 } //每读一位数据据,左移一位
90 2 delay(6); //延时至时序结束
91 2 }
92 1 return(receive_data); //返回value
93 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 152 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -