📄 jt 21-4.lst
字号:
C51 COMPILER V7.06 JT_21_4 01/07/2007 10:21:22 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE JT_21_4
OBJECT MODULE PLACED IN JT 21-4.OBJ
COMPILER INVOKED BY: C:\Keil7.06\C51\BIN\C51.EXE JT 21-4.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /* 文件名:JT 21-4.c */
2 /* 程序功能:交通信号灯控制(改进)*/
3 #include <AT89X51.H> /* 头文件 */
4 char count; /* 声明count为字符变量 */
5 bit flag; /* 声明flag为位变量 */
6 char sum =0; /* 声明sum为字符变量并赋初始值0 */
7 xhd( ); /* 信号灯函数xhd( ) */
8 /* ―――――――― 主函数(主程序) ―――――――――――*/
9 main( ) /* 主函数 */
10 {
11 1 TMOD=0x01; /* 设定T0为模式1 */
12 1 TH0=-(50000/256); /* 设定时器初始值50000 */
13 1 TL0=-(50000%256);
14 1 EA=1; /* 总允许中断 */
15 1 ET0=1; /* 允许定时器T0中断 */
16 1 TR0=1; /* 启动定时器工作 */
17 1
18 1 EX0=1; /* 允许外部中断0中断 */
19 1 PX0=1; /* 外部中断0为高优先级 */
20 1
21 1 P1=0xff; /* P1初始值,关闭所有信号灯 */
22 1 xhd( ); /* 调用信号灯函数 */
23 1 }
24 /* ――――――― 中断函数(中断服务程序) ―――――――― */
25 T0_srv( ) interrupt 1 using 1 /* 中断服务程序 */
26 {
27 1 TH0=-(50000/256); /* 重装定时器初始值 */
28 1 TL0=-(50000%256);
29 1 count++; /* count加1 */
30 1 if(count==20) /* 判断count是否等于20 */
31 1 {
32 2 count=0; /* count清0,以便从新计数 */
33 2 flag=1; /* 标志位为1 */
34 2 }
35 1 }
36 /* ―――――――― 信号灯函数(子程序) ―――――――― */
37 xhd( ) /* 信号灯函数 */
38 {
39 1 while(1) /* 无限循环 */
40 1 {
41 2 /* ―――――――――――――*/
42 2 P1_3=0; P1_2=0; /*东西红灯亮,南北绿灯亮 */
43 2 while( sum<15) /* 循环15次,延时15秒 */
44 2 {
45 3 while( ! flag ); /* 等待1秒 */
46 3 flag=0; /* 标志位清0 */
47 3 sum++; /* sum加1 */
48 3 }
49 2 sum=0; /* sum清0,以便从新计数 */
50 2 /* ―――――――――――――*/
51 2 P1_2=1; P1_1=0; /* 南北绿灯灭,黄灯亮 */
52 2 while( sum<3) /* 循环3次,延时3秒 */
53 2 {
54 3 while(! flag);
55 3 flag=0;
C51 COMPILER V7.06 JT_21_4 01/07/2007 10:21:22 PAGE 2
56 3 sum++;
57 3 }
58 2 sum=0;
59 2
60 2
61 2 /*―――――――――――――*/
62 2 P1_1=1; P1_0=0; /* 南北黄灯灭,红灯亮 */
63 2 P1_3=1; P1_5=0; /* 东西红灯灭,绿灯亮 */
64 2 while( sum<10) /* 延时10秒 */
65 2 {
66 3 while(! flag);
67 3 flag=0;
68 3 sum++;
69 3 }
70 2 sum=0;
71 2 /* ―――――――――――――*/
72 2 P1_5=1; P1_4=0; /*东西绿灯灭,黄灯亮 */
73 2 while( sum<3) /* 延时3秒 */
74 2 {
75 3 while(! flag);
76 3 flag=0;
77 3 sum++;
78 3 }
79 2 sum=0;
80 2 /* ――――――――――――― */
81 2 P1_4=1; P1_0=1; /* 东西黄灯灭,南北红灯灭 */
82 2 }
83 1 }
84 /* ―――――― 外部中断函数(外部中断服务程序)――――― */
85 int0_srv( ) interrupt 0 using 2
86 {
87 1 char a;
88 1 unsigned int i;
89 1 for (i=0;i<10000;i++);
90 1 if ( INT0==0)
91 1 {
92 2 a=P1; /* 保留P1状态*/
93 2 P1=0xff;
94 2 P1=0xf6; /* 使两边亮起红灯 */
95 2 while (INT0==0); /* 等待开关断开*/
96 2 P1=a; /* 恢复P1状态*/
97 2 }
98 1 }
99
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 186 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -