?? key.lst
字號:
C51 COMPILER V8.08 KEY 09/30/2008 16:39:08 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include "key.h"
3 #include "delay.h"
4
5 unsigned char ledfast=0; //LED每秒閃爍3次時使用的中間變量
6 unsigned char ledslow=0; //LED每秒閃爍1次時使用的中間變量
7 unsigned char keyvalue=0X03; //鍵值0-短按,1-長按,2-亮,3-滅
8 unsigned char count=0; //按鍵長按、短按計數值
9 /*
10 KEY =P0^4;
11 MICKEY =P0^5;
12 MICLED =P2^0;
13 */
14 /*MICKEY\KEY狀態檢測函數*/
15 void KeyStatus(void)
16 {
17 1 unsigned char temp,temp1,temp2;
18 1
19 1 temp=P0&0x30;
20 1 Delay(500); //消除抖動
21 1 temp1=P0&0X30;
22 1
23 1 if((temp!=0x30)&&(temp1==temp))//有按鍵按下
24 1 {
25 2 DelayMs(20); //延時等待按鍵抬起
26 2 temp2=P0&0x30;
27 2 switch(temp1)
28 2 {
29 3 case 0x10:
30 3 if(temp2!=0x10)//按鍵抬起
31 3 {
32 4 if(MICLED==OFF) keyvalue=2;
33 4 else keyvalue=3;
34 4 }
35 3 break;
36 3
37 3 case 0x20:
38 3 if(temp2!=0x20)//按鍵抬起
39 3 {
40 4 if(count!=10) keyvalue=0;//KEY短按抬起
41 4 else count=0; //長按抬起,計數清零
42 4 }
43 3 else
44 3 {
45 4 if(count==10) keyvalue=1; //長按
46 4 else count++;
47 4 }
48 3 break;
49 3
50 3 default: break;
51 3 }
52 2 }
53 1 }
54
55 /*鍵值處理函數*/
C51 COMPILER V8.08 KEY 09/30/2008 16:39:08 PAGE 2
56 void KeyDeal(void)
57 {
58 1 switch(keyvalue)
59 1 {
60 2 case 0: MICLED=ledfast;break;
61 2 case 1: MICLED=ledslow;break;
62 2 case 2: MICLED=ON;break;
63 2 case 3: MICLED=OFF;break;
64 2 default:break;
65 2 }
66 1 }
67
68 /*設置鍵值函數*/
69 void Setkeyvalue(unsigned char value)
70 {
71 1 keyvalue=value;
72 1 }
73
74
75 /*T2中斷函數,用作控制1秒內D4閃爍的次數*/
76 void Timer2_INTR() interrupt 5 //35ms
77 {
78 1 static unsigned char time2_counter; //靜態變量,用于計算T2的溢出次數
79 1 time2_counter++;
80 1 if(time2_counter%7==0) ledfast=~ledfast; //溢出5次為約為1/3秒,改變LED快閃的臨時變量
81 1 if(time2_counter==22)
82 1 {
83 2 time2_counter=0; //溢出次數清零.重新計數
84 2 ledslow=~ledslow; //溢出16次為約為1秒,改變LED慢閃的臨時變量
85 2 }
86 1 RCAP2H=0x00; //定時器置初值
87 1 RCAP2L=0x00;
88 1 TF2=0; //T2定時器需手動清除溢出標志
89 1 }
90
91 /*T2初始函數*/
92 void InitTimer2()
93 {
94 1 RCAP2H=0x00; //定時器置初值
95 1 RCAP2L=0x00;
96 1 EA=1; //打開中斷總開關
97 1 ET2=1; //允許T2中斷
98 1 TR2=1; //啟動T2中斷
99 1 }
100
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 190 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 2
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 + -