📄 newc.lst
字号:
C51 COMPILER V7.20 NEWC 02/13/2009 14:54:13 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE NEWC
OBJECT MODULE PLACED IN NewC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE NewC.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*************************************************/
2 /*名称:可控流水灯
3 /*描述:该程序实现的是可控流水灯
4 /* 接P3.2 的键为开始键,按此键则灯开始流动(由下而上)
5 /* 接P3.3 的键为停止键,按此键则停止流动,所有灯暗
6 /* 接P3.4 的键为向上键,按此键则灯由上向下流动
7 /* 接P3.5 的键为向下键,按此键则灯由下向上流动
8 /*作成日期:2009/2/3
9 /*作者:臧成威
10 /*************************************************/
11
12 #include <reg51.h>
13 //#include <intrins.h>
14
15 bit upDown = 1; //定义upDown为流向,1为由下至上,0为由上至下
16 bit onOff = 0; //定义onOff为开关,0为关闭,1为开启
17 unsigned char i = 0; //定义i为计数器,用来累加计数
18
19 void keyProcess (void);
20 void action (void);
21
22 /*************************************************/
23 /*名称:main
24 /*描述:C语言的主函数,该程序的入口
25 /*参数:void
26 /*返回值:void
27 /*作成日期:2009/2/3
28 /*作者:臧成威
29 /*************************************************/
30
31 void main (void)
32 {
33 1 TMOD = 0x01; //设定定时器T0工作在方式1
34 1 TH0 = 0xd8; //初始化定时器初值,使其产生10ms的中断(认为晶振为12MHZ所产生)
35 1 TL0 = 0xf0;
36 1 IE = 0x82; //允许CPU中断,并打开定时器T0中断
37 1 TR0 = 1; //定时器开始定时
38 1 while( 1 ); //等待中断产生
39 1 }
40
41
42 /*************************************************/
43 /*名称:T0_ISR
44 /*描述:定时器T0中断响应函数
45 /*参数:void
46 /*返回值:void
47 /*作成日期:2009/2/3
48 /*作者:臧成威
49 /*************************************************/
50
51 void delay ( unsigned char i )
52 {
53 1 while (i--);
54 1 return ;
55 1 }
C51 COMPILER V7.20 NEWC 02/13/2009 14:54:13 PAGE 2
56
57 void T0_ISR (void) interrupt 1 using 1
58 {
59 1 TH0 = 0xd8; //重装初值
60 1 TL0 = 0xf0;
61 1 keyProcess(); //运行键盘扫描函数
62 1 action(); //运行走马灯函数
63 1 }
64
65
66 /*************************************************/
67 /*名称:keyProcess
68 /*描述:键盘处理函数
69 /*参数:void
70 /*返回值:void
71 /*作成日期:2009/2/3
72 /*作者:臧成威
73 /*************************************************/
74
75 void keyProcess (void)
76 {
77 1 unsigned char key; //定义key为按下键值
78 1 key = P3; //读取P3口
79 1 if ( key == 0xff ) return ; //如果没有键按下,退出函数
80 1 // _nop_(); //延时消抖
81 1 // _nop_();
82 1 // _nop_();
83 1 delay(100);
84 1 if ( key != P3 ) return ;
85 1 switch ( key ) //根据键值处理
86 1 {
87 2 case 0xfb : if ( onOff == 0 ) P1 = 0x7f;
88 2 onOff = 1;
89 2 break;
90 2 case 0xf7 : onOff = 0;
91 2 break;
92 2 case 0xef : upDown = 1;
93 2 break;
94 2 case 0xdf : upDown = 0;
95 2 break;
96 2 default : break;
97 2 }
98 1 }
99
100
101 /*************************************************/
102 /*名称:action
103 /*描述:LED显示函数,根据onOff与upDown来亮灭LED
104 /*参数:void
105 /*返回值:void
106 /*作成日期:2009/2/3
107 /*作者:臧成威
108 /*************************************************/
109
110 void action (void)
111 {
112 1 if ( onOff == 0 ) //如果开关onOff为关,则将P1口重置退出函数
113 1 {
114 2 P1 = 0xff;
115 2 return;
116 2 }
117 1 if ( i == 250 ) //计数器记满250次,灯流动,否则计数器i自加
C51 COMPILER V7.20 NEWC 02/13/2009 14:54:13 PAGE 3
118 1 {
119 2 i = 0;
120 2 if ( upDown == 1 )
121 2 {
122 3 P1 = P1>>1|0x80;
123 3 if ( P1 == 0xff ) P1 = 0x7f;
124 3 }
125 2 else
126 2 {
127 3 P1 = P1<<1|0x01;
128 3 if ( P1 == 0xff ) P1 = 0xfe;
129 3 }
130 2 }
131 1 else
132 1 i++;
133 1 return;
134 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 166 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -