📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 05/12/2007 12:43:55 PAGE 1
C51 COMPILER V8.02, 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 /*基于DS1302和LCD1602的万年历*/
2 /*具有光标显示,按键调时功能*/
3 /*作者:田开坤*/
4 /*key0:模式选择*/
5 /*key1:减操作*/
6 /*key2:加操作*/
7 /*key0:返回*/
8 /*2007.04.09*/
9 #include "STC89C51RC.H"
10 #include "LCD1602.h"
11 #include "DS1302.h"
12 #include <absacc.h>
13
14 #define UP 0xff
15 #define DOWN 0x0
16 #define uchar unsigned char
17 #define uint unsigned int
18
19 sbit key3 = P3^5;
20 sbit key2 = P3^4;//Up
21 sbit key1 = P3^3;//Down
22 sbit key0 = P3^2;//Modle
23
24 //1302调时函数
25 void data_change(uchar data_name,uchar up_down,uchar max,uchar n)
26 {
27 1 uchar tmp;
28 1 uchar tmp1;
29 1
30 1 tmp1 = Read1302(data_name);
31 1 tmp = ((tmp1>>4)&0x0f)*10 + (tmp1 & 0x0f);
32 1
33 1 if (up_down){
34 2 if(tmp < max){
35 3 tmp+=n;
36 3 tmp1=(((tmp/10)<<4) | (tmp%10));
37 3 Write1302(data_name,tmp1);
38 3 }
39 2 }
40 1 else{
41 2 if(tmp >= n){
42 3 tmp-=n;
43 3 tmp1=(((tmp/10)<<4) | (tmp%10));
44 3 Write1302(data_name,tmp1);
45 3 }
46 2 }
47 1 }
48
49
50
51 main()
52 {
53 1 uint loop_count=0;
54 1 uint key0_count=0;
55 1 uint key1_count=0;
C51 COMPILER V8.02 MAIN 05/12/2007 12:43:55 PAGE 2
56 1 uint key2_count=0;
57 1 uchar modle_flag=0;
58 1 uchar cursor_line=2;
59 1 uchar cursor_conumn=10;
60 1 uchar nset_time=1;
61 1
62 1 SYSTEMTIME CurrentTime;
63 1 Initial_DS1302();
64 1 LCD_Init();
65 1 LCD_SET_CURSOR(1,1);
66 1 Print("Date:",5);
67 1 LCD_SET_CURSOR(2,1);
68 1 Print("Time:",5);
69 1
70 1 while(1){
71 2 if(loop_count++>10000){
72 3 DS1302_GetTime(&CurrentTime);
73 3 DateToStr(&CurrentTime);
74 3 TimeToStr(&CurrentTime);
75 3
76 3 LCD_CURSOR_ONOFF(1);//关闭光标
77 3 LCD_SET_CURSOR(1,6);
78 3 Print(CurrentTime.DateString,8);
79 3
80 3 LCD_SET_CURSOR(2,6);
81 3 Print(CurrentTime.TimeString,8);
82 3
83 3 loop_count = 0;
84 3 if(nset_time) LCD_CURSOR_ONOFF(1);
85 3 else{
86 4 LCD_CURSOR_ONOFF(2);//显示光标
87 4 LCD_SET_CURSOR(cursor_line,cursor_conumn);
88 4 }
89 3 }
90 2
91 2 if(key0==0) {
92 3 if(key0_count++>25000) {
93 4 nset_time = 0;
94 4 modle_flag++;
95 4 switch(modle_flag) {
96 5 case 1:
97 5 cursor_line = 2;
98 5 cursor_conumn = 10;
99 5 break;
100 5
101 5 case 2:
102 5 cursor_line = 2;
103 5 cursor_conumn = 9;
104 5 break;
105 5 case 3:
106 5 cursor_line = 2;
107 5 cursor_conumn = 7;
108 5 break;
109 5
110 5 case 4:
111 5 cursor_line = 2;
112 5 cursor_conumn = 6;
113 5 break;
114 5 case 5:
115 5 cursor_line = 1;
116 5 cursor_conumn = 13;
117 5 break;
C51 COMPILER V8.02 MAIN 05/12/2007 12:43:55 PAGE 3
118 5
119 5 case 6:
120 5 cursor_line = 1;
121 5 cursor_conumn = 12;
122 5 break;
123 5 case 7:
124 5 cursor_line = 1;
125 5 cursor_conumn = 10;
126 5 break;
127 5
128 5 case 8:
129 5 cursor_line = 1;
130 5 cursor_conumn = 9;
131 5 break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -