?? ds1302.lst
字號(hào):
C51 COMPILER V8.02 DS1302 04/09/2008 00:26:08 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE DS1302
OBJECT MODULE PLACED IN DS1302.OBJ
COMPILER INVOKED BY: D:\Keil1\C51\BIN\C51.EXE DS1302.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG51.H>
2 #include <intrins.h>
3 #include "LCD1602.h"
4 #include "DS1302.h"
5 #define uint unsigned int
6 #define uchar unsigned char
7 sbit DS1302_CLK = P1^7; //實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳
*** ERROR C231 IN LINE 7 OF DS1302.C: 'DS1302_CLK': redefinition
8 sbit DS1302_IO = P1^6; //實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳
*** ERROR C231 IN LINE 8 OF DS1302.C: 'DS1302_IO': redefinition
9 sbit DS1302_RST = P1^5; //實(shí)時(shí)時(shí)鐘復(fù)位線引腳
*** ERROR C231 IN LINE 9 OF DS1302.C: 'DS1302_RST': redefinition
10 sbit wireless_1 = P3^0;
11 sbit wireless_2 = P3^1;
12 sbit wireless_3 = P3^2;
13 sbit wireless_4 = P3^3;
14 sbit ACC0 = ACC^0;
*** ERROR C231 IN LINE 14 OF DS1302.C: 'ACC0': redefinition
15 sbit ACC7 = ACC^7;
*** ERROR C231 IN LINE 15 OF DS1302.C: 'ACC7': redefinition
16 char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; //秒,分,時(shí)到日,月,年位閃的計(jì)數(shù)
17 sbit Set = P2^0; //模式切換鍵
18 sbit Up = P2^1; //加法按鈕
19 sbit Down = P2^2; //減法按鈕
20 sbit out = P2^3; //立刻跳出調(diào)整模式按鈕
21 sbit DQ = P1^0; //溫度傳送數(shù)據(jù)IO口
22 char done,count,temp,flag,up_flag,down_flag;
23 uchar temp_value; //溫度值
24 uchar TempBuffer[5],week_value[2];
25
26
27 void show_time(); //液晶顯示程序
28 /***********1602液晶顯示部分子程序****************/
29
30
31 //Port Definitions**********************************************************
32 sbit LcdRs = P2^5;
*** ERROR C231 IN LINE 32 OF DS1302.C: 'LcdRs': redefinition
33 sbit LcdRw = P2^6;
*** ERROR C231 IN LINE 33 OF DS1302.C: 'LcdRw': redefinition
34 sbit LcdEn = P2^7;
*** ERROR C231 IN LINE 34 OF DS1302.C: 'LcdEn': redefinition
35 sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數(shù)據(jù)端口
*** ERROR C231 IN LINE 35 OF DS1302.C: 'DBPort': redefinition
36
37 //內(nèi)部等待函數(shù)**************************************************************************
38 unsigned char LCD_Wait(void)
39 {
40 1 LcdRs=0;
41 1 LcdRw=1; _nop_();
42 1 LcdEn=1; _nop_();
43 1
44 1 LcdEn=0;
45 1 return DBPort;
46 1 }
C51 COMPILER V8.02 DS1302 04/09/2008 00:26:08 PAGE 2
*** ERROR C237 IN LINE 46 OF DS1302.C: 'LCD_Wait': function already has a body
47 //向LCD寫入命令或數(shù)據(jù)************************************************************
48 #define LCD_COMMAND 0 // Command
49 #define LCD_DATA 1 // Data
50 #define LCD_CLEAR_SCREEN 0x01 // 清屏
51 #define LCD_HOMING 0x02 // 光標(biāo)返回原點(diǎn)
52 void LCD_Write(bit style, unsigned char input)
53 {
54 1 LcdEn=0;
55 1 LcdRs=style;
56 1 LcdRw=0; _nop_();
57 1 DBPort=input; _nop_();//注意順序
58 1 LcdEn=1; _nop_();//注意順序
59 1 LcdEn=0; _nop_();
60 1 LCD_Wait();
61 1 }
*** ERROR C237 IN LINE 61 OF DS1302.C: 'LCD_Write': function already has a body
62
63 //設(shè)置顯示模式************************************************************
64 #define LCD_SHOW 0x04 //顯示開
65 #define LCD_HIDE 0x00 //顯示關(guān)
66
67 #define LCD_CURSOR 0x02 //顯示光標(biāo)
68 #define LCD_NO_CURSOR 0x00 //無光標(biāo)
69
70 #define LCD_FLASH 0x01 //光標(biāo)閃動(dòng)
71 #define LCD_NO_FLASH 0x00 //光標(biāo)不閃動(dòng)
72
73 void LCD_SetDisplay(unsigned char DisplayMode)
74 {
75 1 LCD_Write(LCD_COMMAND, 0x08|DisplayMode);
76 1 }
*** ERROR C237 IN LINE 76 OF DS1302.C: '_LCD_SetDisplay': function already has a body
77
78 //設(shè)置輸入模式************************************************************
79 #define LCD_AC_UP 0x02
80 #define LCD_AC_DOWN 0x00 // default
81
82 #define LCD_MOVE 0x01 // 畫面可平移
83 #define LCD_NO_MOVE 0x00 //default
84
85 void LCD_SetInput(unsigned char InputMode)
86 {
87 1 LCD_Write(LCD_COMMAND, 0x04|InputMode);
88 1 }
*** ERROR C237 IN LINE 88 OF DS1302.C: '_LCD_SetInput': function already has a body
89
90 //初始化LCD************************************************************
91 void LCD_Initial()
92 {
93 1 LcdEn=0;
94 1 LCD_Write(LCD_COMMAND,0x38); //8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣
95 1 LCD_Write(LCD_COMMAND,0x38);
96 1 LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //開啟顯示, 無光標(biāo)
97 1 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏
98 1 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC遞增, 畫面不動(dòng)
99 1 }
*** ERROR C237 IN LINE 99 OF DS1302.C: 'LCD_Initial': function already has a body
100
101 //液晶字符輸入的位置************************
102 void GotoXY(unsigned char x, unsigned char y)
103 {
C51 COMPILER V8.02 DS1302 04/09/2008 00:26:08 PAGE 3
104 1 if(y==0)
105 1 LCD_Write(LCD_COMMAND,0x80|x);
106 1 if(y==1)
107 1 LCD_Write(LCD_COMMAND,0x80|(x-0x40));
108 1 }
*** ERROR C237 IN LINE 108 OF DS1302.C: '_GotoXY': function already has a body
109
110 //將字符輸出到液晶顯示
111 void Print(unsigned char *str)
112 {
113 1 while(*str!='\0')
114 1 {
115 2 LCD_Write(LCD_DATA,*str);
116 2 str++;
117 2 }
118 1 }
*** ERROR C237 IN LINE 118 OF DS1302.C: '_Print': function already has a body
119
120
121
122
123
124
125 /***********DS1302時(shí)鐘部分子程序******************/
126 typedef struct __SYSTEMTIME__
127 {
128 unsigned char Second;
129 unsigned char Minute;
130 unsigned char Hour;
131 unsigned char Week;
132 unsigned char Day;
133 unsigned char Month;
134 unsigned char Year;
135 unsigned char DateString[11];
136 unsigned char TimeString[9];
137 }SYSTEMTIME; //定義的時(shí)間類型
*** ERROR C226 IN LINE 137 OF DS1302.C: '__SYSTEMTIME__': duplicate struct/union/enum tag
*** ERROR C141 IN LINE 137 OF DS1302.C: syntax error near 'SYSTEMTIME'
138 SYSTEMTIME CurrentTime;
139
140
141 #define AM(X) X
142 #define PM(X) (X+12) // 轉(zhuǎn)成24小時(shí)制
143 #define DS1302_SECOND 0x80 //時(shí)鐘芯片的寄存器位置,存放時(shí)間
144 #define DS1302_MINUTE 0x82
145 #define DS1302_HOUR 0x84
146 #define DS1302_WEEK 0x8A
147 #define DS1302_DAY 0x86
148 #define DS1302_MONTH 0x88
149 #define DS1302_YEAR 0x8C
150
151 void DS1302InputByte(unsigned char d) //實(shí)時(shí)時(shí)鐘寫入一字節(jié)(內(nèi)部函數(shù))
152 {
153 1 unsigned char i;
154 1 ACC = d;
155 1 for(i=8; i>0; i--)
156 1 {
157 2 DS1302_IO = ACC0; //相當(dāng)于匯編中的 RRC
158 2 DS1302_CLK = 1;
159 2 DS1302_CLK = 0;
160 2 ACC = ACC >> 1;
161 2 }
C51 COMPILER V8.02 DS1302 04/09/2008 00:26:08 PAGE 4
162 1 }
*** ERROR C237 IN LINE 162 OF DS1302.C: '_DS1302InputByte': function already has a body
163
164 unsigned char DS1302OutputByte(void) //實(shí)時(shí)時(shí)鐘讀取一字節(jié)(內(nèi)部函數(shù))
165 {
166 1 unsigned char i;
167 1 for(i=8; i>0; i--)
168 1 {
169 2 ACC = ACC >>1; //相當(dāng)于匯編中的 RRC
170 2 ACC7 = DS1302_IO;
171 2 DS1302_CLK = 1;
172 2 DS1302_CLK = 0;
173 2 }
174 1 return(ACC);
175 1 }
*** ERROR C237 IN LINE 175 OF DS1302.C: 'DS1302OutputByte': function already has a body
176
177 void Write1302(unsigned char ucAddr, unsigned char ucDa) //ucAddr: DS1302地址, ucData: 要寫的數(shù)據(jù)
178 {
179 1 DS1302_RST = 0;
180 1 DS1302_CLK = 0;
181 1 DS1302_RST = 1;
182 1 DS1302InputByte(ucAddr); // 地址,命令
183 1 DS1302InputByte(ucDa); // 寫1Byte數(shù)據(jù)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -