📄 1602and1302.lst
字号:
C51 COMPILER V6.12 1602AND1302 12/13/2008 23:06:41 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE 1602AND1302
OBJECT MODULE PLACED IN H:\MYPROJ~1\1302AN~1\1602AND1302.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE H:\MYPROJ~1\1302AN~1\1602AND1302.C DB SB OE
stmt level source
*** WARNING C500 IN LINE 1 OF H:\MYPROJ~1\1302AN~1\1602AND1302.C: MISSING DEVICE (SECURITY KEY NOT FOUND)
1 #include <reg52.h>
2 #include <string.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 sbit lcdrs=P3^2;
6 sbit lcdrw=P3^3;
7 sbit lcden=P3^4;
8
9 sbit ds1302_clk=P1^0;
10 sbit ds1302_dat=P1^1;
11 sbit ds1302_rst=P1^2;
12 sbit ACC_0 = ACC^0;
13 sbit ACC_1 = ACC^1;
14 sbit ACC_2 = ACC^2;
15 sbit ACC_3 = ACC^3;
16 sbit ACC_4 = ACC^4;
17 sbit ACC_5 = ACC^5;
18 sbit ACC_6 = ACC^6;
19 sbit ACC_7 = ACC^7;
20
21 uchar Read(void); //写DS1302操作
22 void Write(void); //读DS1302操作
23 uchar ReadRam_Byte(uchar address); //从Ram中读出一个字节
24 uchar ReadRTC_Byte(uchar address); //从DS1302中读出一个字节
25 uchar WriteRam_Byte(uchar address,uchar number); //向Ram中写入一个字节
26 uchar WriteRTC_Byte(uchar address,uchar number); //向DS1302中写入一个字节
27
28 uchar ReadSec(void); //从DS1302中读出秒字节
29 uchar ReadMin(void); //从DS1302中读出分字节
30 uchar ReadHr(void); //从DS1302中读出时字节
31 uchar ReadDay(void); //从DS1302中读出日字节
32 uchar ReadMonth(void); //从DS1302中读出月字节
33 uchar ReadWeek(void); //从DS1302中读出星期字节
34 uchar ReadYear(void); //从DS1302中读出年字节
35 void WriteSec(uchar number); //向DS1302中写入秒字节
36 void WriteMin(uchar number); //向DS1302中写入分字节
37 void WriteHr(uchar number); //向DS1302中写入时字节
38 void WriteDay(uchar number); //向DS1302中写入日字节
39 void WriteMonth(uchar number); //向DS1302中写入月字节
40 void WriteWeek(uchar number); //向DS1302中写入星期字节
41 void WriteYear(uchar number); //向DS1302中写入年字节*/
42 void WriteControl(uchar number); //向慢速充电控制寄存器写入控制字节
43 void EnableWP(void); //禁止写保护
44 void DisableWP(void); //允许写保护
45 void key(void); //键盘程序
46 void key_delay(void); //延时程序
47 void dis_mon_day(void); //显示日 月程序
48 void dis_hr_min(void); //显示时,分程序
49
50 //函数名:Write
51 //入口参数:
52 //返回值:
53 //函数功能:写DS1302操作
54 //******************************************************
C51 COMPILER V6.12 1602AND1302 12/13/2008 23:06:41 PAGE 2
55 void Write(void) //写DS1302操作
56 {
57 1 ds1302_dat = ACC_0; //写DS1302
58 1 ds1302_clk = 1; //时钟上升沿,发送数据有效
59 1 ds1302_clk = 0; //清零时钟总线
60 1 ds1302_dat = ACC_1;
61 1 ds1302_clk = 1; ds1302_clk = 0;
62 1 ds1302_dat = ACC_2;
63 1 ds1302_clk = 1; ds1302_clk = 0;
64 1 ds1302_dat = ACC_3;
65 1 ds1302_clk = 1; ds1302_clk = 0;
66 1 ds1302_dat = ACC_4;
67 1 ds1302_clk = 1; ds1302_clk = 0;
68 1 ds1302_dat = ACC_5;
69 1 ds1302_clk = 1; ds1302_clk = 0;
70 1 ds1302_dat = ACC_6;
71 1 ds1302_clk = 1; ds1302_clk = 0;
72 1 ds1302_dat = ACC_7;
73 1 ds1302_clk = 1; ds1302_clk = 0;
74 1 }
75
76 //函数名:Read
77 //入口参数:
78 //返回:ACC
79 //函数功能:读DS1302操
80 //******************************************************
81 uchar Read(void) //读DS1302操作
82 {
83 1 ACC_0 = ds1302_dat; //读取DS1302数据
84 1 ds1302_clk = 1; //时钟下降沿,发送数据有效
85 1 ds1302_clk = 0; //清零时钟总线
86 1 ACC_1 = ds1302_dat;
87 1 ds1302_clk = 1; ds1302_clk = 0;
88 1 ACC_2 = ds1302_dat;
89 1 ds1302_clk = 1; ds1302_clk = 0;
90 1 ACC_3 = ds1302_dat;
91 1 ds1302_clk = 1; ds1302_clk = 0;
92 1 ACC_4 = ds1302_dat;
93 1 ds1302_clk = 1;ds1302_clk = 0;
94 1 ACC_5 = ds1302_dat;
95 1 ds1302_clk = 1; ds1302_clk = 0;
96 1 ACC_6 = ds1302_dat;
97 1 ds1302_clk = 1; ds1302_clk = 0;
98 1 ACC_7 = ds1302_dat;
99 1 ds1302_rst = 0; ds1302_clk = 1;
100 1
101 1 return ACC;
102 1 }
103
104 //函数名:ReadRam_Byte
105 //入口参数:address
106 //返回:ACC
107 //函数功能:从RAM中读出一字节
108 //******************************************************
109 uchar ReadRam_Byte(uchar address) //从RAM中读出一个字节
110 {
111 1 ds1302_rst = 0; //复位引脚为低电平,所有数据传送中止
112 1 ds1302_clk = 0; //清零时钟总线
113 1 ds1302_rst = 1; //复位引脚为高电平,逻辑控制有效
114 1 ACC = address;
115 1 Write(); //写DS1302操作
116 1 ds1302_dat = 1;
C51 COMPILER V6.12 1602AND1302 12/13/2008 23:06:41 PAGE 3
117 1 Read(); //读DS1302操作
118 1 ds1302_rst = 0;
119 1 return ACC;
120 1 }
121
122 //函数名:ReadRTC_Byte
123 //入口参数:address
124 //返回:ACC
125 //函数功能:从时钟寄存器中读一字节
126 //******************************************************
127 uchar ReadRTC_Byte(uchar address) //从DS1302中读出一个字节
128 {
129 1 ds1302_rst = 0; //复位引脚为低电平,所有数据传送中止
130 1 ds1302_clk = 0; //清零时钟总线
131 1 ds1302_rst = 1; //复位引脚为高电平,逻辑控制有效
132 1 ACC = address;
133 1 Write(); //对DS1302写命令字和地址
134 1 ds1302_dat = 1;
135 1 Read(); //读DS1302操作
136 1 return ACC; //返回读取的数据
137 1 }
138
139 //函数名:WriteRam_Byte
140 //入口参数:address,number
141 //返回:ACC
142 //函数功能:向RAM中写入一个字节
143 //******************************************************
144 uchar WriteRam_Byte(uchar address,uchar number) //向RAM中写入一个字节
145 {
146 1 ds1302_rst = 0;ds1302_clk = 0; ds1302_rst = 1;
147 1 ACC = address;
148 1 Write(); //对DS1302写命令字和地址
149 1 ACC = number;
150 1 Write(); //对DS1302写命令字和数据
151 1 ds1302_rst = 0;
152 1 ds1302_clk = 1;
153 1 return ACC;
154 1 }
155
156 //函数名:WriteRTC_Byte
157 //入口参数:address,number
158 //返回:ACC
159 //函数功能:向DS1302中写入一个字节
160 //******************************************************
161 uchar WriteRTC_Byte(uchar address,uchar number) //向DS1302中写入一个字节
162 {
163 1 ds1302_clk = 0;
164 1 ds1302_rst = 0;ds1302_rst = 1;
165 1 ACC = address;
166 1 ACC |= 0x80;
167 1 Write(); //对DS1302写命令字和地址
168 1 ACC = number;
169 1 Write(); //对DS1302写命令字和数据
170 1 ds1302_rst = 0; ds1302_clk = 1;
171 1 return ACC;
172 1 }
173 //函数名:ReadSec
174 //入口参数:
175 //返回:ReadRTC_Byte(0x81);
176 //函数功能:从DS1302中读出秒字节
177 //******************************************************
178
C51 COMPILER V6.12 1602AND1302 12/13/2008 23:06:41 PAGE 4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -