?? relay.lst
字號:
C51 COMPILER V8.12 RELAY 04/06/2009 09:43:18 PAGE 1
C51 COMPILER V8.12, COMPILATION OF MODULE RELAY
OBJECT MODULE PLACED IN RELAY.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE RELAY.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*******************************************************************
2 * *
3 * ME850單片機開發實驗儀演示程序 - 鍵控制繼電器 *
4 * *
5 * K1- 吸合鍵,K2- 釋放鍵 *
6 * *
7 * 版本: V1.0 (2008/08/16) *
8 * 作者: gguoqing (Email: gguoqing@willar.com) *
9 * 作者: gguoqing (gguoqing@willar.com) *
10 * 網站: www.sofi-tech.com(碩飛科技) www.mcusj.com(偉納單片機世界) *
11 * 郵箱: sofitech@tom.com *
12 * *
13 *【版權】Copyright(C)偉納電子 www.willar.com All Rights Reserved *
14 *【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息! *
15 * *
16 *******************************************************************/
17
18 #include <reg52.h>
19
20 char code reserve[3]_at_ 0x3b; //保留0x3b開始的3個字節
21
22 sbit K1 = P1 ^ 4;
23 sbit K2 = P1 ^ 5;
24 sbit relay = P3 ^ 6;
25
26 unsigned char key_new, key_old;
27
28 /**********************************************************
29
30 延時函數
31
32 **********************************************************/
33 void delayms(unsigned int ms)
34 {
35 1 unsigned char k;
36 1 while (ms--)
37 1 {
38 2 for (k = 0; k < 114; k++)
39 2 ;
40 2 }
41 1 }
42
43 /********************************************************
44
45 掃描健盤函數
46
47 ********************************************************/
48 unsigned char scan_key()
49 {
50 1 key_new = 0x00;
51 1 key_new |= K2;
52 1 key_new <<= 1; //左移1位
53 1 key_new |= K1;
54 1 return key_new; //無鍵按下 key_new=0x03。
55 1 }
C51 COMPILER V8.12 RELAY 04/06/2009 09:43:18 PAGE 2
56
57 /**********************************************************
58
59 主函數
60
61 **********************************************************/
62 void main(void)
63 {
64 1 P0 = 0xff; //初始化端口
65 1 P2 = 0xff;
66 1 P1 = 0xf0; //置P1高四位為輸入
67 1 key_old = 0x03; //初始鍵比較值
68 1 relay = 1; //繼電器釋放
69 1
70 1 while (1)
71 1 {
72 2 scan_key();
73 2 if (key_new != key_old)
74 2 {
75 3 delayms(10); //延時去抖動
76 3 scan_key(); //再次判健是否按下
77 3 if (key_new != key_old)
78 3 {
79 4 key_old = key_new; //保存按鍵狀態
80 4 if ((key_new &0x01) == 0) //K1鍵按下
81 4 relay = 0; //繼電器吸合
82 4
83 4 if ((key_new &0x02) == 0) //K2鍵按下
84 4 relay = 1; //繼電器釋放
85 4 }
86 3 }
87 2 }
88 1 }
89
90 /**********************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 103 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 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 + -