📄 lm4229_ds1302.lst
字号:
C51 COMPILER V8.05a LM4229_DS1302 10/22/2008 10:25:56 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE LM4229_DS1302
OBJECT MODULE PLACED IN lm4229_ds1302.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE lm4229_ds1302.c DEBUG OBJECTEXTEND
line level source
1 //=====================================
2 // proteus仿真论坛:http://proteus.5d6d.com
3 // 祝福北京,祝福奥运
4 // 北京欢迎你
5 // 时钟暂未加设置时间功能
6 //=====================================
7 #include<reg52.h>
8 #include<math.h>
9 #include<absacc.h>
10 #include<ds1302.h>
11 #include<lm4229.h>
12
13 // 0123 67 1011 1516 1819 2122
14 uchar tab_time[]="2008年08月08日 00:00:00 星期";
15 /*年 月 日 时 分 秒 星期 */
16
17
18 sbit k1=P3^3;
19 sbit k2=P3^4;
20
21 //--------------------------
22 //------- 函数声明 --------
23 void trans();
24 void key_scan();
25 void week();
26 void delay(uint);
27
28 //============================================
29 // 主函数
30 //============================================
31 void main()
32 {
33 1 lcd_init();
34 1 write_lcd(10,0,"------------------------------");
35 1 write_lcd(102,0,"------------------------------");
36 1 // write_lcd(0,0,"2008年08月08日 00:00:00 星期五");
37 1 write_lcd(22,1,"同");
38 1 write_lcd(38,1,"一");
39 1 write_lcd(54,1,"个");
40 1 write_lcd(72,1,"世");
41 1 write_lcd(90,1,"界");
42 1 write_lcd(22,27,"同");
43 1 write_lcd(38,27,"一");
44 1 write_lcd(54,27,"个");
45 1 write_lcd(72,27,"梦");
46 1 write_lcd(90,27,"想");
47 1 write_lcd(112,0," 四川师大 电子工程学院 聂金波");
48 1 //write_pic(30,5); //北京欢迎你 大字
49 1 //write_lcd(70,8,"2008 北京奥运"); //黑体
50 1 write_image(30,6,80,72,tab_image_h); //显示涛哥 80*72
51 1 write_image(26,17,56,75,tab_image_w); //显示宝宝 56*75
52 1 while(1)
53 1 {
54 2 ds1302();
55 2 trans();
C51 COMPILER V8.05a LM4229_DS1302 10/22/2008 10:25:56 PAGE 2
56 2 write_lcd(0,0,tab_time);
57 2 week();
58 2 }
59 1 }
60
61
62 //----------------------------------
63 // 按键函数
64 //----------------------------------
65 void key_scan()
66 {
67 1 if(k1==0)
68 1 {
69 2 delay(5);
70 2 if(k1==0)
71 2 {
72 3 tab_time[2]++;
73 3 }
74 2 }
75 1 }
76
77 void delay(uint k)
78 {
79 1 uint i,j;
80 1 for(i=k;i>0;i--)
81 1 for(j=110;j>0;j--);
82 1 }
83
84 //------------------------------------------
85 // 数据转换
86 //------------------------------------------
87 void trans()
88 {
89 1 tab_time[2]=tab_1302[6]/10+'0'; //年十位
90 1 tab_time[3]=tab_1302[6]%10+'0'; //年个位
91 1 tab_time[6]=tab_1302[4]/10+'0'; //月十位
92 1 tab_time[7]=tab_1302[4]%10+'0'; //月个位
93 1 tab_time[10]=tab_1302[3]/10+'0'; //日十位
94 1 tab_time[11]=tab_1302[3]%10+'0'; //日个位
95 1 tab_time[15]=tab_1302[2]/10+'0'; //小时十位
96 1 tab_time[16]=tab_1302[2]%10+'0'; //小时个位
97 1 tab_time[18]=tab_1302[1]/10+'0'; //分十位
98 1 tab_time[19]=tab_1302[1]%10+'0'; //分个位
99 1 tab_time[21]=tab_1302[0]/10+'0'; //秒十位
100 1 tab_time[22]=tab_1302[0]%10+'0'; //秒个位
101 1 }
102
103
104 //------------------------------------------
105 // 星期显示
106 //------------------------------------------
107 void week()
108 {
109 1 uchar i;
110 1 if(tab_1302[5]==1)
111 1 {i=7;}
112 1 else
113 1 {i=tab_1302[5]-1;} /*实时时钟里的值是6,但是2008/08/08是星期五,所以减1,
114 1 Proteus的问题?? */
115 1 switch(i)
116 1 {
117 2 case 1: write_lcd(0,28,"一"); break;
C51 COMPILER V8.05a LM4229_DS1302 10/22/2008 10:25:56 PAGE 3
118 2 case 2: write_lcd(0,28,"二"); break;
119 2 case 3: write_lcd(0,28,"三"); break;
120 2 case 4: write_lcd(0,28,"四"); break;
121 2 case 5: write_lcd(0,28,"五"); break;
122 2 case 6: write_lcd(0,28,"六"); break;
123 2 case 7: write_lcd(0,28,"日"); break;
124 2 default: ; break; //其它情况
125 2 }
126 1 }
127 //==============================================
128
129
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1630 ----
CONSTANT SIZE = 4983 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 43 26
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -