📄 test.lst
字号:
C51 COMPILER V7.50 TEST 06/28/2007 13:55:48 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE test.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /**************************************************************************
2 * 文 件 名:test.c
3 * 功 能:我的小制作-------万年历( 阴历)
4 * 作 者:卓超
5 * QQ : 305661237
6 **************************************************************************/
7 /****************************文件包含*************************************/
8 #include < reg52.h >
9 #include < character.h >
10 #include < lcd.h >
11 #include < clock.h >
12 #include < sensor.h>
13 #include < calendar.h >
14 #include < key.h >
15
16 /*****************************预定义**************************************/
17 #define uchar unsigned char
18 #define uint unsigned int
19 /****************************************************************************/
20 sbit bell = P2 ^ 0; //定义蜂鸣器端口
21 sbit in = P2 ^ 7; //定义红外检测端口
22 /*****************************************************************************
23 * 名称: Timer0_Service() inturrupt 1
24 * 功能: 中断服务程序 整点报时 3声嘟嘟的声音
25 * 入口参数:
26 * 出口参数:
27 *****************************************************************************/
28 void Timer0_Service() interrupt 1
29 {
30 1 static uchar count = 0;
31 1 static uchar flag = 0; //记录鸣叫的次数
32 1 count = 0;
33 1 TR0 = 0; //关闭Timer0
34 1 TH0 = 0x3c;
35 1 TL0 = 0XB0; //延时 50 ms
36 1 TR0 = 1 ; //启动Timer0
37 1 count ++;
38 1 if( count == 20 ) //鸣叫 1 秒
39 1 {
40 2 bell = ~ bell;
41 2 count = 0;
42 2 flag ++;
43 2 }
44 1 if( flag == 6 )
45 1 {
46 2 flag = 0;
47 2 TR0 = 0; //关闭Timer0
48 2 }
49 1
50 1 }
51 /*****************************************************************************
52 * 名称: Timer2_Servie() interrupt 5
53 * 功能: 中断服务程序 整点报时 一分钟
54 * 入口参数:
55 * 出口参数:
C51 COMPILER V7.50 TEST 06/28/2007 13:55:48 PAGE 2
56 *****************************************************************************/
57 void Timer3_Service() interrupt 5
58 {
59 1 static uchar count;
60 1 TF2 = 0; //软件清除中断标志
61 1 count ++;
62 1 if( in == 1 )
63 1 {
64 2 count = 0; //计算清0
65 2 TR2 = 0; //关闭Timer2
66 2 bell = 1; //关闭蜂鸣器
67 2 }
68 1 if( count == 120 ) // 一分钟后 关闭报警
69 1 {
70 2 count = 0; //计算清0
71 2 TR2 = 0; //关闭Timer2
72 2 bell = 1; //关闭蜂鸣器
73 2 }
74 1 }
75 /******************************************************************************
76 * 函数名称:main()
77 * 功 能:
78 * 入口参数:
79 * 出口参数:
80 ********************************************************************************/
81 void main( void )
82 {
83 1
84 1 uchar clock_time[7] = { 0x00, 0x00, 0x02, 0x01, 0x06, 0x07 }; //定义时间变量 秒 分 时 日 月 年
85 1 uchar alarm_time[2] = { 0, 0}; //闹钟设置 alarm_time[0]: 分钟 alarm_time[1] :小时
86 1 uchar temperature[2]; //定义温度变量 temperature[0] 低8位 temperature[1] 高8位
87 1 Lcd_Initial(); //LCD初始化
88 1 Clock_Initial( clock_time ); //时钟初试化
89 1
90 1 /***********************中断初始化***************************/
91 1 EA = 1; //开总中断
92 1 ET0 = 1; //Timer0 开中断
93 1 ET2 = 1; //Timer2 开中断
94 1 TMOD = 0x01 ; //Timer0 工作方式 1
95 1 RCAP2H = 0x3c;
96 1 RCAP2L = 0xb0; //Timer2 延时 50 ms
97 1
98 1 while( 1 )
99 1 {
100 2 switch( Key_Scan() )
101 2 {
102 3 case up_array:
103 3 {
104 4 Key_Idle();
105 4 }
106 3 break;
107 3 case down_array:
108 3 {
109 4 Key_Idle();
110 4 }
111 3 break;
112 3 case clear_array:
113 3 {
114 4 Key_Idle();
115 4 }
116 3 break;
117 3 case function_array:{
C51 COMPILER V7.50 TEST 06/28/2007 13:55:48 PAGE 3
118 4 Key_Function( clock_time, alarm_time );
119 4 }
120 3 case null:
121 3 {
122 4 Clock_Fresh( clock_time ); //时间刷新
123 4 Lcd_Clock( clock_time ); //时间显示
124 4
125 4 Sensor_Fresh( temperature ); //温度更新
126 4 Lcd_Temperture( temperature ); //温度显示
127 4
128 4 Calendar_Convert( 0 , clock_time );
129 4 Week_Convert( 0, clock_time );
130 4
131 4 //整点报时
132 4 if( ( * clock_time == 0x59 ) && ( * ( clock_time + 1 ) == 0x59 ) )
133 4 {
134 5 bell = 0;
135 5 TR2 = 1; //启动Timer2
136 5 }
137 4 //闹钟报警
138 4 if( * alarm_time == * ( clock_time + 1 ) ) //分钟相吻合
139 4 if( * ( alarm_time + 1 ) == *( clock_time + 2 ) ) //小时相吻合
140 4 {
141 5 bell = 0;
142 5 TR2 = 1; //启动Timer2
143 5 }
144 4 }
145 3 break;
146 3 }
147 2 }
148 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 5559 ----
CONSTANT SIZE = 2057 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 83
IDATA SIZE = ---- ----
BIT SIZE = ---- 15
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -