📄 ds1302.lst
字号:
C51 COMPILER V8.08 DS1302 08/29/2008 18:01:54 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN DS1302.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE DS1302.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h> //头文件
2 #include <stdio.h>
3
4 #define uchar unsigned char //宏定义
5
6 sbit SCLK = P1^3; //声明接口引脚
7 sbit I_O = P1^4;
8 sbit RSTB = P1^5;
9
10 void ResetDS1302(); //复位子函数
11 uchar ReadByteDS1302(); //字节读取子函数
12 void WriteByteDS1302(uchar W_Byte) ; //字节写入子函数
13 void SetYear() ; //年设置子函数
14 void SetMonth(); //月设置子函数
15 void SetDate(); //日设置子函数
16 void SetDay(); //星期设置子函数
17 void SetHour(); //小时设置子函数
18 void SetMinute (); //分钟设置子函数
19 void SetSecond (); //秒设置子函数
20 void DisableWrite (); //写保护子函数
21 void EnableWrite (); //写允许子函数
22 void Charge (); //充电控制子函数
23 void InitDS1302(); //初始化子函数
24 void WriteRamByte(); //RAM字节写入子函数
25 void Display(uchar loop); //时钟显示子函数
26 void BurstReadRAM(); //多字节突发方式读取RAM子函数
27 void BurstWriteRAM(); //多字节突发方式写入RAM子函数
28
29 void main (void) //主函数
30 {
31 1 uchar Key, Key1,Key2;
32 1 SCON = 0x50; //设置串行口: 方式 1, 8位UART, 允许接收
33 1 TMOD |= 0x20; //设置定时器T1, 方式 2, 8位自动重装
34 1 PCON =0x80; //设置SMOD=1
35 1 TL1 =0xF4; //波特率4800bit/s,初值
36 1 TH1 =0xF4;
37 1
38 1 TR1 = 1; //开启定时器1
39 1 TI = 1;
40 1
41 1 printf("***********AT89S52 CONTROL DS1302***********\n\n");
42 1 printf("Initialize the DS1302.\n");
43 1 InitDS1302(); //初始化DS1302
44 1 while (1)
45 1 {
46 2 printf("\nEnter DS1302 Menu Selection:\n");
47 2 printf("d or D: Display Clock Routine\n");
48 2 printf("s or S: Set DS1302\n");
49 2 printf("i or I: Run the Initialize Routine\n");
50 2 printf("r or R: Run the RAM Routine\n");
51 2 printf("e or E: Exit\n");
52 2
53 2 Key = _getkey(); //获取输入字符
54 2 switch(Key)
55 2 {
C51 COMPILER V8.08 DS1302 08/29/2008 18:01:54 PAGE 2
56 3 case 'd': //执行时钟操作
57 3 case 'D':
58 3 printf("\rRun the Display Clock Routine\n");
59 3 Display(1);
60 3 break;
61 3
62 3 case 's': //初始化DS1302
63 3 case 'S':
64 3 printf("\rRun Set DS1302\n");
65 3 printf("\nEnter DS1302 Time Set Menu Selection:");
66 3 printf("y or Y: Set year\n");
67 3 printf("M : Set Month\n");
68 3 printf("D:Set date\n");
69 3 printf("d: Set day\n");
70 3 printf("h or H: Set hour\n");
71 3 printf("m: Set minute\n");
72 3 printf("s or S: Set second\n");
73 3
74 3 Key1 = _getkey(); //获取输入字符
75 3 switch(Key1)
76 3 {
77 4 case 'y': //设置年
78 4 case 'Y':
79 4 SetYear();
80 4 break;
81 4 case 'M': //设置月
82 4 SetMonth();
83 4 break;
84 4 case 'D': //设置星期
85 4 SetDate();
86 4 break;
87 4 case 'd': //设置日
88 4 SetDay();
89 4 break;
90 4 case 'h': //设置小时
91 4 case 'H':
92 4 SetHour();
93 4 break;
94 4 case 'm': //设置分钟示
95 4 SetMinute();
96 4 break;
97 4 case 's': //设置秒
98 4 case 'S':
99 4 SetSecond();
100 4 break;
101 4 default:
102 4 printf("Please Input the Right Option");
103 4 }
104 3 break;
105 3
106 3 case 'i': //初始化DS1302
107 3 case 'I':
108 3 printf("Run the Initialize Routine\n");
109 3 InitDS1302();
110 3 break;
111 3
112 3 case 'r': //RAM操作
113 3 case 'R':
114 3 printf("\rRun the RAM Routine\n");
115 3 printf("\nEnter DS1302 RAM Menu Selection:");
116 3 printf("b or B: Write RAM Byte\n");
117 3 printf("r or R: Burst Read RAM\n");
C51 COMPILER V8.08 DS1302 08/29/2008 18:01:54 PAGE 3
118 3 printf("w or W: Burst Write RAM \n");
119 3
120 3 Key2 = _getkey(); //获取输入字符
121 3 switch(Key2)
122 3 {
123 4 case 'b': //RAM字节写入
124 4 case 'B':
125 4 WriteRamByte();
126 4 break;
127 4 case 'r': //多字节突发方式读取RAM
128 4 case 'R':
129 4 BurstReadRAM();
130 4 break;
131 4 case 'w': //多字节突发方式写入RAM
132 4 case 'W':
133 4 BurstWriteRAM();
134 4 break;
135 4 default:
136 4 printf("Please Input the Right Option");
137 4 }
138 3 break;
139 3
140 3 case 'e':
141 3 case 'E':
142 3 goto exit;
143 3 break;
144 3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -