📄 miin.lst
字号:
C51 COMPILER V8.06 MIIN 11/20/2011 16:40:14 PAGE 1
C51 COMPILER V8.06, COMPILATION OF MODULE MIIN
OBJECT MODULE PLACED IN miin.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE miin.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //实验平台:HL-1 V6.1+Keil U3
2 //开发公司:慧净电子WWW.HLMCU.COM
3 //淘宝店铺:http://shop37031453.taobao.com
4 //开机次数记忆
5 #include<reg52.h>
6 #define uchar unsigned char
7 #define uint unsigned int
8 bit write=0; //写24C02的标志;
9 sbit sda=P2^0;
10 sbit scl=P2^1;
11 sbit dula=P2^6;
12 sbit wela=P2^7;
13 sbit RST=P2^5; //时钟
14 sbit CS_DA =P2^4 ; //HJ-1G DAC
15 sbit JD=P0^6;
16 sbit FM=P2^3;
17
18
19 uchar sec,tcnt;
20 uchar code table[]={
21 0x3f,0x06,0x5b,0x4f,
22 0x66,0x6d,0x7d,0x07,
23 0x7f,0x6f,0x77,0x7c,
24 0x39,0x5e,0x79,0x71};
25 void ioin() //IO口继电器、数码管锁存函数
26 {
27 1 wela=1;
28 1 P0 = 1;
29 1 JD = 0;
30 1 wela=0;
31 1 dula=1;
32 1 P0=0;
33 1 dula=0;
34 1 }
35 void delay()
36 { ;; }
37 void delay1ms(uint z)
38 {
39 1 uint x,y;
40 1 for(x=z;x>0;x--)
41 1 for(y=110;y>0;y--);
42 1 }
43 void start() //开始信号
44 {
45 1 sda=1;
46 1 delay();
47 1 scl=1;
48 1 delay();
49 1 sda=0;
50 1 delay();
51 1 }
52 void stop() //停止
53 {
54 1 sda=0;
55 1 delay();
C51 COMPILER V8.06 MIIN 11/20/2011 16:40:14 PAGE 2
56 1 scl=1;
57 1 delay();
58 1 sda=1;
59 1 delay();
60 1 }
61 void respons() //应答
62 {
63 1 uchar i;
64 1 scl=1;
65 1 delay();
66 1 while((sda==1)&&(i<250))i++;
67 1 scl=0;
68 1 delay();
69 1 }
70 void init()
71 {
72 1 RST=0; //总线时钟低电评
73 1 CS_DA =0 ;
74 1 sda=1;
75 1 delay();
76 1 scl=1;
77 1 delay();
78 1 }
79 void write_byte(uchar date)
80 {
81 1 uchar i,temp;
82 1 temp=date;
83 1 for(i=0;i<8;i++)
84 1 {
85 2 temp=temp<<1;
86 2 scl=0;
87 2 delay();
88 2 sda=CY;
89 2 delay();
90 2 scl=1;
91 2 delay();
92 2 }
93 1 scl=0;
94 1 delay();
95 1 sda=1;
96 1 delay();
97 1 }
98 uchar read_byte()
99 {
100 1 uchar i,k;
101 1 scl=0;
102 1 delay();
103 1 sda=1;
104 1 delay();
105 1 for(i=0;i<8;i++)
106 1 {
107 2 scl=1;
108 2 delay();
109 2 k=(k<<1)|sda;
110 2 scl=0;
111 2 delay();
112 2 }
113 1 return k;
114 1 }
115 void write_add(uchar address,uchar date)
116 {
117 1 start();
C51 COMPILER V8.06 MIIN 11/20/2011 16:40:14 PAGE 3
118 1 write_byte(0xa0);
119 1 respons();
120 1 write_byte(address);
121 1 respons();
122 1 write_byte(date);
123 1 respons();
124 1 stop();
125 1 }
126 uchar read_add(uchar address)
127 {
128 1 uchar date;
129 1 start();
130 1 write_byte(0xa0);
131 1 respons();
132 1 write_byte(address);
133 1 respons();
134 1 start();
135 1 write_byte(0xa1);
136 1 respons();
137 1 date=read_byte();
138 1 stop();
139 1 return date;
140 1 }
141 void display(uchar bai_c,uchar sh_c) //显示程序
142 {
143 1 dula=0;
144 1 P0=table[bai_c]; //显示第一位
145 1 dula=1;
146 1 dula=0;
147 1 wela=0;
148 1 P0=0x7e;
149 1 wela=1;
150 1 wela=0;
151 1 delay1ms(5);
152 1 dula=0;
153 1 P0=table[sh_c]; //显示第二位
154 1 dula=1;
155 1 dula=0;
156 1 wela=0;
157 1 P0=0x7d;
158 1 wela=1;
159 1 wela=0;
160 1 delay1ms(5);
161 1 }
162 void main()
163 {
164 1 ioin();
165 1 init();
166 1 sec=read_add(2); //读出保存的数据赋于sec
167 1 if(sec>100) //防止首次读取出错误数据
168 1 sec=0;
169 1 TMOD=0x01; //定时器工作在方式1
170 1 ET0=1;
171 1 EA=1;
172 1 TH0=(65536-50000)/256; //对TH0 TL0赋值
173 1 TL0=(65536-50000)%256; //使定时器0.05秒中断一次
174 1 TR0=1; //开始计时
175 1 while(1)
176 1 {
177 2 display(sec/10,sec%10);
178 2 if(write==1) //判断计时器是否计时一秒
179 2 {
C51 COMPILER V8.06 MIIN 11/20/2011 16:40:14 PAGE 4
180 3 write=0; //清零
181 3 write_add(2,sec); //在24c02的地址2中写入数据sec
182 3 }
183 2 }
184 1 }
185 void t0() interrupt 1 //定时中断服务函数
186 {
187 1 TH0=(65536-50000)/256; //对TH0 TL0赋值
188 1 TL0=(65536-50000)%256; //重装计数初值
189 1 tcnt++; //每过50ms tcnt加一
190 1 if(tcnt==20) //计满20次(1秒)时
191 1 {
192 2 tcnt=0; //重新再计
193 2 sec++;
194 2 write=1; //1秒写一次24C02
195 2 if(sec==100) //定时100秒,再从零开始计时
196 2 sec=0;
197 2 }
198 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 + -