📄 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 + -