📄 chengxu.lst
字号:
C51 COMPILER V8.05a CHENGXU 06/01/2012 23:14:51 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE CHENGXU
OBJECT MODULE PLACED IN chengxu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE chengxu.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /********************************************************************
2 汇诚科技
3
4 实现功能:按键控制继电器通断1秒启动停止
5 使用芯片:STC15F104E
6 晶振:12MHZ
7 波特率:9600
8 编译环境:Keil
9 作者:zhangxinchunleo
10 网站:www.ourhc.cn
11 淘宝店:汇诚科技 http://shop36330473.taobao.com
12 【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
13
14 *********************************************************************/
15 /********************************************************************/
16
17 #include<reg52.h> //库文件
18 #define uchar unsigned char//宏定义无符号字符型
19 #define uint unsigned int //宏定义无符号整型
20 /********************************************************************
21 初始定义
22 *********************************************************************/
23 uchar sec; //定义计数值,每过1/10 秒,sec 加一
24 uchar keycnt=0;//按下次数值
25 uint tcnt; //键值判断
26 /********************************************************************
27 I/O定义
28 *********************************************************************/
29 sbit P33=P3^3; //定义单片机P3口的第3位 (即P3.3)
30 sbit P3_5=P3^5;
31 /********************************************************************
32 延时函数
33 *********************************************************************/
34 void delay(uchar t)
35 {
36 1 uchar i,j;
37 1 for(i=0;i<t;i++)
38 1 {
39 2 for(j=13;j>0;j--);
40 2 { ;
41 3 }
42 2 }
43 1 }
44
45 /********************************************************************
46 按键扫描函数
47 *********************************************************************/
48 void KEY() //按键扫描程序
49 {
50 1 if(P3_5==0)
51 1 {
52 2 delay(200);
53 2 if(P3_5==0)
54 2 {
55 3 P33=1;
C51 COMPILER V8.05a CHENGXU 06/01/2012 23:14:51 PAGE 2
56 3 keycnt=1;
57 3 /********************************************************************
58 3 按下次数判断函数
59 3 *********************************************************************/
60 3 switch(keycnt) //按下次数判断
61 3 {
62 4 case 1: //第一次按下
63 4 TH0=0x06; //对TH0 TL0 赋值
64 4 TL0=0x06;
65 4 TR0=1; //开始定时
66 4 break;
67 4 }
68 3
69 3 }
70 2 }
71 1 }
72 /********************************************************************
73 定时中断服务函数
74 *********************************************************************/
75 void t0(void) interrupt 1 using 0 //定时中断服务函数
76 {
77 1 tcnt++; //每过250ust tcnt 加一
78 1 keycnt=0; //重新开始判断键值
79 1 if(tcnt==400) //计满400 次(1/10 秒)时
80 1 {
81 2 tcnt=0; //重新再计
82 2 sec++;
83 2 if(sec==10) //定时10 秒,在从零开始计时
84 2 {
85 3 sec=0;
86 3 P33=0; //继电器断开
87 3 TR0=0; //定时结束
88 3 delay(200);
89 3 delay(200);
90 3 while(P3_5==0);
91 3 delay(200);
92 3 delay(200);
93 3 delay(200);
94 3 delay(200);
95 3 delay(200);
96 3 delay(200);
97 3
98 3 }
99 2 }
100 1 }
101
102 /********************************************************************
103 主函数
104 *********************************************************************/
105 void main()
106 {
107 1 TMOD=0x02; //定时器工作在方式2
108 1 ET0=1;
109 1 EA=1;
110 1 sec=0;
111 1 TR0=0;
112 1 P33=0;
113 1 while(1)
114 1 {
115 2 KEY();
116 2 }
117 1 }
C51 COMPILER V8.05a CHENGXU 06/01/2012 23:14:51 PAGE 3
118
119
120 /********************************************************************
121 结束
122 *********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 141 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 ----
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 + -