📄 main.lst
字号:
C51 COMPILER V8.06 MAIN 12/02/2011 19:30:16 PAGE 1
C51 COMPILER V8.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /**********************HL-1实验开发板例程************************
2 * 平台:HL-1 V6.2 + Keil U3 + STC89C52RD
3 * 公司:慧净电子科技有限公司
4 * 淘宝:http://shop37031453.taobao.com
5 * 网站:www.hlmcu.com
6 * 编写:慧净
7 * 日期:2008-8-08
8 * QQ : 121350852 398115088
9 * 晶振:11.0592MHZ
10 * 说明:免费开源,不提供源代码分析,有问题直接到慧净论坛交流
11 * 论坛:http://hjdz.5d6d.com
12 ******************************************************************/
13 //开机次数记忆
14 #include<reg52.h>
15 #define uchar unsigned char
16 #define uint unsigned int
17 bit write=0; //写24C02的标志;
18 sbit sda=P2^0;
19 sbit scl=P2^1;
20 sbit dula=P2^6;
21 sbit wela=P2^7;
22 sbit RST=P2^5; //时钟 不需要,可以关掉
23 sbit CS_DA =P2^4 ; //HJ-3G DAC HL-1不需要,可以关掉
24 sbit JD=P0^6;
25 sbit FM=P2^3;
26
27
28 uchar sec,tcnt;
29 uchar code table[]={
30 0x3f,0x06,0x5b,0x4f,
31 0x66,0x6d,0x7d,0x07,
32 0x7f,0x6f,0x77,0x7c,
33 0x39,0x5e,0x79,0x71};
34 void ioin() //IO口继电器、数码管锁存函数
35 {
36 1 wela=1;
37 1 P0 = 1;
38 1 JD = 0;
39 1 wela=0;
40 1 dula=1;
41 1 P0=0;
42 1 dula=0;
43 1 }
44 void delay()
45 { ;; }
46 void delay1ms(uint z)
47 {
48 1 uint x,y;
49 1 for(x=z;x>0;x--)
50 1 for(y=110;y>0;y--);
51 1 }
52 void start() //开始信号
53 {
54 1 sda=1;
55 1 delay();
C51 COMPILER V8.06 MAIN 12/02/2011 19:30:16 PAGE 2
56 1 scl=1;
57 1 delay();
58 1 sda=0;
59 1 delay();
60 1 }
61 void stop() //停止
62 {
63 1 sda=0;
64 1 delay();
65 1 scl=1;
66 1 delay();
67 1 sda=1;
68 1 delay();
69 1 }
70 void respons() //应答
71 {
72 1 uchar i;
73 1 scl=1;
74 1 delay();
75 1 while((sda==1)&&(i<250))i++;
76 1 scl=0;
77 1 delay();
78 1 }
79 void init()
80 {
81 1 RST=0; //总线时钟低电评
82 1 CS_DA =0 ;
83 1 sda=1;
84 1 delay();
85 1 scl=1;
86 1 delay();
87 1 }
88 void write_byte(uchar date)
89 {
90 1 uchar i,temp;
91 1 temp=date;
92 1 for(i=0;i<8;i++)
93 1 {
94 2 temp=temp<<1;
95 2 scl=0;
96 2 delay();
97 2 sda=CY;
98 2 delay();
99 2 scl=1;
100 2 delay();
101 2 }
102 1 scl=0;
103 1 delay();
104 1 sda=1;
105 1 delay();
106 1 }
107 uchar read_byte()
108 {
109 1 uchar i,k;
110 1 scl=0;
111 1 delay();
112 1 sda=1;
113 1 delay();
114 1 for(i=0;i<8;i++)
115 1 {
116 2 scl=1;
117 2 delay();
C51 COMPILER V8.06 MAIN 12/02/2011 19:30:16 PAGE 3
118 2 k=(k<<1)|sda;
119 2 scl=0;
120 2 delay();
121 2 }
122 1 return k;
123 1 }
124 void write_add(uchar address,uchar date)
125 {
126 1 start();
127 1 write_byte(0xa0);
128 1 respons();
129 1 write_byte(address);
130 1 respons();
131 1 write_byte(date);
132 1 respons();
133 1 stop();
134 1 }
135 uchar read_add(uchar address)
136 {
137 1 uchar date;
138 1 start();
139 1 write_byte(0xa0);
140 1 respons();
141 1 write_byte(address);
142 1 respons();
143 1 start();
144 1 write_byte(0xa1);
145 1 respons();
146 1 date=read_byte();
147 1 stop();
148 1 return date;
149 1 }
150 void display(uchar bai_c,uchar sh_c) //显示程序
151 {
152 1 dula=0;
153 1 P0=table[bai_c]; //显示第一位
154 1 dula=1;
155 1 dula=0;
156 1 wela=0;
157 1 P0=0x7e;
158 1 wela=1;
159 1 wela=0;
160 1 delay1ms(5);
161 1 dula=0;
162 1 P0=table[sh_c]; //显示第二位
163 1 dula=1;
164 1 dula=0;
165 1 wela=0;
166 1 P0=0x7d;
167 1 wela=1;
168 1 wela=0;
169 1 delay1ms(5);
170 1 }
171 void main()
172 {
173 1 ioin();
174 1 init();
175 1 sec=read_add(2); //读出保存的数据赋于sec
176 1 if(sec>100) //防止首次读取出错误数据
177 1 sec=0;
178 1 TMOD=0x01; //定时器工作在方式1
179 1 ET0=1;
C51 COMPILER V8.06 MAIN 12/02/2011 19:30:16 PAGE 4
180 1 EA=1;
181 1 TH0=(65536-50000)/256; //对TH0 TL0赋值
182 1 TL0=(65536-50000)%256; //使定时器0.05秒中断一次
183 1 TR0=1; //开始计时
184 1 while(1)
185 1 {
186 2 display(sec/10,sec%10);
187 2 if(write==1) //判断计时器是否计时一秒
188 2 {
189 3 write=0; //清零
190 3 write_add(2,sec); //在24c02的地址2中写入数据sec
191 3 }
192 2 }
193 1 }
194 void t0() interrupt 1 //定时中断服务函数
195 {
196 1 TH0=(65536-50000)/256; //对TH0 TL0赋值
197 1 TL0=(65536-50000)%256; //重装计数初值
198 1 tcnt++; //每过50ms tcnt加一
199 1 if(tcnt==20) //计满20次(1秒)时
200 1 {
201 2 tcnt=0; //重新再计
202 2 sec++;
203 2 write=1; //1秒写一次24C02
204 2 if(sec==100) //定时100秒,再从零开始计时
205 2 sec=0;
206 2 }
207 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 405 ----
CONSTANT SIZE = 16 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 1
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -