📄 ht1380.lst
字号:
C51 COMPILER V8.02 HT1380 05/18/2008 16:43:12 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE HT1380
OBJECT MODULE PLACED IN HT1380.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE HT1380.C LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************************
2 * 版权所有(C)2005 深圳豪恩科技有线公司
3 *
4 * 文件名称: HT1380.C
5 * 文件标识:
6 * 内容摘要: 对外围器件HT1380操作的各种子程序
7 * 其他说明:
8 * 当前版本:
9 * 作 者: 涂常亮
10 * 完成日期:
11 *
12 * 修改记录1
13 * 修改日期:
14 * 版 本 号:
15 * 修 改 人:
16 * 修改内容:
17 *修改记录2
18 *******************************************************************************/
19
20 #include <reg54.h>
21 #include <intrins.h>
22
23 #define RegSec 0
24 #define RegMint 1
25 #define RegHr 2
26 #define RegDate 3
27 #define RegM 4
28 #define RegDay 5
29 #define RegYear 6
30 #define RegWP 7
31
32 #define REG_SEC 0
33 #define REG_MIN 1
34 #define REG_HR 2
35 #define REG_DATE 3
36 #define REG_MONTH 4
37 #define REG_DAY 5
38 #define REG_YR 6
39 #define REG_WP 7
40
41 #define YR_INIT 0x00
42 #define MONTH_INIT 0x01
43 #define DATE_INIT 0x01
44 #define HR_INIT 0x00
45 #define MIN_INIT 0x00
46
47 #define CMD_WRT 0x80
48 #define CMD_READ 0x81
49 #define CMD_WRT_SEC 0x80
50 #define CMD_READ_SEC 0x81
51 #define CMD_WRT_MINUT 0x82
52 #define CMD_READ_MINUT 0x83
53 #define CMD_WRT_HR 0x84
54 #define CMD_READ_HR 0x85
55 #define CMD_WRT_DATE 0x86
C51 COMPILER V8.02 HT1380 05/18/2008 16:43:12 PAGE 2
56 #define CMD_READ_DATA 0x87
57 #define CMD_WRT_MON 0x88
58 #define CMD_READ_MON 0x89
59 #define CMD_WRT_DAY 0x8A
60 #define CMD_READ_DAY 0x8B
61 #define CMD_WRT_YR 0x8C
62 #define CMD_READ_YR 0x8D
63 #define CMD_WRT_WP 0x8E
64 #define CMD_READ_WP 0x8F
65
66 #define CMD_READ_H 0x85
67 #define CMD_WRT_HR 0x84
68
69 sbit pin_SCLK = P1^0;
70 sbit pin_SIO = P1^1;
71 sbit pin_RESET = P1^2;
72
73
74 void InitHT1380(void);
75 void ComuStart(void);
76 void ComuStop(void);
77 void SendByte(unsigned char ucData);
78 unsigned char ReceiByte(void);
79 //unsigned char ReadReg(unsigned char ucRegAdd);
80 unsigned char ReadTime(unsigned char ucRegAdd);
81 //void WriteReg(unsigned char ucRegAdd, unsigned char ucData);
82 void WriteTime(unsigned char ucRegAdd, unsigned char ucData);
83 bit ResetHT1380(void);
84 //下面两个函数LHD6000的主程序中有实现部分,后面本文件中的实现部分被转成注释
85 unsigned char BCD_Hex(unsigned char ucNumBCD);
86 bit IsBCD(unsigned char ucNum_IsBCD);
87
88 /*******************************************************************************
89 * 函数名称: void InitHT1380(void);
90 * 功能描述: 初始化HT1380,使其起振。
91 * 输入参数: 无
92 * 输出参数: 无
93 * 返 回 值: 无
94 * 其他说明:
95 * 修改日期 版 本 号 修 改 人 修改内容
96 *-------------------------------------------------------------------------------
97 *
98 *******************************************************************************/
99 void InitHT1380(void)
100 {
101 1 unsigned char ucTmp_Init;
102 1 //bit FlagReadOk = 1;
103 1 //去除写保护
104 1 /*ComuStart(); //原来的读写操作没有去除写保护的部分,现不需这段程序
105 1 SendByte(0x8E);
106 1 SendByte(0x00);
107 1 pin_RESET = 0;*/
108 1
109 1 //写允许晶振启动,秒钟寄存器最高位清零
110 1 ucTmp_Init = ReadTime(REG_SEC);
111 1 if (0 != (ucTmp_Init & 0x80)) //已经允许,不再重写
112 1 {
113 2 WriteTime(REG_SEC, ucTmp_Init & 0x7F);
114 2 }
115 1 //WriteTime(REG_SEC, ReadTime(REG_SEC) & 0x7F);
116 1 ucTmp_Init = ReadTime(REG_HR);
117 1 if (0 != (ucTmp_Init & 0x80)) //0 表示使用24小时制
C51 COMPILER V8.02 HT1380 05/18/2008 16:43:12 PAGE 3
118 1 {
119 2 WriteTime(REG_HR, ucTmp_Init & 0x7F);
120 2 }
121 1
122 1 //IsBCD()和BCD_Hex()在LHD6000的主程序中有实现部分,后面本文件中的实现部分被转成注释
123 1 /*FlagReadOk &= IsBCD(ReadTime(REG_YR)); //暂不用
124 1 ucTmp_Init = BCD_Hex(ReadTime(REG_MONTH));
125 1 FlagReadOk &= ((0 != ucTmp_Init) && (12 >= ucTmp_Init));
126 1 ucTmp_Init = BCD_Hex(ReadTime(REG_DATE));
127 1 FlagReadOk &= ((0 != ucTmp_Init) && (31 >= ucTmp_Init));
128 1 ucTmp_Init = ReadTime(REG_HR);
129 1 FlagReadOk &= ((0x23 >= ucTmp_Init) && (IsBCD(ucTmp_Init)));
130 1 ucTmp_Init = ReadTime(REG_MIN);
131 1 FlagReadOk &= ((0x59 >= ucTmp_Init) && (IsBCD(ucTmp_Init)));
132 1 if (FlagReadOk)
133 1 {
134 1 return;
135 1 }
136 1 else
137 1 {
138 1 ResetHT1380();
139 1 }*/
140 1 }
141
142 /*******************************************************************************
143 * 函数名称: void ComuStart(void);
144 * 功能描述: 通讯开始
145 * 输入参数: 无
146 * 输出参数: 无
147 * 返 回 值: 无
148 * 其他说明:
149 * 修改日期 版 本 号 修 改 人 修改内容
150 *-------------------------------------------------------------------------------
151 *
152 *******************************************************************************/
153 /*bit ResetHT1380(void)
154 {
155 unsigned char ucTimesTry = 3;
156 bit FlagResetOK = 0;
157 while (!FlagResetOK && (0 != ucTimesTry))
158 {
159 WriteTime(REG_YR, YR_INIT);
160 WriteTime(REG_MONTH, MONTH_INIT);
161 WriteTime(REG_DATE, DATE_INIT);
162 WriteTime(REG_HR, HR_INIT);
163 WriteTime(REG_MIN, MIN_INIT);
164 FlagResetOK = ( (YR_INIT == ReadTime(REG_YR))
165 && (MONTH_INIT == ReadTime(REG_MONTH))
166 && (DATE_INIT == ReadTime(REG_DATE))
167 && (HR_INIT == ReadTime(REG_HR))
168 && (MIN_INIT == ReadTime(REG_MIN))
169 );
170 ucTimesTry--;
171 }
172 if (0 == ucTimesTry)
173 {
174 return 0;
175 }
176 else
177 {
178 return 1;
179 }
C51 COMPILER V8.02 HT1380 05/18/2008 16:43:12 PAGE 4
180 }*/
181
182 /*******************************************************************************
183 * 函数名称: void ComuStart(void);
184 * 功能描述: 通讯开始
185 * 输入参数: 无
186 * 输出参数: 无
187 * 返 回 值: 无
188 * 其他说明:
189 * 修改日期 版 本 号 修 改 人 修改内容
190 *-------------------------------------------------------------------------------
191 *
192 *******************************************************************************/
193 void ComuStart(void)
194 {
195 1 pin_RESET = 0;
196 1 _nop_();
197 1 pin_SCLK = 0;
198 1 _nop_();
199 1 pin_SIO = 0;
200 1 _nop_();
201 1 _nop_();
202 1 _nop_();
203 1 pin_RESET =1;
204 1 }
205
206 /*******************************************************************************
207 * 函数名称: void ComuStart(void);
208 * 功能描述: 通讯停止
209 * 输入参数: 无
210 * 输出参数: 无
211 * 返 回 值: 无
212 * 其他说明:
213 * 修改日期 版 本 号 修 改 人 修改内容
214 *-------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -