📄 6416+1302电子钟.lst
字号:
C51 COMPILER V7.50 6416_1302电子钟 08/18/2008 19:06:56 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 6416_1302电子钟
OBJECT MODULE PLACED IN 6416+1302电子钟.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 6416+1302电子钟.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*****************************************************
2 4字LED点阵屏+DS1302万年历电子钟 C 程序
3 ******************************************************
4 声明:
5 本程序中DS1302读写部分是直接引用网上网友提供的共享程序,
6 本程序供大家学习之用,用勿用于商业用途。尊重作者版权。
7
8 编写:邓椿薪
9 时间:2006年6月9日 晚
10 邮箱:love2151@xinhuanet.com
11 网址:www.89s51diy.com
12 *******************************************************
13
14 DS1302 接线图
15
16 Vcc2 CLK I/O /RST
17
18 | | | |
19 -------------------
20 | 8 7 6 5 |
21 | DS1302 |
22 | |
23 | 1 2 3 4 |
24 -------------------
25 | | | |
26 VCC1 GND
27
28 1 脚接+5V 2,3脚32768HZ晶振 4脚接地 5脚接S51的P02 6脚接S51的P01 7接S51的P00
29 8脚接后备电源,可以接老计算机主板上的3.6V电池,也可以通过二级管隔离接一个大容量电解电容
30 电压在2.5V以上即可维持
31
32
33 595连级输出数据,138行驱动。*/
34
35
36
37 #include <AT89c51.H>
*** WARNING C318 IN LINE 37 OF 6416+1302电子钟.c: can't open file 'AT89c51.H'
38 #define uchar unsigned char
39 #define uint unsigned int
40
41 uchar code hanzi[]; //汉字字模
42
43 uchar code timer[11][16]; //0~9数字
44 uchar code sw[]; //138驱动数据
45
46 void Show_word(); //待机显示按三秒间隔分别显示年、月日、星期、时分秒。
47 void Show_pass(); //不显示一个字
48 void Send_data(unsigned char *d); /*串口发送一行*/
49
50
51
52 /******************************************/
53 sbit resget=P1^3; //时钟复位
*** ERROR C202 IN LINE 53 OF 6416+1302电子钟.C: 'P1': undefined identifier
C51 COMPILER V7.50 6416_1302电子钟 08/18/2008 19:06:56 PAGE 2
54 sbit key_moda=P1^0; //模式转换
*** ERROR C202 IN LINE 54 OF 6416+1302电子钟.C: 'P1': undefined identifier
55 sbit key_up=P1^1; //时钟加
*** ERROR C202 IN LINE 55 OF 6416+1302电子钟.C: 'P1': undefined identifier
56 sbit key_Down=P1^2; //时钟减
*** ERROR C202 IN LINE 56 OF 6416+1302电子钟.C: 'P1': undefined identifier
57
58 sbit T_CLK=P1^7; //DS1302引脚连接
*** ERROR C202 IN LINE 58 OF 6416+1302电子钟.C: 'P1': undefined identifier
59 sbit T_IO =P1^6;
*** ERROR C202 IN LINE 59 OF 6416+1302电子钟.C: 'P1': undefined identifier
60 sbit T_RST=P1^5;
*** ERROR C202 IN LINE 60 OF 6416+1302电子钟.C: 'P1': undefined identifier
61
62 sbit ACC0=ACC^0; //1bit数据存储位
*** ERROR C202 IN LINE 62 OF 6416+1302电子钟.C: 'ACC': undefined identifier
63 sbit ACC7=ACC^7;
*** ERROR C202 IN LINE 63 OF 6416+1302电子钟.C: 'ACC': undefined identifier
64
65 uchar starts_time[7]={0x00,0x10,0x22,0x11,0x06,0x07,0x06}; //初始化后设置
66 uchar Move,Speed,Flicker,line,Sec,Cent,Hour,Year,Month,Day,Week; //时间变量
67 uchar a,b,f,h,msec,id,x; //标志计数器 a为自动转换显示时间,b为手动与自动标志
68 uint zimuo; //字模计数器
69 uchar BUFF[10]; //缓存
70
71 void RTInputByte(uchar); /* 输入 1Byte */
72 uchar RTOutputByte(void); /* 输出 1Byte */
73 void W1302(uchar, uchar); // 向DS1302写入一个字节
74 uchar R1302(uchar); // 从DS1302读出一个字节
75 void Set1302(uchar *); // 写DS1302时间
76 void du1302(); // 读时间
77 void DelayMs(void); // 延时
78 void Set(uchar,uchar ); // 变量调整
79 void in_data(); // 调整移动数据
80 void rxd_data(); // 串口发送移动数据
81
82 /*主函数*/
83 void main()
84 {
85 1 Move=0;
86 1 zimuo=0;
87 1 TMOD=0x01; //16位定时
*** ERROR C202 IN LINE 87 OF 6416+1302电子钟.C: 'TMOD': undefined identifier
88 1 TH0=0x3c; //25ms晶振为24M
*** ERROR C202 IN LINE 88 OF 6416+1302电子钟.C: 'TH0': undefined identifier
89 1 TL0=0xb0;
*** ERROR C202 IN LINE 89 OF 6416+1302电子钟.C: 'TL0': undefined identifier
90 1 EA=1;
*** ERROR C202 IN LINE 90 OF 6416+1302电子钟.C: 'EA': undefined identifier
91 1 TR0=1;
*** ERROR C202 IN LINE 91 OF 6416+1302电子钟.C: 'TR0': undefined identifier
92 1 ET0=1;
*** ERROR C202 IN LINE 92 OF 6416+1302电子钟.C: 'ET0': undefined identifier
93 1 SCON=0; //初始化串口为工作方式0(同步通信方式,TxD输出同步脉冲)
*** ERROR C202 IN LINE 93 OF 6416+1302电子钟.C: 'SCON': undefined identifier
94 1
95 1 while(zimuo<512)
96 1 {
97 2 while(Move<16) //数据移位。
98 2 {
99 3 for(Speed=0;Speed<10;Speed++) //移动速度
100 3 {
C51 COMPILER V7.50 6416_1302电子钟 08/18/2008 19:06:56 PAGE 3
101 4 for(line=0;line<16;line++)
102 4 {
103 5 in_data(); //调整移动数据
104 5 rxd_data();
105 5 P2_7=1; //锁存为高,595锁存信号
*** ERROR C202 IN LINE 105 OF 6416+1302电子钟.C: 'P2_7': undefined identifier
106 5 P2=sw[line]; //输出行信号
*** ERROR C202 IN LINE 106 OF 6416+1302电子钟.C: 'P2': undefined identifier
107 5 DelayMs(); //延时,等待一段时间,让这列显示的内容在人眼内产生“视觉暂留”现
-象。*/
108 5 P2=0x7f; //关闭显示。
*** ERROR C202 IN LINE 108 OF 6416+1302电子钟.C: 'P2': undefined identifier
109 5 }
110 4 }
111 3 Move++; //移动一步
112 3 }
113 2 Move=0;
114 2 zimuo=zimuo+32;
115 2 }
116 1 zimuo=0;
117 1 while(1) //重复循环显示
118 1 {
119 2 if(resget==0)
*** ERROR C202 IN LINE 119 OF 6416+1302电子钟.C: 'resget': undefined identifier
120 2 { DelayMs();
121 3 if(resget==0)
*** ERROR C202 IN LINE 121 OF 6416+1302电子钟.C: 'resget': undefined identifier
122 3 Set1302(starts_time); //初始化
123 3 W1302(0x8e,0x00); //控制命令,WP=0,写操作
124 3 W1302(0x90,0xa5); //打开充电二级管 一个二级管串联一个2K电阻
125 3 }
126 2 du1302(); //读取 秒 分 时 日 月 星期 年
127 2 if (key_moda==0) //设置和选择项目键
*** ERROR C202 IN LINE 127 OF 6416+1302电子钟.C: 'key_moda': undefined identifier
128 2 { DelayMs();
129 3 if(key_moda==0)
*** ERROR C202 IN LINE 129 OF 6416+1302电子钟.C: 'key_moda': undefined identifier
130 3 {
131 4 if(id++==9) {id=0;}
132 4 h=0;msec=0; //清闪烁标志
133 4 while(key_moda==0){ Show_word();}
*** ERROR C202 IN LINE 133 OF 6416+1302电子钟.C: 'key_moda': undefined identifier
134 4 }
135 3 }
136 2
137 2
138 2 if(id!=0)
139 2 {
140 3 if (key_up==0) //增加
*** ERROR C202 IN LINE 140 OF 6416+1302电子钟.C: 'key_up': undefined identifier
141 3 {
142 4 DelayMs();
143 4 if(key_up==0)
*** ERROR C202 IN LINE 143 OF 6416+1302电子钟.C: 'key_up': undefined identifier
144 4 {
145 5 while(key_up==0)
*** ERROR C202 IN LINE 145 OF 6416+1302电子钟.C: 'key_up': undefined identifier
146 5 {Show_word();} //调用显示
147 5 h=0;msec=0; //清闪烁标志
148 5
149 5 Set(id,0); //调用时间调调整
150 5 }
C51 COMPILER V7.50 6416_1302电子钟 08/18/2008 19:06:56 PAGE 4
151 4 }
152 3
153 3 if (key_Down==0) //减少
*** ERROR C202 IN LINE 153 OF 6416+1302电子钟.C: 'key_Down': undefined identifier
154 3 {
155 4 DelayMs();
156 4 if(key_Down==0)
*** ERROR C202 IN LINE 156 OF 6416+1302电子钟.C: 'key_Down': undefined identifier
157 4 {
158 5 while(key_Down==0)
*** ERROR C202 IN LINE 158 OF 6416+1302电子钟.C: 'key_Down': undefined identifier
159 5 {Show_word();} //调用显示
160 5 h=0;msec=0; //清闪烁标志
161 5 Set(id,1); //调用时间调调整
162 5 }
163 4 }
164 3 }
165 2 else
166 2 {
167 3 if (key_up==0) //增加
*** ERROR C202 IN LINE 167 OF 6416+1302电子钟.C: 'key_up': undefined identifier
168 3 {
169 4 DelayMs();
170 4 if(key_up==0)
*** ERROR C202 IN LINE 170 OF 6416+1302电子钟.C: 'key_up': undefined identifier
171 4 {
172 5 while(key_up==0)
*** ERROR C202 IN LINE 172 OF 6416+1302电子钟.C: 'key_up': undefined identifier
173 5 {Show_word();} //调用显示
174 5 h=0;msec=0; //清闪烁标志
175 5 if(b!=0) //手动调整显示的内容
176 5 {
177 6 if(f++==3) //f为显示转换标志
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -