📄 hjmcu.lst
字号:
C51 COMPILER V7.00 HJMCU 11/03/2011 23:05:12 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE HJMCU
OBJECT MODULE PLACED IN hjmcu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE hjmcu.C DEBUG OBJECTEXTEND
stmt level source
1 /**************************************************************************************************
2 *** 慧净电子1天入门、10天学会、1年精通单片机与C语言视频教程配套程序源码 ***
3 *** 实验板:HJ-1G HJ-3G 开发板 ***
4 *** MCU: STC89C52/AT89C52 部分C源码可以直接用于项目开发、欢迎复制共享、功德无量、没有版权 ***
5 *** 收集整理:慧净助学会员 部分原源来源网络,如有伤害到你的利润请来信,我们的免费助学会员会定期给你删除**
-*
6 *** 编译器:KEIL ***
7 *** 百度交流空间:http://hi.baidu.com/HJMCU WWW.HJMCU.COM ***
8 *** 论坛交流:http://bbs.hjmcu.com 欢迎来论坛一分钱不要下载配套的仿真电路 ***
9 *** 配套的硬件学习板网址:http://shop37031453.taobao.com/ ***
10 *** 日期:2008.8.8 ***
11 *** 目标:用C语言写程序就这么简单、慧争祝你1天入门、10天学会、1年精通单片机与C语言、找个好工作 ***
12 ***************************************************************************************************/
13
14 //开机次数记忆
15 #include<reg52.h>
16 #define uchar unsigned char
17 #define uint unsigned int
18 bit write=0; //写24C02的标志;
19 sbit sda=P2^0;
20 sbit scl=P2^1;
21 sbit dula=P2^6;
22 sbit wela=P2^7;
23 sbit RST=P2^5; //时钟
24 sbit CS_DA =P2^4 ; //HJ-1G DAC
25 sbit JD=P0^6;
26 sbit FM=P2^3;
27
28
29 uchar sec,tcnt;
30 uchar code table[]={
31 0x3f,0x06,0x5b,0x4f,
32 0x66,0x6d,0x7d,0x07,
33 0x7f,0x6f,0x77,0x7c,
34 0x39,0x5e,0x79,0x71};
35 void ioin() //IO口继电器、数码管锁存函数
36 {
37 1 wela=1;
38 1 P0 = 1;
39 1 JD = 0;
40 1 wela=0;
41 1 dula=1;
42 1 P0=0;
43 1 dula=0;
44 1 }
45 void delay()
46 { ;; }
47 void delay1ms(uint z)
48 {
49 1 uint x,y;
50 1 for(x=z;x>0;x--)
51 1 for(y=110;y>0;y--);
52 1 }
53 void start() //开始信号
54 {
C51 COMPILER V7.00 HJMCU 11/03/2011 23:05:12 PAGE 2
55 1 sda=1;
56 1 delay();
57 1 scl=1;
58 1 delay();
59 1 sda=0;
60 1 delay();
61 1 }
62 void stop() //停止
63 {
64 1 sda=0;
65 1 delay();
66 1 scl=1;
67 1 delay();
68 1 sda=1;
69 1 delay();
70 1 }
71 void respons() //应答
72 {
73 1 uchar i;
74 1 scl=1;
75 1 delay();
76 1 while((sda==1)&&(i<250))i++;
77 1 scl=0;
78 1 delay();
79 1 }
80 void init()
81 {
82 1 RST=0; //总线时钟低电评
83 1 CS_DA =0 ;
84 1 sda=1;
85 1 delay();
86 1 scl=1;
87 1 delay();
88 1 }
89 void write_byte(uchar date)
90 {
91 1 uchar i,temp;
92 1 temp=date;
93 1 for(i=0;i<8;i++)
94 1 {
95 2 temp=temp<<1;
96 2 scl=0;
97 2 delay();
98 2 sda=CY;
99 2 delay();
100 2 scl=1;
101 2 delay();
102 2 }
103 1 scl=0;
104 1 delay();
105 1 sda=1;
106 1 delay();
107 1 }
108 uchar read_byte()
109 {
110 1 uchar i,k;
111 1 scl=0;
112 1 delay();
113 1 sda=1;
114 1 delay();
115 1 for(i=0;i<8;i++)
116 1 {
C51 COMPILER V7.00 HJMCU 11/03/2011 23:05:12 PAGE 3
117 2 scl=1;
118 2 delay();
119 2 k=(k<<1)|sda;
120 2 scl=0;
121 2 delay();
122 2 }
123 1 return k;
124 1 }
125 void write_add(uchar address,uchar date)
126 {
127 1 start();
128 1 write_byte(0xa0);
129 1 respons();
130 1 write_byte(address);
131 1 respons();
132 1 write_byte(date);
133 1 respons();
134 1 stop();
135 1 }
136 uchar read_add(uchar address)
137 {
138 1 uchar date;
139 1 start();
140 1 write_byte(0xa0);
141 1 respons();
142 1 write_byte(address);
143 1 respons();
144 1 start();
145 1 write_byte(0xa1);
146 1 respons();
147 1 date=read_byte();
148 1 stop();
149 1 return date;
150 1 }
151 void display(uchar bai_c,uchar sh_c) //显示程序
152 {
153 1 dula=0;
154 1 P0=table[bai_c]; //显示第一位
155 1 dula=1;
156 1 dula=0;
157 1 wela=0;
158 1 P0=0x7e;
159 1 wela=1;
160 1 wela=0;
161 1 delay1ms(5);
162 1 dula=0;
163 1 P0=table[sh_c]; //显示第二位
164 1 dula=1;
165 1 dula=0;
166 1 wela=0;
167 1 P0=0x7d;
168 1 wela=1;
169 1 wela=0;
170 1 delay1ms(5);
171 1 }
172 void main()
173 {
174 1 ioin();
175 1 init();
176 1 sec=read_add(2); //读出保存的数据赋于sec
177 1 if(sec>100) //防止首次读取出错误数据
178 1 sec=0;
C51 COMPILER V7.00 HJMCU 11/03/2011 23:05:12 PAGE 4
179 1 TMOD=0x01; //定时器工作在方式1
180 1 ET0=1;
181 1 EA=1;
182 1 TH0=(65536-50000)/256; //对TH0 TL0赋值
183 1 TL0=(65536-50000)%256; //使定时器0.05秒中断一次
184 1 TR0=1; //开始计时
185 1 while(1)
186 1 {
187 2 display(sec/10,sec%10);
188 2 if(write==1) //判断计时器是否计时一秒
189 2 {
190 3 write=0; //清零
191 3 write_add(2,sec); //在24c02的地址2中写入数据sec
192 3 }
193 2 }
194 1 }
195 void t0() interrupt 1 //定时中断服务函数
196 {
197 1 TH0=(65536-50000)/256; //对TH0 TL0赋值
198 1 TL0=(65536-50000)%256; //重装计数初值
199 1 tcnt++; //每过50ms tcnt加一
200 1 if(tcnt==20) //计满20次(1秒)时
201 1 {
202 2 tcnt=0; //重新再计
203 2 sec++;
204 2 write=1; //1秒写一次24C02
205 2 if(sec==100) //定时100秒,再从零开始计时
206 2 sec=0;
207 2 }
208 1 }
209
210
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 + -