?? timermanage.lst
字號:
C51 COMPILER V7.02b TIMERMANAGE 06/03/2004 14:00:29 PAGE 1
C51 COMPILER V7.02b, COMPILATION OF MODULE TIMERMANAGE
OBJECT MODULE PLACED IN TimerManage.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TimerManage.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /**************************************************************
2 定時器管理、計時時鐘
3 設計者:彭恩文
4 日期:2003/11/02
5 **************************************************************/
6
7 #include "fx2.h"
8 #include "fx2regs.h"
9 #include "string.h"
10 #include "io.h"
11 #include "led.h"
12 #include "key.h"
13 #include "OTimer.h"
14
15 BYTE Mini; //分鐘
16 BYTE Second; //秒
17
18 void Disp_Updata()
19 {
20 1 DispBuf[0] = Second % 10; //更新顯示
21 1 DispBuf[1] = Second / 10;
22 1 DispBuf[2] = Mini % 10+0x80;
23 1 DispBuf[3] = Mini / 10;
24 1 }
25
26 void Clock_Updata(BYTE m_s_flag, BYTE inc_dec_flag)
27 {
28 1 if(m_s_flag == 0) //分鐘
29 1 {
30 2 if(inc_dec_flag == 0) //加1
31 2 {
32 3 Mini++;
33 3 if(Mini >= 60)
34 3 {
35 4 Mini = 0;
36 4 }
37 3 }
38 2 else if(inc_dec_flag == 1) //減1
39 2 {
40 3 Mini--;
41 3 if(Mini >= 60)
42 3 {
43 4 Mini = 59;
44 4 }
45 3 }
46 2 else if(inc_dec_flag == 2) //清零
47 2 {
48 3 Mini = 0;
49 3 }
50 2 else if(inc_dec_flag == 3) //置為59
51 2 {
52 3 Mini = 59;
53 3 }
54 2
55 2 }
C51 COMPILER V7.02b TIMERMANAGE 06/03/2004 14:00:29 PAGE 2
56 1 else //秒
57 1 {
58 2 if(inc_dec_flag == 0) //加1
59 2 {
60 3 Second++;
61 3 if(Second >= 60)
62 3 {
63 4 Second = 0;
64 4 }
65 3 }
66 2 else if(inc_dec_flag == 1) //減1
67 2 {
68 3 Second--;
69 3 if(Second >= 60)
70 3 {
71 4 Second = 59;
72 4 }
73 3 }
74 2 else if(inc_dec_flag == 2) //清零
75 2 {
76 3 Second = 0;
77 3 }
78 2 else if(inc_dec_flag == 3) //置為59
79 2 {
80 3 Second = 59;
81 3 }
82 2 }
83 1 Disp_Updata();
84 1 }
85
86 void main()
87 {
88 1 BYTE i;
89 1 BYTE temp_data;
90 1
91 1 IO_Init();
92 1 REG_Init();
93 1 Disp_Init();
94 1 OKey_RP_Init();
95 1 Sys_TimerInit (); //系統定時器初始化
96 1 Mini = 0;
97 1 Second = 0;
98 1 /**************延時測試***************/
99 1 for(i = 0; i < 17; i++)
100 1 {
101 2 memset(DispBuf,i,4);//送顯示數據
102 2 delay(500); //延時0.5S //等待定時
103 2 }
104 1 memset(DispBuf,0,4);
105 1 Sys_TimerRequest(OTimerID0,10,1) ; //1S定時
106 1 Sys_TimerRequest(OTimerID1,5,1) ; //word led flash
107 1 while(1)
108 1 {
109 2 Led_Display();
110 2 temp_data = Analyse_OTimerID(); //查詢邏輯定時器
111 2 if(temp_data == OTimerID0) //1S定時到
112 2 {
113 3 Second++;
114 3 if(Second == 60)
115 3 {
116 4 Second = 0;
117 4 Mini++;
C51 COMPILER V7.02b TIMERMANAGE 06/03/2004 14:00:29 PAGE 3
118 4 if(Mini == 60)
119 4 {
120 5 Mini = 0;
121 5 }
122 4 }
123 3 Disp_Updata();
124 3 }
125 2 else if(temp_data == OTimerID1) //WORD LED 閃爍定時器
126 2 {
127 3 IOE ^= WORK_LED;
128 3 }
129 2 ////////////////////////////////////////////////////////////
130 2 temp_data = OKey_RP_Scan(); //鍵盤掃描
131 2 switch(temp_data)
132 2 {
133 3 case 3:
134 3 Clock_Updata(0,0); //分鐘加1
135 3 break;
136 3 case 1:
137 3 Clock_Updata(0,1); //分鐘減1
138 3 break;
139 3 case 7:
140 3 Clock_Updata(1,0); //秒加1
141 3 break;
142 3 case 5:
143 3 Clock_Updata(1,1); //秒減1
144 3 break;
145 3 case 2:
146 3 Clock_Updata(0,2); //分鐘清零
147 3 break;
148 3 case 4:
149 3 Clock_Updata(0,3); //分鐘置‘59’
150 3 break;
151 3 case 6:
152 3 Clock_Updata(1,2); //秒清零
153 3 break;
154 3 case 8:
155 3 Clock_Updata(1,3); //秒置‘59’
156 3 break;
157 3 default:break;
158 3 }
159 2 }
160 1 }
161
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 357 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 1
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 + -