📄 ds.lst
字号:
C51 COMPILER V7.20 DS 09/18/2008 18:08:22 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE DS
OBJECT MODULE PLACED IN ds.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ds.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "include.h"
2 /********************************************************************
3 *
4 * 名称: v_RTInputByte
5 * 说明:
6 * 功能: 往DS1302写入1Byte数据
7 * 调用:
8 * 输入: ucDa 写入的数据
9 * 返回值: 无
10 ***********************************************************************/
11 void v_RTInputByte(uchar ucDa)
12 {
13 1 uchar i;
14 1 // ACC = ucDa;
15 1 for(i=8; i>0; i--)
16 1 {
17 2 T_IO = ucDa%2; /*相当于汇编中的 RRC */
18 2 T_CLK = 1;
19 2 T_CLK = 0;
20 2 ucDa = ucDa >> 1;
21 2 }
22 1 }
23 /********************************************************************
24 *
25 * 名称: uchar uc_RTOutputByte
26 * 说明:
27 * 功能: 从DS1302读取1Byte数据
28 * 调用:
29 * 输入:
30 * 返回值: ACC
31 ***********************************************************************/
32 uchar uc_RTOutputByte(void)
33 {
34 1 uchar i,dat=0;
35 1 for(i=0; i<8; i++)
36 1 {
37 2 if(T_IO)
38 2 dat+=qm(i);
39 2 T_CLK = 1;
40 2 T_CLK = 0;
41 2 }
42 1 return(dat);
43 1 }
44
45
46
47
48 /********************************************************************
49 *
50 * 名称: v_W1302
51 * 说明: 先写地址,后写命令/数据
52 * 功能: 往DS1302写入数据
53 * 调用: v_RTInputByte()
54 * 输入: ucAddr: DS1302地址, ucDa: 要写的数据
55 * 返回值: 无
C51 COMPILER V7.20 DS 09/18/2008 18:08:22 PAGE 2
56 ***********************************************************************/
57 void v_W1302(uchar ucAddr, uchar ucDa)
58 {
59 1 T_RST = 0;
60 1 T_CLK = 0;
61 1 T_RST = 1;
62 1 v_RTInputByte(ucAddr); /* 地址,命令 */
63 1 v_RTInputByte(ucDa); /* 写1Byte数据*/
64 1 T_CLK = 1;
65 1 T_RST =0;
66 1 }
67 /********************************************************************
68 *
69 * 名称: uc_R1302
70 * 说明: 先写地址,后读命令/数据
71 * 功能: 读取DS1302某地址的数据
72 * 调用: v_RTInputByte() , uc_RTOutputByte()
73 * 输入: ucAddr: DS1302地址
74 * 返回值: ucDa :读取的数据
75 ***********************************************************************/
76 uchar uc_R1302(uchar ucAddr)
77 {
78 1 uchar ucDa;
79 1 T_RST = 0;
80 1 T_CLK = 0;
81 1 T_RST = 1;
82 1 v_RTInputByte(ucAddr); /* 地址,命令 */
83 1 ucDa = uc_RTOutputByte(); /* 读1Byte数据 */
84 1 T_CLK = 1;
85 1 T_RST =0;
86 1 return(ucDa);
87 1 }
88
89
90
91 void show_time()
92 {
93 1 uchar key;
94 1 uchar fen;
95 1 float wendu;
96 1 // v_W1302(0x8e,0x00);
97 1 // v_W1302(0x80,0x00);
98 1 // v_W1302(0x8e,0x80);
99 1
100 1 lcd_display_timeface();
101 1 for(;;)
102 1 {
103 2 lcd_display_time(24,0,uc_R1302(0x8d));
104 2 lcd_display_time(56,0,uc_R1302(0x89));
105 2 lcd_display_time(88,0,uc_R1302(0x87));
106 2 lcd_display_time(16,2,uc_R1302(0x85));
107 2 lcd_display_time(48,2,fen=uc_R1302(0x83));
108 2 lcd_display_time(80,2,uc_R1302(0x81));
109 2 b1820_init();
110 2 b1820_wr(0xcc);
111 2 b1820_wr(0x44);
112 2 b1820_init();
113 2 b1820_wr(0xcc);
114 2 b1820_wr(0xbe);
115 2 wendu=((float)b1820_re())*0.0625;
116 2 lcd_display_uint(80,6,(uint)wendu);
117 2 key=scan_key();
C51 COMPILER V7.20 DS 09/18/2008 18:08:22 PAGE 3
118 2 if(key==0x0c)
119 2 {
120 3 lcd_clr();
121 3 return;
122 3 }
123 2 }
124 1 }
125
126 void b1820_init()
127 {
128 1 uint di=0;
129 1 DQ=0;
130 1 delay_us(600);
131 1 DQ=1;
132 1 // while(DQ&di<0xff)di++;
133 1 while(DQ);
134 1 delay_us(300);
135 1 }
136
137 void b1820_wr(uchar dat)
138 {
139 1 uchar i;
140 1 // uchar di;
141 1 for(i=0;i<8;i++)
142 1 {
143 2 DQ=0;
144 2 delay_us(1);
145 2 DQ=dat&0x01;
146 2 delay_us(50);
147 2 DQ=1;
148 2 dat=dat>>1;
149 2 }
150 1 }
151
152 uint b1820_re()
153 {
154 1 uchar i;
155 1 uint j=0;
156 1 for(i=0;i<12;i++)
157 1 {
158 2 DQ=0;
159 2 delay_us(1);
160 2 DQ=1;
161 2 delay_us(1);
162 2 if(DQ)
163 2 j=j+qm(i);
164 2 DQ=1;
165 2 delay_us(30);
166 2 }
167 1 return j;
168 1 }
169
170
*** WARNING C316 IN LINE 170 OF ds.c: unterminated conditionals
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 444 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 14
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
C51 COMPILER V7.20 DS 09/18/2008 18:08:22 PAGE 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -