Browse Source

debug

master
htujun 3 years ago
commit
4994e0b130
  1. 36
      .vscode/c_cpp_properties.json
  2. 2
      .vscode/keil-assistant.log
  3. 0
      .vscode/uv4.log
  4. 1
      .vscode/uv4.log.lock
  5. 137
      ds1302.LST
  6. BIN
      ds1302.OBJ
  7. 1
      ds1302.__i
  8. 110
      ds1302.c
  9. 31
      ds1302.h
  10. 179
      i2c.LST
  11. BIN
      i2c.OBJ
  12. 152
      i2c.c
  13. 16
      i2c.h
  14. 161
      lcd.LST
  15. BIN
      lcd.OBJ
  16. 134
      lcd.c
  17. 43
      lcd.h
  18. 209
      main.LST
  19. BIN
      main.OBJ
  20. 180
      main.c
  21. BIN
      pro
  22. 745
      pro.M51
  23. 38
      pro.build_log.htm
  24. 173
      pro.hex
  25. 5
      pro.lnp
  26. 1904
      pro.uvgui.QY
  27. 1877
      pro.uvgui.S
  28. 1913
      pro.uvgui.asus
  29. 240
      pro.uvopt
  30. 405
      pro.uvproj

36
.vscode/c_cpp_properties.json vendored

@ -0,0 +1,36 @@
{
"configurations": [
{
"name": "Target 1",
"includePath": [
"e:\\项目\\兼职项目\\20220428-IntelligentLighting"
],
"defines": [
"__C51__",
"__VSCODE_C51__",
"reentrant=",
"compact=",
"small=",
"large=",
"data=",
"idata=",
"pdata=",
"bdata=",
"xdata=",
"code=",
"bit=char",
"sbit=char",
"sfr=char",
"sfr16=int",
"sfr32=int",
"interrupt=",
"using=",
"_at_=",
"_priority_=",
"_task_="
],
"intelliSenseMode": "${default}"
}
],
"version": 4
}

2
.vscode/keil-assistant.log vendored

@ -0,0 +1,2 @@
[info] Log at : 2022/4/29|01:03:00|GMT+0800

0
.vscode/uv4.log vendored

1
.vscode/uv4.log.lock vendored

@ -0,0 +1 @@
2022/4/29 1:06:45

137
ds1302.LST

@ -0,0 +1,137 @@
C51 COMPILER V9.56.0.0 DS1302 04/28/2022 23:43:37 PAGE 1
C51 COMPILER V9.56.0.0, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN ds1302.OBJ
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ds1302.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND TABS(2)
line level source
1 #include"ds1302.h"
2
3 //---DS1302写入和读取时分秒的地址命令---//
4 //---秒分时日月周年 最低位读写位;-------//
5 uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d};
6 uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};
7
8 //---DS1302时钟初始化2013年1月1日星期二12点00分00秒。---//
9 //---存储顺序是秒分时日月周年,存储格式是用BCD码---//
10
11 uchar TIME[7] = {0X00, 0X01, 0x23, 0x28, 0x04, 0x04, 0x22};
12
13
14 void Ds1302Write(uchar addr, uchar dat)
15 {
16 1 uchar n;
17 1 RST = 0;
18 1 _nop_();
19 1
20 1 SCLK = 0;//先将SCLK置低电平。
21 1 _nop_();
22 1 RST = 1; //然后将RST(CE)置高电平。
23 1 _nop_();
24 1
25 1 for (n=0; n<8; n++)//开始传送八位地址命令
26 1 {
27 2 DSIO = addr & 0x01;//数据从低位开始传送
28 2 addr >>= 1;
29 2 SCLK = 1;//数据在上升沿时,DS1302读取数据
30 2 _nop_();
31 2 SCLK = 0;
32 2 _nop_();
33 2 }
34 1 for (n=0; n<8; n++)//写入8位数据
35 1 {
36 2 DSIO = dat & 0x01;
37 2 dat >>= 1;
38 2 SCLK = 1;//数据在上升沿时,DS1302读取数据
39 2 _nop_();
40 2 SCLK = 0;
41 2 _nop_();
42 2 }
43 1
44 1 RST = 0;//传送数据结束
45 1 _nop_();
46 1 }
47
48 uchar Ds1302Read(uchar addr)
49 {
50 1 uchar n,dat,dat1;
51 1 RST = 0;
52 1 _nop_();
53 1
54 1 SCLK = 0;//先将SCLK置低电平。
55 1 _nop_();
C51 COMPILER V9.56.0.0 DS1302 04/28/2022 23:43:37 PAGE 2
56 1 RST = 1;//然后将RST(CE)置高电平。
57 1 _nop_();
58 1
59 1 for(n=0; n<8; n++)//开始传送八位地址命令
60 1 {
61 2 DSIO = addr & 0x01;//数据从低位开始传送
62 2 addr >>= 1;
63 2 SCLK = 1;//数据在上升沿时,DS1302读取数据
64 2 _nop_();
65 2 SCLK = 0;//DS1302下降沿时,放置数据
66 2 _nop_();
67 2 }
68 1 _nop_();
69 1 for(n=0; n<8; n++)//读取8位数据
70 1 {
71 2 dat1 = DSIO;//从最低位开始接收
72 2 dat = (dat>>1) | (dat1<<7);
73 2 SCLK = 1;
74 2 _nop_();
75 2 SCLK = 0;//DS1302下降沿时,放置数据
76 2 _nop_();
77 2 }
78 1
79 1 RST = 0;
80 1 _nop_(); //以下为DS1302复位的稳定时间,必须的。
81 1 SCLK = 1;
82 1 _nop_();
83 1 DSIO = 0;
84 1 _nop_();
85 1 DSIO = 1;
86 1 _nop_();
87 1 return dat;
88 1 }
89
90 void Ds1302Init()
91 {
92 1 uchar n;
93 1 Ds1302Write(0x8E,0X00); //禁止写保护,就是关闭写保护功能
94 1 for (n=0; n<7; n++)//写入7个字节的时钟信号:分秒时日月周年
95 1 {
96 2 Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]);
97 2 }
98 1 Ds1302Write(0x8E,0x80); //打开写保护功能
99 1 }
100
101 void Ds1302ReadTime()
102 {
103 1 uchar n;
104 1 for (n=0; n<7; n++)//读取7个字节的时钟信号:分秒时日月周年
105 1 {
106 2 TIME[n] = Ds1302Read(READ_RTC_ADDR[n]);
107 2 }
108 1 }
109
110
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 184 ----
CONSTANT SIZE = 14 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
C51 COMPILER V9.56.0.0 DS1302 04/28/2022 23:43:37 PAGE 3
DATA SIZE = 7 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)

BIN
ds1302.OBJ

Binary file not shown.

1
ds1302.__i

@ -0,0 +1 @@
"ds1302.c" OPTIMIZE (8,SPEED) BROWSE DEBUG OBJECTEXTEND TABS (2)

110
ds1302.c

@ -0,0 +1,110 @@
#include"ds1302.h"
//---DS1302写入和读取时分秒的地址命令---//
//---秒分时日月周年 最低位读写位;-------//
uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d};
uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};
//---DS1302时钟初始化2013年1月1日星期二12点00分00秒。---//
//---存储顺序是秒分时日月周年,存储格式是用BCD码---//
uchar TIME[7] = {0X00, 0X01, 0x23, 0x28, 0x04, 0x04, 0x22};
void Ds1302Write(uchar addr, uchar dat)
{
uchar n;
RST = 0;
_nop_();
SCLK = 0;//先将SCLK置低电平。
_nop_();
RST = 1; //然后将RST(CE)置高电平。
_nop_();
for (n=0; n<8; n++)//开始传送八位地址命令
{
DSIO = addr & 0x01;//数据从低位开始传送
addr >>= 1;
SCLK = 1;//数据在上升沿时,DS1302读取数据
_nop_();
SCLK = 0;
_nop_();
}
for (n=0; n<8; n++)//写入8位数据
{
DSIO = dat & 0x01;
dat >>= 1;
SCLK = 1;//数据在上升沿时,DS1302读取数据
_nop_();
SCLK = 0;
_nop_();
}
RST = 0;//传送数据结束
_nop_();
}
uchar Ds1302Read(uchar addr)
{
uchar n,dat,dat1;
RST = 0;
_nop_();
SCLK = 0;//先将SCLK置低电平。
_nop_();
RST = 1;//然后将RST(CE)置高电平。
_nop_();
for(n=0; n<8; n++)//开始传送八位地址命令
{
DSIO = addr & 0x01;//数据从低位开始传送
addr >>= 1;
SCLK = 1;//数据在上升沿时,DS1302读取数据
_nop_();
SCLK = 0;//DS1302下降沿时,放置数据
_nop_();
}
_nop_();
for(n=0; n<8; n++)//读取8位数据
{
dat1 = DSIO;//从最低位开始接收
dat = (dat>>1) | (dat1<<7);
SCLK = 1;
_nop_();
SCLK = 0;//DS1302下降沿时,放置数据
_nop_();
}
RST = 0;
_nop_(); //以下为DS1302复位的稳定时间,必须的。
SCLK = 1;
_nop_();
DSIO = 0;
_nop_();
DSIO = 1;
_nop_();
return dat;
}
void Ds1302Init()
{
uchar n;
Ds1302Write(0x8E,0X00); //禁止写保护,就是关闭写保护功能
for (n=0; n<7; n++)//写入7个字节的时钟信号:分秒时日月周年
{
Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]);
}
Ds1302Write(0x8E,0x80); //打开写保护功能
}
void Ds1302ReadTime()
{
uchar n;
for (n=0; n<7; n++)//读取7个字节的时钟信号:分秒时日月周年
{
TIME[n] = Ds1302Read(READ_RTC_ADDR[n]);
}
}

31
ds1302.h

@ -0,0 +1,31 @@
#ifndef __DS1302_H_
#define __DS1302_H_
//---包含头文件---//
#include<reg51.h>
#include<intrins.h>
//---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
//---定义ds1302使用的IO口---//
sbit DSIO=P3^4;
sbit RST=P3^3;
sbit SCLK=P3^5;
//---定义全局函数---//
void Ds1302Write(uchar addr, uchar dat);
uchar Ds1302Read(uchar addr);
void Ds1302Init();
void Ds1302ReadTime();
//---加入全局变量--//
extern uchar TIME[7]; //加入全局变量
#endif

179
i2c.LST

@ -0,0 +1,179 @@
C51 COMPILER V9.56.0.0 I2C 04/28/2022 23:10:25 PAGE 1
C51 COMPILER V9.56.0.0, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN i2c.OBJ
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE i2c.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND TABS(2)
line level source
1 #include"i2c.h"
2
3 /*******************************************************************************
4 * 函数名 : Delay10us()
5 * 函数功能 : 延时10us
6 * 输入 : 无
7 * 输出 : 无
8 *******************************************************************************/
9
10 void Delay10us()
11 {
12 1 unsigned char a,b;
13 1 for(b=1;b>0;b--)
14 1 for(a=2;a>0;a--);
15 1
16 1 }
17 /*******************************************************************************
18 * 函数名 : I2cStart()
19 * 函数功能 : 起始信号:在SCL时钟信号在高电平期间SDA信号产生一个下降沿
20 * 输入 : 无
21 * 输出 : 无
22 * 备注 : 起始之后SDA和SCL都为0
23 *******************************************************************************/
24
25 void I2cStart()
26 {
27 1 SDA=1;
28 1 Delay10us();
29 1 SCL=1;
30 1 Delay10us();//建立时间是SDA保持时间>4.7us
31 1 SDA=0;
32 1 Delay10us();//保持时间是>4us
33 1 SCL=0;
34 1 Delay10us();
35 1 }
36 /*******************************************************************************
37 * 函数名 : I2cStop()
38 * 函数功能 : 终止信号:在SCL时钟信号高电平期间SDA信号产生一个上升沿
39 * 输入 : 无
40 * 输出 : 无
41 * 备注 : 结束之后保持SDA和SCL都为1;表示总线空闲
42 *******************************************************************************/
43
44 void I2cStop()
45 {
46 1 SDA=0;
47 1 Delay10us();
48 1 SCL=1;
49 1 Delay10us();//建立时间大于4.7us
50 1 SDA=1;
51 1 Delay10us();
52 1 }
53 /*******************************************************************************
54 * 函数名 : I2cSendByte(unsigned char dat)
55 * 函数功能 : 通过I2C发送一个字节。在SCL时钟信号高电平期间,保持发送信号SDA保持稳定
C51 COMPILER V9.56.0.0 I2C 04/28/2022 23:10:25 PAGE 2
56 * 输入 : num
57 * 输出 : 0或1。发送成功返回1,发送失败返回0
58 * 备注 : 发送完一个字节SCL=0,SDA=1
59 *******************************************************************************/
60
61 unsigned char I2cSendByte(unsigned char dat)
62 {
63 1 unsigned char a=0,b=0;//最大255,一个机器周期为1us,最大延时255us。
64 1 for(a=0;a<8;a++)//要发送8位,从最高位开始
65 1 {
66 2 SDA=dat>>7; //起始信号之后SCL=0,所以可以直接改变SDA信号
67 2 dat=dat<<1;
68 2 Delay10us();
69 2 SCL=1;
70 2 Delay10us();//建立时间>4.7us
71 2 SCL=0;
72 2 Delay10us();//时间大于4us
73 2 }
74 1 SDA=1;
75 1 Delay10us();
76 1 SCL=1;
77 1 while(SDA)//等待应答,也就是等待从设备把SDA拉低
78 1 {
79 2 b++;
80 2 if(b>200) //如果超过2000us没有应答发送失败,或者为非应答,表示接收结束
81 2 {
82 3 SCL=0;
83 3 Delay10us();
84 3 return 0;
85 3 }
86 2 }
87 1 SCL=0;
88 1 Delay10us();
89 1 return 1;
90 1 }
91 /*******************************************************************************
92 * 函数名 : I2cReadByte()
93 * 函数功能 : 使用I2c读取一个字节
94 * 输入 : 无
95 * 输出 : dat
96 * 备注 : 接收完一个字节SCL=0,SDA=1.
97 *******************************************************************************/
98
99 unsigned char I2cReadByte()
100 {
101 1 unsigned char a=0,dat=0;
102 1 SDA=1; //起始和发送一个字节之后SCL都是0
103 1 Delay10us();
104 1 for(a=0;a<8;a++)//接收8个字节
105 1 {
106 2 SCL=1;
107 2 Delay10us();
108 2 dat<<=1;
109 2 dat|=SDA;
110 2 Delay10us();
111 2 SCL=0;
112 2 Delay10us();
113 2 }
114 1 return dat;
115 1 }
116
117
C51 COMPILER V9.56.0.0 I2C 04/28/2022 23:10:25 PAGE 3
118 /*******************************************************************************
119 * 函数名 : void At24c02Write(unsigned char addr,unsigned char dat)
120 * 函数功能 : 往24c02的一个地址写入一个数据
121 * 输入 : 无
122 * 输出 : 无
123 *******************************************************************************/
124
125 void At24c02Write(unsigned char addr,unsigned char dat)
126 {
127 1 I2cStart();
128 1 I2cSendByte(0xa0);//发送写器件地址
129 1 I2cSendByte(addr);//发送要写入内存地址
130 1 I2cSendByte(dat); //发送数据
131 1 I2cStop();
132 1 }
133 /*******************************************************************************
134 * 函数名 : unsigned char At24c02Read(unsigned char addr)
135 * 函数功能 : 读取24c02的一个地址的一个数据
136 * 输入 : 无
137 * 输出 : 无
138 *******************************************************************************/
139
140 unsigned char At24c02Read(unsigned char addr)
141 {
142 1 unsigned char num;
143 1 I2cStart();
144 1 I2cSendByte(0xa0); //发送写器件地址
145 1 I2cSendByte(addr); //发送要读取的地址
146 1 I2cStart();
147 1 I2cSendByte(0xa1); //发送读器件地址
148 1 num=I2cReadByte(); //读取数据
149 1 I2cStop();
150 1 return num;
151 1 }
152
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 201 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)

BIN
i2c.OBJ

Binary file not shown.

152
i2c.c

@ -0,0 +1,152 @@
#include"i2c.h"
/*******************************************************************************
* : Delay10us()
* : 10us
* :
* :
*******************************************************************************/
void Delay10us()
{
unsigned char a,b;
for(b=1;b>0;b--)
for(a=2;a>0;a--);
}
/*******************************************************************************
* : I2cStart()
* : SCL时钟信号在高电平期间SDA信号产生一个下降沿
* :
* :
* : SDA和SCL都为0
*******************************************************************************/
void I2cStart()
{
SDA=1;
Delay10us();
SCL=1;
Delay10us();//建立时间是SDA保持时间>4.7us
SDA=0;
Delay10us();//保持时间是>4us
SCL=0;
Delay10us();
}
/*******************************************************************************
* : I2cStop()
* : SCL时钟信号高电平期间SDA信号产生一个上升沿
* :
* :
* : SDA和SCL都为1线
*******************************************************************************/
void I2cStop()
{
SDA=0;
Delay10us();
SCL=1;
Delay10us();//建立时间大于4.7us
SDA=1;
Delay10us();
}
/*******************************************************************************
* : I2cSendByte(unsigned char dat)
* : I2C发送一个字节SCL时钟信号高电平期间SDA保持稳定
* : num
* : 0110
* : SCL=0,SDA=1
*******************************************************************************/
unsigned char I2cSendByte(unsigned char dat)
{
unsigned char a=0,b=0;//最大255,一个机器周期为1us,最大延时255us。
for(a=0;a<8;a++)//要发送8位,从最高位开始
{
SDA=dat>>7; //起始信号之后SCL=0,所以可以直接改变SDA信号
dat=dat<<1;
Delay10us();
SCL=1;
Delay10us();//建立时间>4.7us
SCL=0;
Delay10us();//时间大于4us
}
SDA=1;
Delay10us();
SCL=1;
while(SDA)//等待应答,也就是等待从设备把SDA拉低
{
b++;
if(b>200) //如果超过2000us没有应答发送失败,或者为非应答,表示接收结束
{
SCL=0;
Delay10us();
return 0;
}
}
SCL=0;
Delay10us();
return 1;
}
/*******************************************************************************
* : I2cReadByte()
* : 使I2c读取一个字节
* :
* : dat
* : SCL=0,SDA=1.
*******************************************************************************/
unsigned char I2cReadByte()
{
unsigned char a=0,dat=0;
SDA=1; //起始和发送一个字节之后SCL都是0
Delay10us();
for(a=0;a<8;a++)//接收8个字节
{
SCL=1;
Delay10us();
dat<<=1;
dat|=SDA;
Delay10us();
SCL=0;
Delay10us();
}
return dat;
}
/*******************************************************************************
* : void At24c02Write(unsigned char addr,unsigned char dat)
* : 24c02的一个地址写入一个数据
* :
* :
*******************************************************************************/
void At24c02Write(unsigned char addr,unsigned char dat)
{
I2cStart();
I2cSendByte(0xa0);//发送写器件地址
I2cSendByte(addr);//发送要写入内存地址
I2cSendByte(dat); //发送数据
I2cStop();
}
/*******************************************************************************
* : unsigned char At24c02Read(unsigned char addr)
* : 24c02的一个地址的一个数据
* :
* :
*******************************************************************************/
unsigned char At24c02Read(unsigned char addr)
{
unsigned char num;
I2cStart();
I2cSendByte(0xa0); //发送写器件地址
I2cSendByte(addr); //发送要读取的地址
I2cStart();
I2cSendByte(0xa1); //发送读器件地址
num=I2cReadByte(); //读取数据
I2cStop();
return num;
}

16
i2c.h

@ -0,0 +1,16 @@
#ifndef __I2C_H_
#define __I2C_H_
#include <reg51.h>
sbit SCL=P2^1;
sbit SDA=P2^0;
void I2cStart();
void I2cStop();
unsigned char I2cSendByte(unsigned char dat);
unsigned char I2cReadByte();
void At24c02Write(unsigned char addr,unsigned char dat);
unsigned char At24c02Read(unsigned char addr);
#endif

161
lcd.LST

@ -0,0 +1,161 @@
C51 COMPILER V9.56.0.0 LCD 04/29/2022 00:07:44 PAGE 1
C51 COMPILER V9.56.0.0, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE lcd.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND TABS(2)
line level source
1 #include"lcd.h"
2
3 /*******************************************************************************
4 * 函 数 名 : Lcd1602_Delay1ms
5 * 函数功能 : 延时函数,延时1ms
6 * 输 入 : c
7 * 输 出 : 无
8 * 说 名 : 该函数是在12MHZ晶振下,12分频单片机的延时。
9 *******************************************************************************/
10
11 void Lcd1602_Delay1ms(uint c) //误差 0us
12 {
13 1 uchar a,b;
14 1 for (; c>0; c--)
15 1 {
16 2 for (b=199;b>0;b--)
17 2 {
18 3 for(a=1;a>0;a--);
19 3 }
20 2 }
21 1
22 1 }
23
24 /*******************************************************************************
25 * 函 数 名 : LcdWriteCom
26 * 函数功能 : 向LCD写入一个字节的命令
27 * 输 入 : com
28 * 输 出 : 无
29 *******************************************************************************/
30 #ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时
31 void LcdWriteCom(uchar com) //写入命令
32 {
33 1 LCD1602_E = 0; //使能
34 1 LCD1602_RS = 0; //选择发送命令
35 1 LCD1602_RW = 0; //选择写入
36 1
37 1 LCD1602_DATAPINS = com; //放入命令
38 1 Lcd1602_Delay1ms(1); //等待数据稳定
39 1
40 1 LCD1602_E = 1; //写入时序
41 1 Lcd1602_Delay1ms(5); //保持时间
42 1 LCD1602_E = 0;
43 1 }
44 #else
void LcdWriteCom(uchar com) //写入命令
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 0; //选择写入命令
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = com; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
C51 COMPILER V9.56.0.0 LCD 04/29/2022 00:07:44 PAGE 2
LCD1602_E = 0;
// Lcd1602_Delay1ms(1);
LCD1602_DATAPINS = com << 4; //发送低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
#endif
67 /*******************************************************************************
68 * 函 数 名 : LcdWriteData
69 * 函数功能 : 向LCD写入一个字节的数据
70 * 输 入 : dat
71 * 输 出 : 无
72 *******************************************************************************/
73 #ifndef LCD1602_4PINS
74 void LcdWriteData(uchar dat) //写入数据
75 {
76 1 LCD1602_E = 0; //使能清零
77 1 LCD1602_RS = 1; //选择输入数据
78 1 LCD1602_RW = 0; //选择写入
79 1
80 1 LCD1602_DATAPINS = dat; //写入数据
81 1 Lcd1602_Delay1ms(1);
82 1
83 1 LCD1602_E = 1; //写入时序
84 1 Lcd1602_Delay1ms(5); //保持时间
85 1 LCD1602_E = 0;
86 1 }
87 #else
void LcdWriteData(uchar dat) //写入数据
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 1; //选择写入数据
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = dat; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
LCD1602_DATAPINS = dat << 4; //写入低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
#endif
109 /*******************************************************************************
110 * 函 数 名 : LcdInit()
111 * 函数功能 : 初始化LCD屏
112 * 输 入 : 无
113 * 输 出 : 无
114 *******************************************************************************/
115 #ifndef LCD1602_4PINS
116 void LcdInit() //LCD初始化子程序
117 {
C51 COMPILER V9.56.0.0 LCD 04/29/2022 00:07:44 PAGE 3
118 1 LcdWriteCom(0x38); //开显示
119 1 LcdWriteCom(0x0c); //开显示不显示光标
120 1 LcdWriteCom(0x06); //写一个指针加1
121 1 LcdWriteCom(0x01); //清屏
122 1 LcdWriteCom(0x80); //设置数据指针起点
123 1 }
124 #else
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x32); //将8位总线转为4位总线
LcdWriteCom(0x28); //在四位线下的初始化
LcdWriteCom(0x0c); //开显示不显示光标
LcdWriteCom(0x06); //写一个指针加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //设置数据指针起点
}
#endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 87 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)

BIN
lcd.OBJ

Binary file not shown.

134
lcd.c

@ -0,0 +1,134 @@
#include"lcd.h"
/*******************************************************************************
* : Lcd1602_Delay1ms
* : 1ms
* : c
* :
* : 12MHZ晶振下12
*******************************************************************************/
void Lcd1602_Delay1ms(uint c) //误差 0us
{
uchar a,b;
for (; c>0; c--)
{
for (b=199;b>0;b--)
{
for(a=1;a>0;a--);
}
}
}
/*******************************************************************************
* : LcdWriteCom
* : LCD写入一个字节的命令
* : com
* :
*******************************************************************************/
#ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时
void LcdWriteCom(uchar com) //写入命令
{
LCD1602_E = 0; //使能
LCD1602_RS = 0; //选择发送命令
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = com; //放入命令
Lcd1602_Delay1ms(1); //等待数据稳定
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5); //保持时间
LCD1602_E = 0;
}
#else
void LcdWriteCom(uchar com) //写入命令
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 0; //选择写入命令
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = com; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
// Lcd1602_Delay1ms(1);
LCD1602_DATAPINS = com << 4; //发送低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
#endif
/*******************************************************************************
* : LcdWriteData
* : LCD写入一个字节的数据
* : dat
* :
*******************************************************************************/
#ifndef LCD1602_4PINS
void LcdWriteData(uchar dat) //写入数据
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 1; //选择输入数据
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = dat; //写入数据
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5); //保持时间
LCD1602_E = 0;
}
#else
void LcdWriteData(uchar dat) //写入数据
{
LCD1602_E = 0; //使能清零
LCD1602_RS = 1; //选择写入数据
LCD1602_RW = 0; //选择写入
LCD1602_DATAPINS = dat; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
LCD1602_DATAPINS = dat << 4; //写入低四位
Lcd1602_Delay1ms(1);
LCD1602_E = 1; //写入时序
Lcd1602_Delay1ms(5);
LCD1602_E = 0;
}
#endif
/*******************************************************************************
* : LcdInit()
* : LCD屏
* :
* :
*******************************************************************************/
#ifndef LCD1602_4PINS
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x38); //开显示
LcdWriteCom(0x0c); //开显示不显示光标
LcdWriteCom(0x06); //写一个指针加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //设置数据指针起点
}
#else
void LcdInit() //LCD初始化子程序
{
LcdWriteCom(0x32); //将8位总线转为4位总线
LcdWriteCom(0x28); //在四位线下的初始化
LcdWriteCom(0x0c); //开显示不显示光标
LcdWriteCom(0x06); //写一个指针加1
LcdWriteCom(0x01); //清屏
LcdWriteCom(0x80); //设置数据指针起点
}
#endif

43
lcd.h

@ -0,0 +1,43 @@
#ifndef __LCD_H_
#define __LCD_H_
/**********************************
使4
使8
**********************************/
//#define LCD1602_4PINS
/**********************************
**********************************/
#include<reg51.h>
//---重定义关键词---//
#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endif
/**********************************
PIN口定义
**********************************/
#define LCD1602_DATAPINS P2
sbit LCD1602_E=P1^4;
sbit LCD1602_RW=P1^5;
sbit LCD1602_RS=P1^6;
/**********************************
**********************************/
/*在51单片机12MHZ时钟下的延时函数*/
void Lcd1602_Delay1ms(uint c); //误差 0us
/*LCD1602写入8位命令子函数*/
void LcdWriteCom(uchar com);
/*LCD1602写入8位数据子函数*/
void LcdWriteData(uchar dat) ;
/*LCD1602初始化子程序*/
void LcdInit();
#endif

209
main.LST

@ -0,0 +1,209 @@
C51 COMPILER V9.56.0.0 MAIN 04/29/2022 01:22:41 PAGE 1
C51 COMPILER V9.56.0.0, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE main.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND TABS(2)
line level source
1 #include<reg51.h>
2 #include"lcd.h"
3 #include"ds1302.h"
4 #include"i2c.h"
5 #include <stdio.h>
6 #include <string.h>
7
8 sbit LED0=P0^2;
9 sbit LED1=P0^1;
10 sbit LED2=P0^0;
11 sbit LED3=P0^4;
12
13 sbit LED4=P0^3;
14
15 sbit key1 = P1^2;
16 sbit key2 = P1^3;
17
18 sbit IN = P3^7;
19 sbit OUT = P3^6;
20
21 struct UserInfo{
22 int num;
23 int model;
24 int start;
25 int Light;
26 };
27
28 struct UserInfo userInfo;
29
30 void LcdDisplay();
31 void LcdDisplay1();
32 void Delay10ms(void);
33
34 void Uart_Init()
35 {
36 1 TMOD = 0x20 | 0x01;
37 1 SCON = 0x50;
38 1 TH1 = 0xFD;
39 1 TL1 = TH1;
40 1 PCON = 0x00;
41 1 EA = 1;
42 1 ES = 1;
43 1 TR1 = 1;
44 1 }
45
46 void us_delay(uchar t)
47 {
48 1 while(t--);
49 1 }
50
51 void Send_Uart(uchar value)
52 {
53 1 ES=0;
54 1 TI=0;
55 1 SBUF=value;
C51 COMPILER V9.56.0.0 MAIN 04/29/2022 01:22:41 PAGE 2
56 1 while(TI==0);
57 1 TI=0;
58 1 ES=1;
59 1 }
60
61 void Bluetooth_Set(uchar *puf)
62 {
63 1 while(*puf!='\0')
64 1 {
65 2 Send_Uart(*puf);
66 2 us_delay(5);
67 2 puf++;
68 2 }
69 1 }
70
71 void Detection()
72 {
73 1 int i = 0;
74 1 if(key1==0) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>K1<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>
75 1 {
76 2 Delay10ms(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
77 2 if(key1==0){
78 3 if(userInfo.model == 0) userInfo.model = 1;
79 3 else userInfo.model = 0;
80 3 }
81 2 while((i<50)&&(key1==0)){
82 3 Delay10ms();
83 3 i++;
84 3 }
85 2 i=0;
86 2 }
87 1
88 1 if(key2==0) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>K1<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>
89 1 {
90 2 Delay10ms(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
91 2 if(key2==0){
92 3 if(userInfo.start == 0) userInfo.start = 1;
93 3 else userInfo.start = 0;
94 3 }
95 2 while((i<50)&&(key2==0)){
96 3 Delay10ms();
97 3 i++;
98 3 }
99 2 i=0;
100 2 }
101 1
102 1 if(IN==0) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>K1<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>
103 1 {
104 2 Delay10ms(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
105 2 if(IN==0){
106 3 userInfo.num++;
107 3 if(userInfo.num > 99) userInfo.num = 99;
108 3 }
109 2 while((i<50)&&(IN==0)){
110 3 Delay10ms();
111 3 i++;
112 3 }
113 2 i=0;
114 2 }
115 1
116 1 if(OUT==0) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>K1<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>
117 1 {
C51 COMPILER V9.56.0.0 MAIN 04/29/2022 01:22:41 PAGE 3
118 2 Delay10ms(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
119 2 if(OUT==0){
120 3 userInfo.num--;
121 3 if(userInfo.num < 0) userInfo.num = 0;
122 3 }
123 2 while((i<50)&&(OUT==0)){
124 3 Delay10ms();
125 3 i++;
126 3 }
127 2 i=0;
128 2 }
129 1 }
130
131 void Dispose()
132 {
133 1 if(userInfo.start && userInfo.model){
134 2 LED0 = 0, LED1 = 0, LED2 = 0 ,LED3 = 0;
135 2 }else{
136 2 if(userInfo.Light < 50 && userInfo.model == 0){
137 3 if(userInfo.num < 10 && userInfo.num > 0) LED0 = 0, LED1 = 0, LED2 = 0 ,LED3 = 1;
138 3 else if(userInfo.num >= 10 && userInfo.num < 20) LED0 = 0, LED1 = 0, LED2 = 1 ,LED3 = 1;
139 3 else if(userInfo.num >= 20 && userInfo.num < 30) LED0 = 0, LED1 = 1, LED2 = 1 ,LED3 = 1;
140 3 else if(userInfo.num >= 30) LED0 = 1, LED1 = 1, LED2 = 1 ,LED3 = 1;
141 3 else LED0 = 0, LED1 = 0, LED2 = 0 ,LED3 = 0;
142 3 }
143 2 }
144 1 LED4 = userInfo.model;
145 1 }
146
147 void main()
148 {
149 1 int i = 0;
150 1 uchar str[30];
151 1 LcdInit();
152 1 Ds1302Init();
153 1 Uart_Init();
154 1 while(1)
155 1 {
156 2 Ds1302ReadTime();
157 2 LcdDisplay();
158 2 Detection();
159 2 sprintf(str, "%d\r\n", userInfo.model);
160 2 Bluetooth_Set(str);
161 2 Dispose();
162 2 }
163 1 }
164
165
166 void LcdDisplay()
167 {
168 1 // TODO 显示时间
169 1 LcdWriteCom(0x80);
170 1 LcdWriteData('m');
171 1 }
172
173
174 void Delay10ms(void) //<EFBFBD><EFBFBD><EFBFBD> 0us
175 {
176 1 unsigned char a,b,c;
177 1 for(c=1;c>0;c--)
178 1 for(b=38;b>0;b--)
179 1 for(a=130;a>0;a--);
C51 COMPILER V9.56.0.0 MAIN 04/29/2022 01:22:41 PAGE 4
180 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 589 ----
CONSTANT SIZE = 5 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 34
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)

BIN
main.OBJ

Binary file not shown.

180
main.c

@ -0,0 +1,180 @@
#include<reg51.h>
#include"lcd.h"
#include"ds1302.h"
#include"i2c.h"
#include <stdio.h>
#include <string.h>
sbit LED0=P0^2;
sbit LED1=P0^1;
sbit LED2=P0^0;
sbit LED3=P0^4;
sbit LED4=P0^3;
sbit key1 = P1^2;
sbit key2 = P1^3;
sbit IN = P3^7;
sbit OUT = P3^6;
struct UserInfo{
int num;
int model;
int start;
int Light;
};
struct UserInfo userInfo;
void LcdDisplay();
void LcdDisplay1();
void Delay10ms(void);
void Uart_Init()
{
TMOD = 0x20 | 0x01;
SCON = 0x50;
TH1 = 0xFD;
TL1 = TH1;
PCON = 0x00;
EA = 1;
ES = 1;
TR1 = 1;
}
void us_delay(uchar t)
{
while(t--);
}
void Send_Uart(uchar value)
{
ES=0;
TI=0;
SBUF=value;
while(TI==0);
TI=0;
ES=1;
}
void Bluetooth_Set(uchar *puf)
{
while(*puf!='\0')
{
Send_Uart(*puf);
us_delay(5);
puf++;
}
}
void Detection()
{
int i = 0;
if(key1==0) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>K1<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>
{
Delay10ms(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(key1==0){
if(userInfo.model == 0) userInfo.model = 1;
else userInfo.model = 0;
}
while((i<50)&&(key1==0)){
Delay10ms();
i++;
}
i=0;
}
if(key2==0) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>K1<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>
{
Delay10ms(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(key2==0){
if(userInfo.start == 0) userInfo.start = 1;
else userInfo.start = 0;
}
while((i<50)&&(key2==0)){
Delay10ms();
i++;
}
i=0;
}
if(IN==0) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>K1<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>
{
Delay10ms(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(IN==0){
userInfo.num++;
if(userInfo.num > 99) userInfo.num = 99;
}
while((i<50)&&(IN==0)){
Delay10ms();
i++;
}
i=0;
}
if(OUT==0) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>K1<EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>
{
Delay10ms(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(OUT==0){
userInfo.num--;
if(userInfo.num < 0) userInfo.num = 0;
}
while((i<50)&&(OUT==0)){
Delay10ms();
i++;
}
i=0;
}
}
void Dispose()
{
if(userInfo.start && userInfo.model){
LED0 = 0, LED1 = 0, LED2 = 0 ,LED3 = 0;
}else{
if(userInfo.Light < 50 && userInfo.model == 0){
if(userInfo.num < 10 && userInfo.num > 0) LED0 = 0, LED1 = 0, LED2 = 0 ,LED3 = 1;
else if(userInfo.num >= 10 && userInfo.num < 20) LED0 = 0, LED1 = 0, LED2 = 1 ,LED3 = 1;
else if(userInfo.num >= 20 && userInfo.num < 30) LED0 = 0, LED1 = 1, LED2 = 1 ,LED3 = 1;
else if(userInfo.num >= 30) LED0 = 1, LED1 = 1, LED2 = 1 ,LED3 = 1;
else LED0 = 0, LED1 = 0, LED2 = 0 ,LED3 = 0;
}
}
LED4 = userInfo.model;
}
void main()
{
int i = 0;
uchar str[30];
LcdInit();
Ds1302Init();
Uart_Init();
while(1)
{
Ds1302ReadTime();
LcdDisplay();
Detection();
sprintf(str, "%d\r\n", userInfo.model);
Bluetooth_Set(str);
Dispose();
}
}
void LcdDisplay()
{
// TODO 显示时间
LcdWriteCom(0x80);
LcdWriteData('m');
}
void Delay10ms(void) //<EFBFBD><EFBFBD><EFBFBD> 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}

BIN
pro

Binary file not shown.

745
pro.M51

@ -0,0 +1,745 @@
BL51 BANKED LINKER/LOCATER V6.22 04/29/2022 01:22:41 PAGE 1
BL51 BANKED LINKER/LOCATER V6.22, INVOKED BY:
D:\KEIL_V5\C51\BIN\BL51.EXE main.obj, lcd.obj, ds1302.obj, i2c.obj TO pro
MEMORY MODEL: SMALL
INPUT MODULES INCLUDED:
main.obj (MAIN)
lcd.obj (LCD)
ds1302.obj (DS1302)
i2c.obj (I2C)
D:\KEIL_V5\C51\LIB\C51S.LIB (?C_STARTUP)
D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CLDPTR)
D:\KEIL_V5\C51\LIB\C51S.LIB (PRINTF)
D:\KEIL_V5\C51\LIB\C51S.LIB (?C_INIT)
D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CLDOPTR)
D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CSTPTR)
D:\KEIL_V5\C51\LIB\C51S.LIB (?C?PLDIIDATA)
D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CCASE)
D:\KEIL_V5\C51\LIB\C51S.LIB (PUTCHAR)
LINK MAP OF MODULE: pro (MAIN)
TYPE BASE LENGTH RELOCATION SEGMENT NAME
-----------------------------------------------------
* * * * * * * D A T A M E M O R Y * * * * * * *
REG 0000H 0008H ABSOLUTE "REG BANK 0"
DATA 0008H 0008H UNIT ?DT?MAIN
DATA 0010H 0007H UNIT ?DT?DS1302
0017H 0009H *** GAP ***
BIT 0020H.0 0001H.1 UNIT _BIT_GROUP_
0021H.1 0000H.7 *** GAP ***
DATA 0022H 0034H UNIT _DATA_GROUP_
IDATA 0056H 0001H UNIT ?STACK
* * * * * * * C O D E M E M O R Y * * * * * * *
CODE 0000H 0003H ABSOLUTE
CODE 0003H 035CH UNIT ?PR?PRINTF?PRINTF
CODE 035FH 0105H UNIT ?PR?DETECTION?MAIN
CODE 0464H 00B1H UNIT ?PR?DISPOSE?MAIN
CODE 0515H 008EH UNIT ?C?LIB_CODE
CODE 05A3H 008CH UNIT ?C_C51STARTUP
CODE 062FH 004AH UNIT ?PR?_DS1302READ?DS1302
CODE 0679H 0041H UNIT ?PR?_I2CSENDBYTE?I2C
CODE 06BAH 003DH UNIT ?PR?MAIN?MAIN
CODE 06F7H 0035H UNIT ?PR?_DS1302WRITE?DS1302
CODE 072CH 002AH UNIT ?PR?_LCD1602_DELAY1MS?LCD
CODE 0756H 0027H UNIT ?PR?PUTCHAR?PUTCHAR
CODE 077DH 0026H UNIT ?PR?I2CREADBYTE?I2C
CODE 07A3H 0023H UNIT ?PR?DS1302INIT?DS1302
CODE 07C6H 0022H UNIT ?PR?_AT24C02READ?I2C
CODE 07E8H 0019H UNIT ?PR?LCDINIT?LCD
CODE 0801H 0019H UNIT ?PR?_AT24C02WRITE?I2C
CODE 081AH 0018H UNIT ?PR?_BLUETOOTH_SET?MAIN
BL51 BANKED LINKER/LOCATER V6.22 04/29/2022 01:22:41 PAGE 2
CODE 0832H 0016H UNIT ?PR?UART_INIT?MAIN
CODE 0848H 0016H UNIT ?PR?DS1302READTIME?DS1302
CODE 085EH 000FH UNIT ?PR?I2CSTART?I2C
CODE 086DH 000EH UNIT ?PR?_SEND_UART?MAIN
CODE 087BH 000EH UNIT ?CO?DS1302
CODE 0889H 000EH UNIT ?PR?DELAY10US?I2C
CODE 0897H 000DH UNIT ?PR?DELAY10MS?MAIN
CODE 08A4H 000AH UNIT ?PR?LCDDISPLAY?MAIN
CODE 08AEH 000AH UNIT ?PR?_LCDWRITECOM?LCD
CODE 08B8H 000AH UNIT ?PR?_LCDWRITEDATA?LCD
CODE 08C2H 000AH UNIT ?C_INITSEG
CODE 08CCH 000AH UNIT ?PR?I2CSTOP?I2C
CODE 08D6H 0007H UNIT ?PR?_US_DELAY?MAIN
CODE 08DDH 0005H UNIT ?CO?MAIN
OVERLAY MAP OF MODULE: pro (MAIN)
SEGMENT BIT_GROUP DATA_GROUP
+--> CALLED SEGMENT START LENGTH START LENGTH
---------------------------------------------------------------------
?C_C51STARTUP ----- ----- ----- -----
+--> ?PR?MAIN?MAIN
+--> ?C_INITSEG
?PR?MAIN?MAIN ----- ----- 0022H 0020H
+--> ?PR?LCDINIT?LCD
+--> ?PR?DS1302INIT?DS1302
+--> ?PR?UART_INIT?MAIN
+--> ?PR?DS1302READTIME?DS1302
+--> ?PR?LCDDISPLAY?MAIN
+--> ?PR?DETECTION?MAIN
+--> ?CO?MAIN
+--> ?PR?PRINTF?PRINTF
+--> ?PR?_BLUETOOTH_SET?MAIN
+--> ?PR?DISPOSE?MAIN
?PR?LCDINIT?LCD ----- ----- ----- -----
+--> ?PR?_LCDWRITECOM?LCD
?PR?_LCDWRITECOM?LCD ----- ----- ----- -----
+--> ?PR?_LCD1602_DELAY1MS?LCD
?PR?DS1302INIT?DS1302 ----- ----- ----- -----
+--> ?PR?_DS1302WRITE?DS1302
+--> ?CO?DS1302
?PR?DS1302READTIME?DS1302 ----- ----- ----- -----
+--> ?CO?DS1302
+--> ?PR?_DS1302READ?DS1302
?PR?LCDDISPLAY?MAIN ----- ----- ----- -----
+--> ?PR?_LCDWRITECOM?LCD
+--> ?PR?_LCDWRITEDATA?LCD
BL51 BANKED LINKER/LOCATER V6.22 04/29/2022 01:22:41 PAGE 3
?PR?_LCDWRITEDATA?LCD ----- ----- ----- -----
+--> ?PR?_LCD1602_DELAY1MS?LCD
?PR?DETECTION?MAIN ----- ----- 0042H 0002H
+--> ?PR?DELAY10MS?MAIN
?PR?PRINTF?PRINTF 0020H.0 0001H.1 0042H 0014H
+--> ?PR?PUTCHAR?PUTCHAR
?PR?_BLUETOOTH_SET?MAIN ----- ----- ----- -----
+--> ?PR?_SEND_UART?MAIN
+--> ?PR?_US_DELAY?MAIN
SYMBOL TABLE OF MODULE: pro (MAIN)
VALUE TYPE NAME
----------------------------------
------- MODULE MAIN
C:0000H SYMBOL _ICE_DUMMY_
D:0080H PUBLIC P0
D:0090H PUBLIC P1
D:00A0H PUBLIC P2
D:00B0H PUBLIC P3
B:0080H.2 PUBLIC LED0
B:00A8H.7 PUBLIC EA
B:0080H.1 PUBLIC LED1
B:0080H.0 PUBLIC LED2
B:0080H.4 PUBLIC LED3
B:0080H.3 PUBLIC LED4
C:086DH PUBLIC _Send_Uart
C:0832H PUBLIC Uart_Init
B:00B0H.7 PUBLIC IN
B:00A8H.4 PUBLIC ES
B:0098H.1 PUBLIC TI
C:035FH PUBLIC Detection
C:06BAH PUBLIC main
D:0099H PUBLIC SBUF
D:0087H PUBLIC PCON
D:0098H PUBLIC SCON
C:0897H PUBLIC Delay10ms
D:0089H PUBLIC TMOD
C:081AH PUBLIC _Bluetooth_Set
D:008DH PUBLIC TH1
D:0008H PUBLIC userInfo
D:008BH PUBLIC TL1
B:0088H.6 PUBLIC TR1
C:0464H PUBLIC Dispose
C:08D6H PUBLIC _us_delay
C:08A4H PUBLIC LcdDisplay
B:00B0H.6 PUBLIC OUT
B:0090H.2 PUBLIC key1
B:0090H.3 PUBLIC key2
------- PROC UART_INIT
C:0832H LINE# 34
BL51 BANKED LINKER/LOCATER V6.22 04/29/2022 01:22:41 PAGE 4
C:0832H LINE# 35
C:0832H LINE# 36
C:0835H LINE# 37
C:0838H LINE# 38
C:083BH LINE# 39
C:083EH LINE# 40
C:0841H LINE# 41
C:0843H LINE# 42
C:0845H LINE# 43
C:0847H LINE# 44
------- ENDPROC UART_INIT
------- PROC _US_DELAY
D:0007H SYMBOL t
C:08D6H LINE# 46
C:08D6H LINE# 47
C:08D6H LINE# 48
C:08DCH LINE# 49
------- ENDPROC _US_DELAY
------- PROC _SEND_UART
D:0007H SYMBOL value
C:086DH LINE# 51
C:086DH LINE# 52
C:086DH LINE# 53
C:086FH LINE# 54
C:0871H LINE# 55
C:0873H LINE# 56
C:0876H LINE# 57
C:0878H LINE# 58
C:087AH LINE# 59
------- ENDPROC _SEND_UART
------- PROC _BLUETOOTH_SET
D:0001H SYMBOL puf
C:081AH LINE# 61
C:081AH LINE# 62
C:081AH LINE# 63
C:0820H LINE# 64
C:0820H LINE# 65
C:0823H LINE# 66
C:0828H LINE# 67
C:082FH LINE# 68
C:0831H LINE# 69
------- ENDPROC _BLUETOOTH_SET
------- PROC DETECTION
------- DO
D:0042H SYMBOL i
------- ENDDO
C:035FH LINE# 71
C:035FH LINE# 72
C:035FH LINE# 73
C:0364H LINE# 74
C:0367H LINE# 75
C:0367H LINE# 76
C:036AH LINE# 77
C:036DH LINE# 78
C:037AH LINE# 79
C:037FH LINE# 80
C:037FH LINE# 81
BL51 BANKED LINKER/LOCATER V6.22 04/29/2022 01:22:41 PAGE 5
C:038FH LINE# 82
C:0392H LINE# 83
C:039AH LINE# 84
C:039CH LINE# 85
C:03A1H LINE# 86
C:03A1H LINE# 88
C:03A4H LINE# 89
C:03A4H LINE# 90
C:03A7H LINE# 91
C:03AAH LINE# 92
C:03B7H LINE# 93
C:03BCH LINE# 94
C:03BCH LINE# 95
C:03CCH LINE# 96
C:03CFH LINE# 97
C:03D7H LINE# 98
C:03D9H LINE# 99
C:03DEH LINE# 100
C:03DEH LINE# 102
C:03E1H LINE# 103
C:03E1H LINE# 104
C:03E4H LINE# 105
C:03E7H LINE# 106
C:03EFH LINE# 107
C:0400H LINE# 108
C:0400H LINE# 109
C:0410H LINE# 110
C:0413H LINE# 111
C:041BH LINE# 112
C:041DH LINE# 113
C:0422H LINE# 114
C:0422H LINE# 116
C:0425H LINE# 117
C:0425H LINE# 118
C:0428H LINE# 119
C:042BH LINE# 120
C:0433H LINE# 121
C:0441H LINE# 122
C:0441H LINE# 123
C:0451H LINE# 124
C:0454H LINE# 125
C:045CH LINE# 126
C:045EH LINE# 127
C:0463H LINE# 128
C:0463H LINE# 129
------- ENDPROC DETECTION
------- PROC DISPOSE
C:0464H LINE# 131
C:0464H LINE# 132
C:0464H LINE# 133
C:0470H LINE# 134
C:0470H LINE# 135
C:0473H LINE# 136
C:048CH LINE# 137
C:04AFH LINE# 138
C:04CEH LINE# 139
C:04EDH LINE# 140
BL51 BANKED LINKER/LOCATER V6.22 04/29/2022 01:22:41 PAGE 6
C:0504H LINE# 141
C:050CH LINE# 142
C:050CH LINE# 143
C:050CH LINE# 144
C:0514H LINE# 145
------- ENDPROC DISPOSE
------- PROC MAIN
------- DO
D:0022H SYMBOL i
D:0024H SYMBOL str
------- ENDDO
C:06BAH LINE# 147
C:06BAH LINE# 148
C:06BAH LINE# 149
C:06BFH LINE# 151
C:06C2H LINE# 152
C:06C5H LINE# 153
C:06C8H LINE# 154
C:06C8H LINE# 155
C:06C8H LINE# 156
C:06CBH LINE# 157
C:06CEH LINE# 158
C:06D1H LINE# 159
C:06E9H LINE# 160
C:06F2H LINE# 161
C:06F5H LINE# 162
------- ENDPROC MAIN
------- PROC LCDDISPLAY
C:08A4H LINE# 166
C:08A4H LINE# 167
C:08A4H LINE# 169
C:08A9H LINE# 170
------- ENDPROC LCDDISPLAY
------- PROC DELAY10MS
------- DO
D:0005H SYMBOL a
D:0006H SYMBOL b
D:0007H SYMBOL c
------- ENDDO
C:0897H LINE# 174
C:0897H LINE# 175
C:0897H LINE# 177
C:0899H LINE# 178
C:089BH LINE# 179
C:08A3H LINE# 180
------- ENDPROC DELAY10MS
------- ENDMOD MAIN
------- MODULE LCD
C:0000H SYMBOL _ICE_DUMMY_
D:0090H PUBLIC P1
D:00A0H PUBLIC P2
C:08B8H PUBLIC _LcdWriteData
B:0090H.6 PUBLIC LCD1602_RS
B:0090H.5 PUBLIC LCD1602_RW
C:07E8H PUBLIC LcdInit
B:0090H.4 PUBLIC LCD1602_E
BL51 BANKED LINKER/LOCATER V6.22 04/29/2022 01:22:41 PAGE 7
C:08AEH PUBLIC _LcdWriteCom
C:073DH PUBLIC _Lcd1602_Delay1ms
------- PROC L?0015
------- ENDPROC L?0015
------- PROC _LCD1602_DELAY1MS
D:0006H SYMBOL c
------- DO
D:0004H SYMBOL a
D:0005H SYMBOL b
------- ENDDO
C:073DH LINE# 11
C:073DH LINE# 12
C:073DH LINE# 14
C:0746H LINE# 15
C:0746H LINE# 16
C:0748H LINE# 17
C:0748H LINE# 18
C:074CH LINE# 19
C:074EH LINE# 20
C:0755H LINE# 22
------- ENDPROC _LCD1602_DELAY1MS
------- PROC _LCDWRITECOM
D:0007H SYMBOL com
C:08AEH LINE# 31
C:08AEH LINE# 32
C:08AEH LINE# 33
C:08B0H LINE# 34
C:08B2H LINE# 35
C:08B2H LINE# 37
C:08B2H LINE# 38
C:08B2H LINE# 40
C:08B2H LINE# 41
C:08B5H LINE# 42
C:08B7H LINE# 43
------- ENDPROC _LCDWRITECOM
------- PROC _LCDWRITEDATA
D:0007H SYMBOL dat
C:08B8H LINE# 74
C:08B8H LINE# 75
C:08B8H LINE# 76
C:08BAH LINE# 77
C:08BCH LINE# 78
C:08BCH LINE# 80
C:08BCH LINE# 81
C:08BCH LINE# 83
C:08BCH LINE# 84
C:08BFH LINE# 85
C:08C1H LINE# 86
------- ENDPROC _LCDWRITEDATA
------- PROC LCDINIT
C:07E8H LINE# 116
C:07E8H LINE# 117
C:07E8H LINE# 118
C:07EDH LINE# 119
C:07F2H LINE# 120
C:07F7H LINE# 121
C:07FCH LINE# 122
BL51 BANKED LINKER/LOCATER V6.22 04/29/2022 01:22:41 PAGE 8
------- ENDPROC LCDINIT
------- ENDMOD LCD
------- MODULE DS1302
C:0000H SYMBOL _ICE_DUMMY_
D:00B0H PUBLIC P3
C:06F7H PUBLIC _Ds1302Write
C:0848H PUBLIC Ds1302ReadTime
C:07A3H PUBLIC Ds1302Init
B:00B0H.5 PUBLIC SCLK
D:0010H PUBLIC TIME
B:00B0H.4 PUBLIC DSIO
C:0882H PUBLIC WRITE_RTC_ADDR
C:087BH PUBLIC READ_RTC_ADDR
B:00B0H.3 PUBLIC RST
C:062FH PUBLIC _Ds1302Read
------- PROC _DS1302WRITE
D:0007H SYMBOL addr
D:0005H SYMBOL dat
------- DO
D:0006H SYMBOL n
------- ENDDO
C:06F7H LINE# 14
C:06F7H LINE# 15
C:06F7H LINE# 17
C:06F9H LINE# 18
C:06FAH LINE# 20
C:06FCH LINE# 21
C:06FDH LINE# 22
C:06FFH LINE# 23
C:0700H LINE# 25
C:0702H LINE# 26
C:0702H LINE# 27
C:0706H LINE# 28
C:070AH LINE# 29
C:070CH LINE# 30
C:070DH LINE# 31
C:070FH LINE# 32
C:0710H LINE# 33
C:0714H LINE# 34
C:0716H LINE# 35
C:0716H LINE# 36
C:071AH LINE# 37
C:071EH LINE# 38
C:0720H LINE# 39
C:0721H LINE# 40
C:0723H LINE# 41
C:0724H LINE# 42
C:0728H LINE# 44
C:072AH LINE# 45
C:072BH LINE# 46
------- ENDPROC _DS1302WRITE
------- PROC _DS1302READ
D:0007H SYMBOL addr
------- DO
D:0005H SYMBOL n
D:0006H SYMBOL dat
BL51 BANKED LINKER/LOCATER V6.22 04/29/2022 01:22:41 PAGE 9
D:0007H SYMBOL dat1
------- ENDDO
C:062FH LINE# 48
C:062FH LINE# 49
C:062FH LINE# 51
C:0631H LINE# 52
C:0632H LINE# 54
C:0634H LINE# 55
C:0635H LINE# 56
C:0637H LINE# 57
C:0638H LINE# 59
C:063AH LINE# 60
C:063AH LINE# 61
C:063EH LINE# 62
C:0642H LINE# 63
C:0644H LINE# 64
C:0645H LINE# 65
C:0647H LINE# 66
C:0648H LINE# 67
C:064CH LINE# 68
C:064DH LINE# 69
C:064FH LINE# 70
C:064FH LINE# 71
C:0654H LINE# 72
C:0660H LINE# 73
C:0662H LINE# 74
C:0663H LINE# 75
C:0665H LINE# 76
C:0666H LINE# 77
C:066AH LINE# 79
C:066CH LINE# 80
C:066DH LINE# 81
C:066FH LINE# 82
C:0670H LINE# 83
C:0672H LINE# 84
C:0673H LINE# 85
C:0675H LINE# 86
C:0676H LINE# 87
C:0678H LINE# 88
------- ENDPROC _DS1302READ
------- PROC DS1302INIT
------- DO
D:0004H SYMBOL n
------- ENDDO
C:07A3H LINE# 90
C:07A3H LINE# 91
C:07A3H LINE# 93
C:07AAH LINE# 94
C:07ACH LINE# 95
C:07ACH LINE# 96
C:07BBH LINE# 97
C:07BFH LINE# 98
------- ENDPROC DS1302INIT
------- PROC DS1302READTIME
------- DO
D:0003H SYMBOL n
------- ENDDO
BL51 BANKED LINKER/LOCATER V6.22 04/29/2022 01:22:41 PAGE 10
C:0848H LINE# 101
C:0848H LINE# 102
C:0848H LINE# 104
C:084AH LINE# 105
C:084AH LINE# 106
C:0859H LINE# 107
C:085DH LINE# 108
------- ENDPROC DS1302READTIME
------- ENDMOD DS1302
------- MODULE I2C
C:0000H SYMBOL _ICE_DUMMY_
D:00A0H PUBLIC P2
C:0679H PUBLIC _I2cSendByte
C:08CCH PUBLIC I2cStop
C:088EH PUBLIC Delay10us
B:00A0H.0 PUBLIC SDA
C:07C6H PUBLIC _At24c02Read
B:00A0H.1 PUBLIC SCL
C:085EH PUBLIC I2cStart
C:0801H PUBLIC _At24c02Write
C:077DH PUBLIC I2cReadByte
C:0889H SYMBOL L?0024
------- PROC L?0023
------- ENDPROC L?0023
C:0889H SYMBOL L?0024
------- PROC DELAY10US
------- DO
D:0006H SYMBOL a
D:0007H SYMBOL b
------- ENDDO
C:088EH LINE# 10
C:088EH LINE# 11
C:088EH LINE# 13
C:0890H LINE# 14
C:0896H LINE# 16
------- ENDPROC DELAY10US
------- PROC I2CSTART
C:085EH LINE# 25
C:085EH LINE# 26
C:085EH LINE# 27
C:0860H LINE# 28
C:0860H LINE# 29
C:0860H LINE# 30
C:0863H LINE# 31
C:0865H LINE# 32
C:0868H LINE# 33
C:086AH LINE# 34
------- ENDPROC I2CSTART
------- PROC I2CSTOP
C:08CCH LINE# 44
C:08CCH LINE# 45
C:08CCH LINE# 46
C:08CEH LINE# 47
C:08CEH LINE# 48
C:08CEH LINE# 49
C:08D1H LINE# 50
BL51 BANKED LINKER/LOCATER V6.22 04/29/2022 01:22:41 PAGE 11
C:08D3H LINE# 51
------- ENDPROC I2CSTOP
------- PROC _I2CSENDBYTE
D:0005H SYMBOL dat
------- DO
D:0003H SYMBOL a
D:0002H SYMBOL b
------- ENDDO
C:0679H LINE# 61
C:067BH LINE# 62
C:067BH LINE# 63
C:067EH LINE# 64
C:067EH LINE# 65
C:067EH LINE# 66
C:0689H LINE# 67
C:068DH LINE# 68
C:068DH LINE# 69
C:068DH LINE# 70
C:0690H LINE# 71
C:0692H LINE# 72
C:0695H LINE# 73
C:0699H LINE# 74
C:069BH LINE# 75
C:069EH LINE# 76
C:06A0H LINE# 77
C:06A3H LINE# 78
C:06A3H LINE# 79
C:06A4H LINE# 80
C:06AAH LINE# 81
C:06AAH LINE# 82
C:06ACH LINE# 83
C:06AFH LINE# 84
C:06B2H LINE# 85
C:06B2H LINE# 86
C:06B2H LINE# 87
C:06B4H LINE# 88
C:06B7H LINE# 89
C:06B9H LINE# 90
------- ENDPROC _I2CSENDBYTE
------- PROC I2CREADBYTE
------- DO
D:0005H SYMBOL a
D:0004H SYMBOL dat
------- ENDDO
C:077DH LINE# 99
C:077DH LINE# 100
C:077DH LINE# 101
C:0780H LINE# 102
C:0782H LINE# 103
C:0785H LINE# 104
C:0785H LINE# 105
C:0785H LINE# 106
C:0787H LINE# 107
C:078AH LINE# 108
C:078EH LINE# 109
C:0794H LINE# 110
C:0797H LINE# 111
BL51 BANKED LINKER/LOCATER V6.22 04/29/2022 01:22:41 PAGE 12
C:0799H LINE# 112
C:079CH LINE# 113
C:07A0H LINE# 114
C:07A2H LINE# 115
------- ENDPROC I2CREADBYTE
------- PROC _AT24C02WRITE
D:0001H SYMBOL addr
D:0004H SYMBOL dat
C:0801H LINE# 125
C:0805H LINE# 126
C:0805H LINE# 127
C:0808H LINE# 128
C:080DH LINE# 129
C:0812H LINE# 130
C:0817H LINE# 131
------- ENDPROC _AT24C02WRITE
------- PROC _AT24C02READ
D:0004H SYMBOL addr
------- DO
D:0005H SYMBOL num
------- ENDDO
C:07C6H LINE# 140
C:07C8H LINE# 141
C:07C8H LINE# 143
C:07CBH LINE# 144
C:07D0H LINE# 145
C:07D5H LINE# 146
C:07D8H LINE# 147
C:07DDH LINE# 148
C:07E2H LINE# 149
C:07E5H LINE# 150
C:07E7H LINE# 151
------- ENDPROC _AT24C02READ
------- ENDMOD I2C
------- MODULE ?C?CLDPTR
C:0515H PUBLIC ?C?CLDPTR
------- ENDMOD ?C?CLDPTR
------- MODULE PRINTF
D:0042H PUBLIC ?_PRINTF517?BYTE
D:0042H PUBLIC ?_PRINTF?BYTE
D:0042H PUBLIC ?_SPRINTF517?BYTE
D:0042H PUBLIC ?_SPRINTF?BYTE
C:0065H PUBLIC _PRINTF
C:0065H PUBLIC _PRINTF517
C:005FH PUBLIC _SPRINTF
C:005FH PUBLIC _SPRINTF517
------- ENDMOD PRINTF
------- MODULE ?C?CLDOPTR
C:052EH PUBLIC ?C?CLDOPTR
------- ENDMOD ?C?CLDOPTR
------- MODULE ?C?CSTPTR
C:055BH PUBLIC ?C?CSTPTR
------- ENDMOD ?C?CSTPTR
BL51 BANKED LINKER/LOCATER V6.22 04/29/2022 01:22:41 PAGE 13
------- MODULE ?C?PLDIIDATA
C:056DH PUBLIC ?C?PLDIIDATA
------- ENDMOD ?C?PLDIIDATA
------- MODULE ?C?CCASE
C:057DH PUBLIC ?C?CCASE
------- ENDMOD ?C?CCASE
------- MODULE PUTCHAR
C:0756H PUBLIC _PUTCHAR
------- ENDMOD PUTCHAR
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_AT24C02WRITE?I2C
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_AT24C02READ?I2C
Program Size: data=77.1 xdata=0 code=2274
LINK/LOCATE RUN COMPLETE. 2 WARNING(S), 0 ERROR(S)

38
pro.build_log.htm

@ -0,0 +1,38 @@
<html>
<body>
<pre>
<h1>µVision Build Log</h1>
<h2>Tool Versions:</h2>
IDE-Version: ¦ÌVision V5.25.2.0
Copyright (C) 2018 ARM Ltd and ARM Germany GmbH. All rights reserved.
License Information: sasasa QY, asas, LIC=14RDY-I2Q34-B1DP0-B3MQL-18VH6-7EFQD
Tool Versions:
Toolchain: PK51 Prof. Developers Kit Version: 9.56.0.0
Toolchain Path: D:\Keil_v5\C51\BIN
C Compiler: C51.exe V9.56.0.0
Assembler: A51.exe V8.2.5.0
Linker/Locator: BL51.exe V6.22
Library Manager: LIB51.exe V4.30.1.0
Hex Converter: OH51.exe V2.7.0.0
CPU DLL: S8051.DLL V3.106.0.0
Dialog DLL: DP51.DLL V2.63.0.0
<h2>Project:</h2>
E:\ÏîÄ¿\¼æÖ°ÏîÄ¿\20220428-IntelligentLighting\pro.uvproj
Project File Date: 04/29/2022
<h2>Output:</h2>
Build target 'Target 1'
compiling main.c...
linking...
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_AT24C02WRITE?I2C
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?_AT24C02READ?I2C
Program Size: data=77.1 xdata=0 code=2274
creating hex file from "pro"...
"pro" - 0 Error(s), 2 Warning(s).
Build Time Elapsed: 00:00:00
</pre>
</body>
</html>

173
pro.hex

@ -0,0 +1,173 @@
:0508DD0025640D0A0076
:10083200758921759850758DFD858D8BE4F587D26C
:06084200AFD2ACD28E2201
:0708D600AE071FEE70FA22CD
:0E086D00C2ACC2998F993099FDC299D2AC22CB
:10081A00120515FF601112086D7F051208D67401C2
:08082A0029F9E43AFA80E92201
:10035F00E4F542F54320923A120897209212E50BEA
:10036F00450A7007F50A750B018005E4F50AF50BD0
:10037F00C3E5439432E54264809480501020920D7F
:10038F001208970543E54370E7054280E3E4F54221
:10039F00F54320933A120897209312E50D450C7000
:1003AF0007F50C750D018005E4F50CF50DC3E5435C
:1003BF009432E54264809480501020930D12089778
:1003CF000543E54370E7054280E3E4F542F543203A
:1003DF00B74112089720B7190509E50970020508FA
:1003EF00D39463E50864809480400675080075090E
:1003FF0063C3E5439432E54264809480501020B784
:10040F000D1208970543E54370E7054280E3E4F5D5
:10041F0042F54320B63E12089720B616E509150996
:10042F0070021508C3E508648094805005E4F50850
:10043F00F509C3E5439432E542648094805010205F
:10044F00B60D1208970543E54370E7054280E3E4D4
:04045F00F542F5432A
:010463002276
:10046400E50D450C6009E50B450A6003020504C36C
:10047400E50F9432E50E64809480400302050CE598
:100484000B450A600302050CC3E509940AE50864F8
:100494008094805016E5099400E5086480948040B7
:1004A4000AC282C281C280D284805DC3E509940AF3
:1004B400E508648094804012E5099414E50864809A
:1004C40094805006C282C2818030C3E5099414E549
:1004D40008648094804012E509941EE508648094C1
:1004E400805006C282D2818011C3E509941EE508BA
:1004F40064809480400AD282D281D280D2848008DF
:10050400C282C281C280C284E50A450B24FF928361
:0105140022C4
:1006BA00E4F522F5231207E81207A31208321208FA
:1006CA00481208A412035F7545FF7546087547DD91
:1006DA00850A48850B497B007A00792412005F7BE2
:0D06EA00007A00792412081A12046480D1ED
:0A08A4007F801208AE7F6D0208B8D5
:0C0897007F017E267D82DDFEDEFADFF6AA
:0108A3002232
:10072C00C2958FA07F017E0012073DD2947F057E7B
:01073C0000BC
:10073D00D3EF9400EE9400400F7DC77C01DCFEDD0D
:08074D00FAEF1F70EB1E80E8BB
:010755002281
:0A08AE00C294C29612072CC29422D5
:0A08B800C294D29612072CC29422BB
:1007E8007F381208AE7F0C1208AE7F061208AE7F63
:0907F800011208AE7F800208AE78
:0E087B0081838587898B8D80828486888A8C14
:0908C200071000012328040422A0
:1006F700C2B300C2B500D2B300E4FEEF1392B4EF69
:10070700C313FFD2B500C2B5000EBE08EEE4FEED7E
:100717001392B4EDC313FDD2B500C2B5000EBE08E7
:04072700EEC2B3006B
:01072B0022AB
:10062F00C2B300C2B500D2B300E4FDEF1392B4EF32
:10063F00C313FFD2B500C2B5000DBD08EE00E4FD37
:10064F00A2B4E433FFC43333335480FCEEC3134CF2
:10065F00FED2B500C2B5000DBD08E5C2B300D2B5DC
:09066F0000C2B400D2B400AF06D1
:01067800225F
:1007A300E4FD7F8E1206F7E4FCEC90088293FF745D
:1007B300102CF8E6FD1206F70CBC07ED7D807F8E4A
:0307C3000206F734
:10084800E4FBEB90087B93FF12062F74102BF8A69D
:05085800070BBB07EDDA
:01085D002278
:0508890012088ED2A14F
:08088E007F017E02DEFEDFFAAD
:01089600223F
:0F085E00D2A0120889C2A012088EC2A102088E71
:0A08CC00C2A0120889D2A002088E13
:02067900AD07CB
:10067B00E4FBFAEDC4131313540124FF92A0ED25F0
:10068B00E0FD120889C2A112088E0BBB08E5D2A0AF
:10069B0012088ED2A130A00F0AEAD394C840F6C23A
:0E06AB00A112088E7F0022C2A112088E7F01CC
:0106B900221E
:10077D00E4FDFCD2A012088ED2A112088EEC25E069
:10078D00FCA2A0E433420412088EC2A112088E0D01
:05079D00BD08E5AF04FA
:0107A2002234
:10080100AC05A90712085E7FA0120679AF01120696
:0908110079AF041206790208CC4B
:0207C600AC077E
:1007C80012085E7FA0120679AF0412067912085E3D
:0F07D8007FA112067912077DAD071208CCAF057D
:0107E70022EF
:030000000205A353
:0C05A300787FE4F6D8FD7581550205EA6A
:10051500BB010689828A83E0225002E722BBFE02E4
:09052500E32289828A83E4932217
:10000300E5512445F8E60551227842300702784548
:10001300E475F00112056D0205152000EB7F2ED269
:10002300008018EF540F2490D43440D4FF30040BD5
:10003300EF24BFB41A0050032461FFE55260021598
:10004300520555E5557002055430070D7842E475A5
:10005300F00112056DEF02055B0207567403D20728
:100063008003E4C207F5518B428A438944E4F55285
:10007300F554F555E55260077F2012003E80F57573
:1000830053FFC201C200C202C203C205C206C208B4
:1000930012000CFF700D3007057F0012004FAF55A3
:1000A300AE5422B4255FC2D5C20412000CFF24D083
:1000B300B40A00501A75F00A785230D50508B6FF15
:1000C3000106C6A426F620D5047002D20380D924E3
:1000D300CFB41A00EF5004C2E5D20402024FD2019A
:1000E30080C6D20080C0D20280BCD2D580BAD205ED
:1000F30080B47F2012003E2002077401B5520040F5
:10010300F1120003FF12003E020077D208D20680EC
:1001130095120003FB120003FA120003F94A4B7015
:100123000679207A037BFF20022EE552602A7E00A7
:100133008E8275830012052E60060EEE655370F0F5
:10014300C2D5EBC0E0EAC0E0E9C0E0EE120296D00F
:10015300E0F9D0E0FAD0E0FB120515FF60AAEBC08E
:10016300E0EAC0E0E9C0E012003ED0E02401F9D0AB
:10017300E03400FAD0E0FBE5530460DCD553D980CA
:10018300877BFF7A027992D202809C791080027970
:1001930008C206C2088008D2D5790A8004790AC247
:1001A300D5E553047002F553E4FAFDFEFF12000394
:1001B300FC7B08200113120003FD7B1030000A12A0
:1001C3000003FE120003FF7B20EC3382D592D5504F
:1001D30013C3E43000069FFFE49EFEE42001039D69
:1001E300FDE49CFCE4CBF8C201EC700CCFCECDCC8B
:1001F300E824F8F870F38017C3EF33FFEE33FEED16
:1002030033FDEC33FCEB33FB994002FB0FD8E9EBF6
:10021300300105F8D0E0C448B201C0E00AEC4D4E0D
:100223004F78207B0070C2EAB5530040BCC0E01297
:100233000298D0F0D0E0200104C4C0E0C4B201C0F1
:10024300F0120027D0F0D5F0EB02007712057D0104
:100253001453018E5800E54C00E14201924F019A7C
:0F02630044019A4900FA4301A0550184460184E1
:100272004501844703405000E92D00ED2E01102B6B
:1002820000F123010E2003292A00A94800000108D9
:100292003F3F3F00790AA2D5200314300509B91067
:1002A200020404B9080104A2D52006025001042068
:1002B20002689202B552005034C0E07F2030031928
:1002C2007F30A20272067205500F1202EFC202C202
:1002D20006C205C2087F30800F300503E9C0E01274
:1002E200003E300503D0E0F9D0E0B552CC3005171E
:1002F2007F30B9100C12003E7F583004077F78809F
:1003020003B9080312003E3002057F2D02003E7F32
:10031200202008F87F2B2006F322920280CF286E3D
:10032200756C6C2900D2011200033001F8C2017809
:100332005230D50108F60200A92D50434958120047
:10034200032403B405004001E490033B9312002F01
:0D035200743A12002FD20375520402018E7E
:1005AF000206BAE493A3F8E493A34003F68001F2A2
:1005BF0008DFF48029E493A3F85407240CC8C3334D
:1005CF00C4540F4420C8834004F456800146F6DF1C
:1005DF00E4800B01020408102040809008C2E47EE2
:1005EF00019360BCA3FF543F30E509541FFEE49311
:1005FF00A360010ECF54C025E060A840B8E493A3D8
:10060F00FAE493A3F8E493A3C8C582C8CAC583CA02
:10061F00F0A3C8C582C8CAC583CADFE9DEE780BEBA
:0108CB00002C
:10052E00BB010CE58229F582E5833AF583E0225082
:10053E0006E92582F8E622BBFE06E92582F8E222CC
:0D054E00E58229F582E5833AF583E49322E6
:10055B00BB010689828A83F0225002F722BBFE017F
:02056B00F32279
:10056D00FAE6FB0808E6F925F0F618E6CA3AF6228F
:10057D00D083D082F8E4937012740193700DA3A30D
:10058D0093F8740193F5828883E473740293686021
:06059D00EFA3A3A380DF21
:10075600EFB40A07740D120761740A309811A8994C
:10076600B8130CC2983098FDA899C298B811F63003
:0707760099FDC299F59922DB
:00000001FF

5
pro.lnp

@ -0,0 +1,5 @@
"main.obj",
"lcd.obj",
"ds1302.obj",
"i2c.obj"
TO "pro"

1904
pro.uvgui.QY

File diff suppressed because one or more lines are too long

1877
pro.uvgui.S

File diff suppressed because one or more lines are too long

1913
pro.uvgui.asus

File diff suppressed because one or more lines are too long

240
pro.uvopt

@ -0,0 +1,240 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
<SchemaVersion>1.0</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Extensions>
<cExt>*.c</cExt>
<aExt>*.s*; *.src; *.a*</aExt>
<oExt>*.obj; *.o</oExt>
<lExt>*.lib</lExt>
<tExt>*.txt; *.h; *.inc</tExt>
<pExt>*.plm</pExt>
<CppX>*.cpp</CppX>
<nMigrate>0</nMigrate>
</Extensions>
<DaveTm>
<dwLowDateTime>0</dwLowDateTime>
<dwHighDateTime>0</dwHighDateTime>
</DaveTm>
<Target>
<TargetName>Target 1</TargetName>
<ToolsetNumber>0x0</ToolsetNumber>
<ToolsetName>MCS-51</ToolsetName>
<TargetOption>
<CLK51>12000000</CLK51>
<OPTTT>
<gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd>
<RunSim>1</RunSim>
<RunTarget>0</RunTarget>
<RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>0</HexSelection>
<FlashByte>65535</FlashByte>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
</OPTHX>
<OPTLEX>
<PageWidth>120</PageWidth>
<PageLength>65</PageLength>
<TabStop>8</TabStop>
<ListingPath>.\</ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
<CreateAListing>1</CreateAListing>
<CreateLListing>1</CreateLListing>
<CreateIListing>0</CreateIListing>
<AsmCond>1</AsmCond>
<AsmSymb>1</AsmSymb>
<AsmXref>0</AsmXref>
<CCond>1</CCond>
<CCode>0</CCode>
<CListInc>0</CListInc>
<CSymb>0</CSymb>
<LinkerCodeListing>0</LinkerCodeListing>
</ListingPage>
<OPTXL>
<LMap>1</LMap>
<LComments>1</LComments>
<LGenerateSymbols>1</LGenerateSymbols>
<LLibSym>1</LLibSym>
<LLines>1</LLines>
<LLocSym>1</LLocSym>
<LPubSym>1</LPubSym>
<LXref>0</LXref>
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
<CpuCode>255</CpuCode>
<Books>
<Book>
<Number>0</Number>
<Title>Data Sheet</Title>
<Path>DATASHTS\ATMEL\AT89C51_DS.PDF</Path>
</Book>
<Book>
<Number>1</Number>
<Title>Instruction Set Manual</Title>
<Path>DATASHTS\ATMEL\AT_C51ISM.PDF</Path>
</Book>
</Books>
<DebugOpt>
<uSim>1</uSim>
<uTrg>0</uTrg>
<sLdApp>1</sLdApp>
<sGomain>1</sGomain>
<sRbreak>1</sRbreak>
<sRwatch>1</sRwatch>
<sRmem>1</sRmem>
<sRfunc>1</sRfunc>
<sRbox>1</sRbox>
<tLdApp>1</tLdApp>
<tGomain>0</tGomain>
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
<tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>0</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>-1</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
<sDlgPa></sDlgPa>
<sIfile></sIfile>
<tDll></tDll>
<tDllPa></tDllPa>
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon></pMon>
</DebugOpt>
<TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
<Key>DLGDP51</Key>
<Name>(98=-1,-1,-1,-1,0)(82=-1,-1,-1,-1,0)(83=-1,-1,-1,-1,0)(84=-1,-1,-1,-1,0)(85=-1,-1,-1,-1,0)(80=-1,-1,-1,-1,0)(91=-1,-1,-1,-1,0)(92=-1,-1,-1,-1,0)</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
<aLwin>1</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<aPa>0</aPa>
<viewmode>1</viewmode>
<vrSel>0</vrSel>
<aSym>0</aSym>
<aTbox>0</aTbox>
<AscS1>0</AscS1>
<AscS2>0</AscS2>
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
<Group>
<GroupName>Source Group 1</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>1</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\main.c</PathWithFileName>
<FilenameWithoutPath>main.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\lcd.c</PathWithFileName>
<FilenameWithoutPath>lcd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>3</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\ds1302.c</PathWithFileName>
<FilenameWithoutPath>ds1302.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>4</FileNumber>
<FileType>1</FileType>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\i2c.c</PathWithFileName>
<FilenameWithoutPath>i2c.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
</ProjectOpt>

405
pro.uvproj

@ -0,0 +1,405 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
<SchemaVersion>1.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Targets>
<Target>
<TargetName>Target 1</TargetName>
<ToolsetNumber>0x0</ToolsetNumber>
<ToolsetName>MCS-51</ToolsetName>
<uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>AT89C51</Device>
<Vendor>Atmel</Vendor>
<Cpu>IRAM(0-0x7F) IROM(0-0xFFF) CLOCK(24000000)</Cpu>
<FlashUtilSpec></FlashUtilSpec>
<StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
<FlashDriverDll></FlashDriverDll>
<DeviceId>2976</DeviceId>
<RegisterFile>REGX51.H</RegisterFile>
<MemoryEnv></MemoryEnv>
<Cmp></Cmp>
<Asm></Asm>
<Linker></Linker>
<OHString></OHString>
<InfinionOptionDll></InfinionOptionDll>
<SLE66CMisc></SLE66CMisc>
<SLE66AMisc></SLE66AMisc>
<SLE66LinkerMisc></SLE66LinkerMisc>
<SFDFile></SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
<BinPath></BinPath>
<IncludePath></IncludePath>
<LibPath></LibPath>
<RegisterFilePath>Atmel\</RegisterFilePath>
<DBRegisterFilePath>Atmel\</DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
<ButtonStop>0</ButtonStop>
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
<OutputDirectory>.\</OutputDirectory>
<OutputName>pro</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
<ListingPath>.\</ListingPath>
<HexFormatSelection>0</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
<BeforeCompile>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopU1X>0</nStopU1X>
<nStopU2X>0</nStopU2X>
</BeforeCompile>
<BeforeMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopB1X>0</nStopB1X>
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopA1X>0</nStopA1X>
<nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
<SVCSIdString></SVCSIdString>
</TargetCommonOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>1</IncludeInBuild>
<AlwaysBuild>0</AlwaysBuild>
<GenerateAssemblyFile>0</GenerateAssemblyFile>
<AssembleAssemblyFile>0</AssembleAssemblyFile>
<PublicsOnly>0</PublicsOnly>
<StopOnExitCode>3</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
<BankNo>65535</BankNo>
</CommonProperty>
<DllOption>
<SimDllName>S8051.DLL</SimDllName>
<SimDllArguments></SimDllArguments>
<SimDlgDll>DP51.DLL</SimDlgDll>
<SimDlgDllArguments>-p51</SimDlgDllArguments>
<TargetDllName>S8051.DLL</TargetDllName>
<TargetDllArguments></TargetDllArguments>
<TargetDlgDll>TP51.DLL</TargetDlgDll>
<TargetDlgDllArguments>-p51</TargetDlgDllArguments>
</DllOption>
<DebugOption>
<OPTHX>
<HexSelection>0</HexSelection>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
<Simulator>
<UseSimulator>1</UseSimulator>
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
<RunToMain>1</RunToMain>
<RestoreBreakpoints>1</RestoreBreakpoints>
<RestoreWatchpoints>1</RestoreWatchpoints>
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
<RestoreFunctions>1</RestoreFunctions>
<RestoreToolbox>1</RestoreToolbox>
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
<RestoreSysVw>1</RestoreSysVw>
</Simulator>
<Target>
<UseTarget>0</UseTarget>
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
<RunToMain>0</RunToMain>
<RestoreBreakpoints>1</RestoreBreakpoints>
<RestoreWatchpoints>1</RestoreWatchpoints>
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
<RestoreFunctions>0</RestoreFunctions>
<RestoreToolbox>1</RestoreToolbox>
<RestoreTracepoints>0</RestoreTracepoints>
<RestoreSysVw>1</RestoreSysVw>
</Target>
<RunDebugAfterBuild>0</RunDebugAfterBuild>
<TargetSelection>-1</TargetSelection>
<SimDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
</SimDlls>
<TargetDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
<Driver></Driver>
</TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
<UseTargetDll>0</UseTargetDll>
<UseExternalTool>0</UseExternalTool>
<RunIndependent>0</RunIndependent>
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
<Capability>0</Capability>
<DriverSelection>-1</DriverSelection>
</Flash1>
<bUseTDR>0</bUseTDR>
<Flash2></Flash2>
<Flash3></Flash3>
<Flash4></Flash4>
<pFcarmOut></pFcarmOut>
<pFcarmGrp></pFcarmGrp>
<pFcArmRoot></pFcArmRoot>
<FcArmLst>0</FcArmLst>
</Utilities>
<Target51>
<Target51Misc>
<MemoryModel>0</MemoryModel>
<RTOS>0</RTOS>
<RomSize>2</RomSize>
<DataHold>0</DataHold>
<XDataHold>0</XDataHold>
<UseOnchipRom>0</UseOnchipRom>
<UseOnchipArithmetic>0</UseOnchipArithmetic>
<UseMultipleDPTR>0</UseMultipleDPTR>
<UseOnchipXram>0</UseOnchipXram>
<HadIRAM>1</HadIRAM>
<HadXRAM>0</HadXRAM>
<HadIROM>1</HadIROM>
<Moda2>0</Moda2>
<Moddp2>0</Moddp2>
<Modp2>0</Modp2>
<Mod517dp>0</Mod517dp>
<Mod517au>0</Mod517au>
<Mode2>0</Mode2>
<useCB>0</useCB>
<useXB>0</useXB>
<useL251>0</useL251>
<useA251>0</useA251>
<Mx51>0</Mx51>
<ModC812>0</ModC812>
<ModCont>0</ModCont>
<Lp51>0</Lp51>
<useXBS>0</useXBS>
<ModDA>0</ModDA>
<ModAB2>0</ModAB2>
<Mx51P>0</Mx51P>
<hadXRAM2>0</hadXRAM2>
<uocXram2>0</uocXram2>
<hadXRAM3>0</hadXRAM3>
<ModC2>0</ModC2>
<ModH2>0</ModH2>
<Mdu_R515>0</Mdu_R515>
<Mdu_F120>0</Mdu_F120>
<Psoc>0</Psoc>
<hadIROM2>0</hadIROM2>
<hadIROM3>0</hadIROM3>
<ModSmx2>0</ModSmx2>
<cBanks>0</cBanks>
<xBanks>0</xBanks>
<OnChipMemories>
<RCB>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0xffff</Size>
</RCB>
<RXB>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</RXB>
<Ocm1>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm1>
<Ocm2>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm2>
<Ocm3>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm3>
<Ocr1>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocr1>
<Ocr2>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocr2>
<Ocr3>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocr3>
<IRO>
<Type>1</Type>
<StartAddress>0x0</StartAddress>
<Size>0x1000</Size>
</IRO>
<IRA>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x80</Size>
</IRA>
<XRA>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</XRA>
<XRA512>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</XRA512>
<IROM512>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</IROM512>
<XRA513>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</XRA513>
<IROM513>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</IROM513>
</OnChipMemories>
</Target51Misc>
<C51>
<RegisterColoring>0</RegisterColoring>
<VariablesInOrder>0</VariablesInOrder>
<IntegerPromotion>1</IntegerPromotion>
<uAregs>0</uAregs>
<UseInterruptVector>1</UseInterruptVector>
<Fuzzy>3</Fuzzy>
<Optimize>8</Optimize>
<WarningLevel>2</WarningLevel>
<SizeSpeed>1</SizeSpeed>
<ObjectExtend>1</ObjectExtend>
<ACallAJmp>0</ACallAJmp>
<InterruptVectorAddress>0</InterruptVectorAddress>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</C51>
<Ax51>
<UseMpl>0</UseMpl>
<UseStandard>1</UseStandard>
<UseCase>0</UseCase>
<UseMod51>0</UseMod51>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</Ax51>
<Lx51>
<useFile>0</useFile>
<linkonly>0</linkonly>
<UseMemoryFromTarget>1</UseMemoryFromTarget>
<CaseSensitiveSymbols>0</CaseSensitiveSymbols>
<WarningLevel>2</WarningLevel>
<DataOverlaying>1</DataOverlaying>
<OverlayString></OverlayString>
<MiscControls></MiscControls>
<DisableWarningNumbers></DisableWarningNumbers>
<LinkerCmdFile></LinkerCmdFile>
<Assign></Assign>
<ReserveString></ReserveString>
<CClasses></CClasses>
<UserClasses></UserClasses>
<CSection></CSection>
<UserSection></UserSection>
<CodeBaseAddress></CodeBaseAddress>
<XDataBaseAddress></XDataBaseAddress>
<PDataBaseAddress></PDataBaseAddress>
<BitBaseAddress></BitBaseAddress>
<DataBaseAddress></DataBaseAddress>
<IDataBaseAddress></IDataBaseAddress>
<Precede></Precede>
<Stack></Stack>
<CodeSegmentName></CodeSegmentName>
<XDataSegmentName></XDataSegmentName>
<BitSegmentName></BitSegmentName>
<DataSegmentName></DataSegmentName>
<IDataSegmentName></IDataSegmentName>
</Lx51>
</Target51>
</TargetOption>
<Groups>
<Group>
<GroupName>Source Group 1</GroupName>
<Files>
<File>
<FileName>main.c</FileName>
<FileType>1</FileType>
<FilePath>.\main.c</FilePath>
</File>
<File>
<FileName>lcd.c</FileName>
<FileType>1</FileType>
<FilePath>.\lcd.c</FilePath>
</File>
<File>
<FileName>ds1302.c</FileName>
<FileType>1</FileType>
<FilePath>.\ds1302.c</FilePath>
</File>
<File>
<FileName>i2c.c</FileName>
<FileType>1</FileType>
<FilePath>.\i2c.c</FilePath>
</File>
</Files>
</Group>
</Groups>
</Target>
</Targets>
</Project>
Loading…
Cancel
Save