📄 lesson.lst
字号:
C51 COMPILER V7.10 LESSON 07/01/2005 09:27:01 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE LESSON
OBJECT MODULE PLACED IN lesson.OBJ
COMPILER INVOKED BY: D:\PROGRAM FILES\KEIL\C51\BIN\C51.EXE lesson.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 //**********************************************************************************
2 //本函数模块来自"51单片机世界",作者版主丁丁(聂小猛)。
3 //主页地址http://www.mcu51.com
4 //本程序为本站推出的"MCU51-63K仿真器"及"DX-51多功能试验板"而设计的,详情请到本站查看.
5 //"51单片机世界"版权所有,未经允许,不得抄袭作为商业用途
6 //**********************************************************************************
7 //DX-51多功能试验板的试验课程函数模块
8 #define uchar unsigned char
9 #define uint unsigned int
10 #define ulong unsigned long
11 #include <reg52.h>
12 #include "study.h"
13
14 //*****************************
15 //设置液晶的灰度
16 void setlcdlight(void)
17 {
18 1 uchar ch;
19 1 cls(8); setcursor(0,0); //显示提示
20 1 lcdstring("按UP变黑\r\n按DOWN变淡\r\n按ENTER退出\r\n当前灰度:");
21 1 while(1)
22 1 {
23 2 setcursor(9,6);
24 2 lcddigit(lcdlight); //打印当前灰度
25 2 ch=getkey(1000); //取键值
26 2 switch(ch)
27 2 {
28 3 case 'U': //按up的处理
29 3 light(lcdlight++); //灰度加1,送入液晶
30 3 if(lcdlight>63)lcdlight=63; //设置上限
31 3 break;
32 3 case 'D': //按down键的处理
33 3 light(lcdlight--); //灰度减1
34 3 if(lcdlight<1)lcdlight=1; //设置下限
35 3 break;
36 3 case 'C': //按cacel或者enter退出
37 3 case 'Y':
38 3 return;
39 3 }
40 2 }
41 1 }
42 //*******************************************
43 //走马灯试验
44 sbit LED1=P1^0; //定义发光管的对应管脚位置
45 sbit LED2=P1^1;
46 sbit LED3=P1^2;
47 sbit LED4=P1^3;
48 void led4(void)
49 {
50 1 uint n;
51 1 cls(8);
52 1 setcursor(0,0);
53 1 lcdstring("4个LED正在做跑马灯运动,任意键退出。");
54 1 do
55 1 {
C51 COMPILER V7.10 LESSON 07/01/2005 09:27:01 PAGE 2
56 2 LED4=1; //点亮一个灯,灭掉一个灯
57 2 LED1=0;
58 2 for(n=0;n<30000;n++); //延时
59 2 LED1=1;
60 2 LED2=0;
61 2 for(n=0;n<30000;n++);
62 2 LED2=1;
63 2 LED3=0;
64 2 for(n=0;n<30000;n++);
65 2 LED3=1;
66 2 LED4=0;
67 2 for(n=0;n<30000;n++);
68 2 }while(getkey(1)==0); //有键按下结束
69 1 }
70 //**************************
71 //通讯试验
72 void common(void)
73 {
74 1 uchar c;
75 1
76 1 cls(8);setcursor(0,0);
77 1 lcdstring("通讯波特率38400bps.按任意键开始。");
78 1 while(getkey(1000)==0); //等待按键
79 1 cls(8);setcursor(0,0);
80 1 lcdstring("所按键值都会送到串口,在计算机显示。按CANCEL退出。");
81 1 putstring("所有在此窗口按键都会送往单片机并在液晶显示出来。按ESC退出。\r\n");
82 1 while(1)
83 1 {
84 2 while(inbufsign) //如果有串口数据到来则处理数据
85 2 {
86 3 c=getbyte(); //取出一个串口缓冲区的数据
87 3 if(c==0x11)break;//过滤掉全速运行时KEIL发出的联机字符"0x11"
88 3 beep(1); //发一声提示音
89 3 putbyte(c); //反显到计算机
90 3 lcdchar(c); //打印到屏幕
91 3 if(c==0x1b) //如果收到ESC则退出
92 3 return;//收到计算机发出的ESC退出接收测试继续运行
93 3 }
94 2
95 2 if((c=getkey(1000))=='C') //如果按键cacel则退出
96 2 return;//
97 2 else if(c!=0) //如果其他按键,将该键值送到串口
98 2 putbyte(c);
99 2
100 2 }
101 1 }
102
103
104 //**************************************************
105 //试验课程
106 void lesson(void)
107 {
108 1 uchar ch;
109 1 uchar xdata *x;
110 1
111 1 while(1)
112 1 {
113 2 UPM: cls(8); //显示提示信息
114 2 setcursor(0,0);
115 2 lcdstring("1灰度2跑马灯\r\n3串口4读闪存\r\n5唱歌6游戏↓");
116 2 MEMU: while((ch=getkey(1000))==0); //等待按键
117 2 switch(ch)
C51 COMPILER V7.10 LESSON 07/01/2005 09:27:01 PAGE 3
118 2 {
119 3 case '1': //设置灰度
120 3 setlcdlight();
121 3 break;
122 3
123 3 case '2': //跑马灯
124 3 led4();
125 3 break;
126 3
127 3 case '3': //通讯试验
128 3 common();
129 3 break;
130 3
131 3 case '4': //读flash内容
132 3 readflash();
133 3 break;
134 3
135 3 case '5': //唱歌
136 3 playmusic();
137 3 break;
138 3
139 3 case '6':
140 3
141 3 break;
142 3
143 3 case '7':
144 3 //测试外部内存,运行完这个循环,x=0x8000则正常
145 3 cls(8);setcursor(0,0);
146 3 for(x=0;x<0x8000;x++)
147 3 {
148 4 ch=*x; //保存该地址的值
149 4 *x=0xaa; //写入0xaa,读出检测
150 4 if(*x!=0xaa)
151 4 break;
152 4 *x=0x55; //写入0x55,读出检测
153 4 if(*x!=0x55)
154 4 break;
155 4 *x=ch; //恢复该地址的值
156 4 }
157 3 if(x==0x8000)
158 3 {
159 4 lcdstring("32K外部内存全部正常!");
160 4 beep(10);// 哔一声内存检测正常
161 4 }
162 3 else
163 3 {
164 4 lcdstring("外部内存不正常!请检查。");
165 4 beep(100);
166 4 }
167 3 lcdstring("任意键退出。");
168 3 while(getkey(1)==0);
169 3 break;
170 3
171 3 case '8': //写文件
172 3 write_file();
173 3 break;
174 3
175 3 case '9':
176 3 break;
177 3
178 3 case '0':
179 3 break;
C51 COMPILER V7.10 LESSON 07/01/2005 09:27:01 PAGE 4
180 3
181 3 case 'D': //下一页菜单
182 3 cls(8);
183 3 setcursor(0,0);
184 3 lcdstring("7内存检测 ↑\r\n8写文件9.USB\r\n0网卡通讯");
185 3 goto MEMU;
186 3 case 'U': //回到上一页菜单
187 3 goto UPM;
188 3
189 3 case 'C': //按cancel退出到首页面,其实是程序软复位
190 3 ((void(code *)(void))0x0000)();
191 3 break;
192 3
193 3 }
194 2 }
195 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 570 ----
CONSTANT SIZE = 368 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
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 + -