📄 ds1302.lst
字号:
C51 COMPILER V7.06 DS1302 07/29/2000 11:48:31 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN DS1302.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS1302.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /************************************/
2 /*ds1302+ds18b20温度时钟 */
3 /*目标器件:AT89S51 */
4 /*晶振:11.0592MHZ */
5 /*编译环境:Keil 7.50A */
6 /*串口修改时间的格式为:以a开头加年 */
7 /*加月加日加星期加时加分加秒加b结束 */
8 /*如a0807281163812b. */
9 /************************************/
10
11 /*********************************包含头文件********************************/
12 #include <at89x52.h>
13 #include <intrins.h>
14
15 /*********************************端口定义**********************************/
16 sbit DS1302_CLK = P1^0;
17 sbit DS1302_IO = P1^1;
18 sbit DS1302_RST = P1^2;
19 sbit K1 = P3^2;
20 sbit K2 = P3^3;
21 sbit DQ=P3^3;
22 /*******************************共阳LED段码表*******************************/
23 unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc6,0x7f};
24
25 /******************************定义全局变量*********************************/
26 unsigned char second,minute,hour,week,day,month,year; //秒、分、时、星期、日、月、年
27 //unsigned char minute1,hour1;
28 unsigned char second1,minute1,hour1,week1,day1,month1,year1;
29 unsigned char t1,t2,i;
30 unsigned char secondchar,minutechar,hourchar,weekchar,daychar,monthchar,yearchar;
31 unsigned char keysum ;
32 unsigned char key_s, key_v, tmp;
33 unsigned char key_s1, key_v1;
34 unsigned char tab1[10];
35 unsigned char dat; //定义全局变量
36 unsigned long dat1;
37 unsigned char ii,jj;
38 unsigned char RxdFlag;
39 //char code str[] = "www.jiundingantong.com ";
40
41
42
43 /*********************************定义全局变量******************************/
44 unsigned char tempL=0; //临时变量低位
45 unsigned char tempH=0; //临时变量高位
46 float temperature; //温度值
47
48
49 //串行口初始化程序
50 void Init_Com(void)
51 {
52 1 TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
53 1 PCON = 0x00; // 波特率不倍增//
54 1 SCON = 0x50; // 串口工作方式1//
55 1 TH1 = 0xFd; // 9600Kbps//
C51 COMPILER V7.06 DS1302 07/29/2000 11:48:31 PAGE 2
56 1 TL1 = 0xFd;
57 1 TR1 = 1; // 启动定时器1,开启中断//
58 1 }
59
60
61 void send_char(unsigned char txd) // 传送一个字符
62 {
63 1 SBUF = txd; // 传送数据
64 1 while(!TI); // 等特数据传送
65 1 TI = 0; // 清除数据传送标志
66 1 }
67
68
69
70
71 /****************************************************************************
72 函数功能:延时子程序(温度显示部分用)
73 入口参数:k
74 出口参数:
75 ****************************************************************************/
76 void delayy(unsigned int k)
77
78 {
79 1 unsigned int n;
80 1 n=0;
81 1 while(n < k)
82 1 {n++;}
83 1 return;
84 1 }
85
86 /****************************************************************************
87 函数功能:延时子程序(时间显示部分用)
88 入口参数:
89 出口参数:
90 ****************************************************************************/
91
92 void delay1(void)
93 {
94 1 int k;
95 1 for(k=0;k<400;k++);
96 1 }
97
98 /****************************************************************************
99 函数功能:数码管显示子程序(正常显示温度)
100 入口参数:k
101 出口参数:
102 ****************************************************************************/
103 void displayy(int k)
104 {
105 1 /*P2=0xfe;
106 1 P0=tab[k/1000];
107 1 delay1();
108 1 P2=0xfd;
109 1 P0=tab[k%1000/100];
110 1 delay1();*/
111 1 P2=0xff; //关闭P2口//
112 1 P2=0xfb; //温度显示的十位的位选//
113 1 P0=tab[k%100/10]; //温度显示的十位//
114 1 delay1();
115 1 P2=0xf7; //温度显示的个位的位选//
116 1 P0=tab[k%10]; //温度显示的个位//
117 1 delay1();
C51 COMPILER V7.06 DS1302 07/29/2000 11:48:31 PAGE 3
118 1 P2=0xdf; //字符C的位选//
119 1 P0=0xc6; //从DP段开始倒数:DP、G、F、E、D、C、B、A/11000110即16进制C6,显示字符
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -