📄 流水灯.lst
字号:
C51 COMPILER V8.09 流水灯 08/21/2008 14:41:17 PAGE 1
C51 COMPILER V8.09, COMPILATION OF MODULE 流水灯
OBJECT MODULE PLACED IN 流水灯.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE 流水灯.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*===============================================================
2 本实验:
3
4 register为寄存器变量。在C语言中,如果有一些使用频繁,则为
5
6 存取变量的值要花费不少时间。为了提高执行效率,C语言允许将局
7
8 部变量的值放到CPU的寄存器中,需要是直接从寄存器取出草较运算,
9
10 不需要再到内存中取。由于堵寄存器的存取速度远高于对内存的存
11
12 取速度,因此这样可以提高执行效率。这种变量叫做寄存器变量,
13
14 用关键字register作声明。
15
16
17 注: (1):主芯片AT89S52使用11.0592M晶振
18
19 (2):Keil uV3 3.30编译运行通过
20
21 (3):本例程在 Dream型开发板 平台上成功运行通过
22
23 (4):更多学习资源浏览:(http://www.dream-core.cn)
24
25 ==================================================================*/
26 #include <reg52.h>
27 #define uchar unsigned char
28 #define uint unsigned int
29 void delay(uint x)
30 {
31 1 register uint y;
32 1 for(;x;x--)
33 1 for(y=0;y<255;y++);
34 1 }
35 void main()
36 {
37 1 uint z;
38 1 uchar temp;
39 1 while(1)
40 1 {
41 2 temp=0x01;//让流水灯从左向右逐个闪动。
42 2 for(z=0;z<8;z++)
43 2 {
44 3 P1=~temp;//把temp值取反付给P1。
45 3 delay(50);
46 3 temp<<=1;//temp值左移一位。
47 3 }
48 2 temp=0x80;//让流水灯从右向左逐个闪动。
49 2 for(z=0;z<8;z++)
50 2 {
51 3 P1=~temp;
52 3 delay(50);
53 3 temp>>=1;//temp值右移取反付给P1。
54 3 }
55 2 temp=0xfe; //让流水灯从左向右依次全部点亮
C51 COMPILER V8.09 流水灯 08/21/2008 14:41:17 PAGE 2
56 2 for(z=0;z<8;z++)
57 2 {
58 3 P1=temp;
59 3 delay(50);
60 3 temp<<=1;
61 3 }
62 2 temp=0x7f;
63 2 for(z=0;z<8;z++) //让流水灯从右向左依次全部点亮
64 2 {
65 3 P1=temp;
66 3 delay(50);
67 3 temp>>=1;
68 3 }
69 2 }
70 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 134 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -