📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 11/12/2007 01:02:04 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 #include <reg52.h>
2 #include"ds18b20.h"
3 #include"DS1302.h"
4 #include"TG12864P.h"
5 #include"beep.h"
6 #include"key.h"
7 #include"led.h"
8 #include"keyboard.h"
9 #include"delay.h"
10 unsigned char(* bmp[4])[256]={ &bmp0,&bmp1,&bmp2,&bmp3}; //图片指针
11 /******************************************************************
12 操作系统主框架
13
14 系统全局变量声明区:
15 menu 系统菜单指针
16 fun 系统功能函数指针
17 *************************************************************************/
18 unsigned char menu=0;
19 unsigned char fun1=0,fun2=0,
20 clock_flag=0; //闹钟开关的标志位
21 unsigned char test=0; //tsst
22 unsigned char * print[]={0,0,0,0,0,0,0} ;
23
24 extern unsigned char hour_sound, //闹钟 时
25 minute_sound, //闹钟 秒
26 zhengshu;
27
28 /******************************************************************
29 系统初始话函数
30 包括全部模块的初始化函数
31 *******************************************************************/
32 void init_system()
33 {
34 1 Reset_18B20();
35 1 LcmInit();
36 1 init_1302();
37 1 init_keyboard();
38 1 init_1302();
39 1 Time0_Init();
40 1 }
41 /******************************************************************
42 接着是主函数与各个模块的联动函数
43 *******************************************************************/
44
45
46
47
48 /*****************************************************************
49 12864与键盘联动函数
50 在12864上显示键盘输入的字符
51 按下esc 或者win 建就
52 要求操作者选择是否保存输入的
53 文本。
54 然后
55 返回主界面
C51 COMPILER V8.02 MAIN 11/12/2007 01:02:04 PAGE 2
56
57 *****************************************************************/
58 void screen()
59 {
60 1 uchar t=0,
61 1 temp=0,
62 1 pos=0, //记录输入光标位置 ,输入一个字母或数字,光标加一
63 1 cap=0,
64 1 flag=0;
65 1 PutStr(0,2,"请选择");//按下推出建: esc 或win 后
66 1 PutStr(1,0,"1 输入文本");
67 1 PutStr(2,0,"2 打开文本");
68 1 while(1)
69 1 {
70 2 led_display(test);
71 2 temp=sp2key_scan();
72 2 if(temp!=255)
73 2 {
74 3 test=temp;
75 3 LcmClearTXT();
76 3 t=temp;
77 3 temp=key_table[t];
78 3 if(temp=='1')flag=1;
79 3 if(temp=='2')flag=2;
80 3 led_display(t); //数码管显示
81 3 if(!flag)
82 3 {
83 4 PutStr(1,1,"输入错误!");
84 4 delayms(700);
85 4 LcmClearTXT();
86 4 PutStr(0,2,"请选择");//按下推出建: esc 或win 后
87 4 PutStr(1,0,"1 输入文本");
88 4 PutStr(2,0,"2 打开文本");
89 4 }
90 3 if(flag)
91 3 {
92 4 if(flag==1) break;
93 4 else
94 4 { //读取24c256中的文本
95 5 while(1)
96 5 {
97 6 temp=sp2key_scan();
98 6 if(temp!=255) //按下任意建推出
99 6 {
100 7 break;
101 7 flag=3;
102 7 }
103 6 if(flag==3)break;
104 6 }
105 5 }
106 4 }
107 3 }
108 2 }
109 1 LcmClearTXT();
110 1 while(1)
111 1 {
112 2 temp=sp2key_scan();
113 2 if(temp!=255)
114 2 {
115 3 t=temp;
116 3 if(t<48) //输入为字母或其他符号
117 3 {
C51 COMPILER V8.02 MAIN 11/12/2007 01:02:04 PAGE 3
118 4 if(pos==64)
119 4 {
120 5 pos=0;
121 5 LcmClearTXT();
122 5 }
123 4 if(t==47) //删除
124 4 {
125 5 if(pos)
126 5 {
127 6 Lcm_clear_char(pos);
128 6 if((pos%2))pos-=1;
129 6 if(pos)pos--;
130 6 }
131 5 }
132 4 else
133 4 {
134 5 temp=key_table[t];
135 5 if(t>9&&t<36)temp-=cap*32;//根据cap 令显示为大写或小写
136 5 input(temp,pos);
137 5 pos++;
138 5 }
139 4 }
140 3 if(t==48)//换行
141 3 {
142 4 if(pos<48)
143 4 {
144 5 pos+=16;
145 5 Location_xy_12864(pos/16,(pos%16)/2);
146 5 }
147 4 else
148 4 {
149 5 LcmClearTXT();
150 5 pos=0;
151 5 }
152 4 }
153 3 if(t==49)cap=!cap;//cap:大小写转换
154 3 if(t==51||t==52) //按下推出建: esc 或win 后
155 3 break;
156 3 }
157 2 led_display(t);
158 2 }
159 1 LcmClearTXT();
160 1 PutStr(0,2,"save ?");
161 1 PutStr(1,0,"y save");
162 1 PutStr(2,0,"n no");
163 1 while(1)
164 1 {
165 2 temp=sp2key_scan();
166 2 if(temp!=255)
167 2 {
168 3 LcmClearTXT();
169 3 t=temp;
170 3 temp=key_table[t];
171 3 if(temp=='y'||temp=='Y')
172 3 {
173 4 LcmClearTXT();
174 4 PutStr(1,2,"saving....");
175 4 delayms(500);
176 4 PutStr(2,2,"please wait..");
177 4 //write_24c256(unsigned char *Data,unsigned char length,unsigned int add)
178 4 delayms(1000);
179 4 LcmClearTXT();
C51 COMPILER V8.02 MAIN 11/12/2007 01:02:04 PAGE 4
180 4 return;
181 4 }
182 3 if(temp=='n'||temp=='N')return;
183 3 led_display(t); //数码管显示
184 3 LcmClearTXT();
185 3 PutStr(1,1,"输入错误!");
186 3 delayms(800);
187 3 LcmClearTXT();
188 3 PutStr(0,0,"save"); //按下推出建: esc 或win 后
189 3 PutStr(1,0,"y save");
190 3 PutStr(2,0,"n no");
191 3 }
192 2 }
193 1 }
194
195 /**************************************************************************
196 系统菜单选择函数
197 ***************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -