51_LanQiaoBei/模板/zuolan_v1标志位/prj/Listings/onewire.lst

105 lines
3.4 KiB
Plaintext
Raw Normal View History

2025-04-13 01:02:19 +08:00
C51 COMPILER V9.60.7.0 ONEWIRE 03/10/2025 18:03:54 PAGE 1
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE ONEWIRE
OBJECT MODULE PLACED IN .\Objects\onewire.obj
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\driver\onewire.c OPTIMIZE(8,SPEED) BROWSE INCDIR(..\driver;..\user) D
-EBUG OBJECTEXTEND PRINT(.\Listings\onewire.lst) TABS(2) OBJECT(.\Objects\onewire.obj)
line level source
1 /* # 单总线代码片段说明
2 1. 本文件夹中提供的驱动代码供参赛选手完成程序设计参考。
3 2.
4 参赛选手可以自行编写相关代码或以该代码为基础根据所选单片机类型、运<E38081>
-<2D><>速度和试题
5 中对单片机时钟频率的要求,进行代码调试和修改。
6 */
7 #include "onewire.h"
8 sbit DQ = P1 ^ 4;
9 //
10 void Delay_OneWire(unsigned int t) {
11 1 unsigned char i;
12 1 while (t--) {
13 2 for (i = 0; i < 12; i++);
14 2 }
15 1 }
16
17 //
18 void Write_DS18B20(unsigned char dat) {
19 1 unsigned char i;
20 1 for (i = 0; i < 8; i++) {
21 2 DQ = 0;
22 2 DQ = dat & 0x01;
23 2 Delay_OneWire(5);
24 2 DQ = 1;
25 2 dat >>= 1;
26 2 }
27 1 Delay_OneWire(5);
28 1 }
29
30 //
31 unsigned char Read_DS18B20(void) {
32 1 unsigned char i;
33 1 unsigned char dat;
34 1
35 1 for (i = 0; i < 8; i++) {
36 2 DQ = 0;
37 2 dat >>= 1;
38 2 DQ = 1;
39 2 if (DQ) {
40 3 dat |= 0x80;
41 3 }
42 2 Delay_OneWire(5);
43 2 }
44 1 return dat;
45 1 }
46
47 //
48 bit init_ds18b20(void) {
49 1 bit initflag = 0;
50 1
51 1 DQ = 1;
52 1 Delay_OneWire(12);
53 1 DQ = 0;
C51 COMPILER V9.60.7.0 ONEWIRE 03/10/2025 18:03:54 PAGE 2
54 1 Delay_OneWire(80);
55 1 DQ = 1;
56 1 Delay_OneWire(10);
57 1 initflag = DQ;
58 1 Delay_OneWire(5);
59 1
60 1 return initflag;
61 1 }
62
63 float rd_temperature() {
64 1 unsigned char low, high;
65 1 init_ds18b20();
66 1 Write_DS18B20(0xcc);
67 1 Write_DS18B20(0x44);
68 1
69 1 Delay_OneWire(200);
70 1
71 1 init_ds18b20();
72 1 Write_DS18B20(0xcc);
73 1 Write_DS18B20(0xbe);
74 1 low = Read_DS18B20();
75 1 high = Read_DS18B20();
76 1 return (float)(high << 8 | low) * 0.0625;
77 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 180 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)