📄 wm1.lst
字号:
C51 COMPILER V6.12 WM1 03/17/2007 00:11:09 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE WM1
OBJECT MODULE PLACED IN wm1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE wm1.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /**********************************************************************
2 ///////////////////////////////////////////////////////////////////////\
3 ////////////////////////////////////////////////////////////////////// \
4 ///////////////////////洗衣机控制器程序////////////////////////////// \
5 //////////////////////////////////////////////////////////////////// \
6 //////////作者:杜洋///////////////////http://doyoung.net////////// \
7 ////////////////////////////////////////////////////////////////// 口口 \
8 //////////测试版 V1.01-C51/////////////////////2007/02/05//////// 口口 \
9 //////////////////////////////////////////////////////////////// \
10 ===============================================================|--------------|
11 ///////////////////////////////////////////////////////////////|//////////////|
12 ///////////////////////////////////////////////////////////////|//////////////|
13 /////修改志////////////////////////////////////////////////////|//////////////|
14 ///////////////////////////////////////////////////////////////|//////////////|
15 ///////////////////////////////////////////////////////////////|//////////////|
16 //2007/02/07//00:15//完成编写并进行调试(V1.01完成)//////////|//////////////|
17 //2007/02/05//21:08//编写程序大纲和驱动程序///////////////////|//////////////|
18 ///////////////////////////////////////////////////////////////|//////////////|
19 ---------------------------------------------------------------|--------------|
20 ******************************************************************************/
21
22 /*****************************************************************************/
23 //初始定义//
24
25 //宏定义
26 #include <REG52.h>
27 #define uchar unsigned char//语法定义
28 #define uint unsigned int //
29
30 //引脚定义//
31 sbit led = P1 ^ 0;//LED指示灯(蓝) __
32 sbit beep = P2 ^ 6;//扬声器 __
33 sbit j1 = P2 ^ 3;//继电器1 ++
34 sbit j2 = P2 ^ 1;//继电器2 ++
35 sbit r1 = P3 ^ 7;//无线键盘1 ++
36 sbit r2 = P3 ^ 6;//无线键盘2 ++
37 sbit r3 = P3 ^ 5;//无线键盘3 ++
38 sbit r4 = P3 ^ 4;//无线键盘4 ++
39 sbit rn = P3 ^ 2;//无线键盘N(中断) ++
40
41 //寄存器定义//
42 uchar time=0,force=0,config=0;//定义时间、强度和设置变量
43 uchar t0_con,t0_con1,t0_con2;//T0计时器内部累加
44 uchar led_con;//用于LED指示的标记
45 uchar keys;//定义键盘输入值
46 /*****************************************************************************/
47 //延时程序//
48 void delay(uint a){//延时限制在1 < a < 65535 ms//
49 1 unsigned char i;
50 1 while( --a != 0){
51 2 for(i = 0; i < 125; i++);
52 2 }
53 1 }
54 /*****************************************************************************/
55 //LED指示灯驱动程序//
C51 COMPILER V6.12 WM1 03/17/2007 00:11:09 PAGE 2
56 void led_on(void){//LED长亮,不工作时状态//
57 1 led = 0;
58 1 led_con = 0;
59 1 }
60 void led_1s(void){//LED每秒闪烁,用于定时等待状态//
61 1 led_con = 1;
62 1 }
63 void led_50ms(void){//LED每50ms闪烁,用于电机运行中//
64 1 led_con = 2;
65 1 }
66 //void led_off(void){//LED关//
67 // led = 1;
68 //}
69 /*****************************************************************************/
70 //扬声器驱动程序//
71 void beep_off(void){//beep不响,无键值//
72 1 beep = 1;
73 1 }
74 void beep_on(void){//beep长响//
75 1 beep = 0;
76 1 }
77 void beep_s1(void){//beep单响一声//
78 1 beep_on();
79 1 delay(250);
80 1 beep_off();
81 1 }
82 void beep_s2(void){//beep连响2声//
83 1 beep_s1();
84 1 delay(100);
85 1 beep_s1();
86 1 }
87 void beep_2s(void){//beep2秒长响,洗衣开始//
88 1 beep_on();
89 1 delay(1000);
90 1 beep_off();
91 1 }
92 void beep_call(void){//beep长响8声,洗衣结束//
93 1 uchar i;
94 1 for(i = 0; i < 5; i++){
95 2 beep_2s();
96 2 delay(250);
97 2 }
98 1 }
99 /*****************************************************************************/
100 //无线键值处理程序(扫描)//
101 void key_init(void){//键盘初始化程序//
102 1 keys = 0;
103 1 }
104 void key_rxd(void){//键盘处理程序//
105 1 key_init();
106 1 if(rn == 1){//查看是否有键被按下
107 2 delay(10);//延时去干扰
108 2 if(rn == 1){
109 3 if(r1 == 1 && r2 == r3 == r4 == 0){keys = 1;}//查找键值并放入寄存器
110 3 if(r2 == 1 && r1 == r3 == r4 == 0){keys = 2;}
111 3 if(r3 == 1 && r1 == r2 == r4 == 0){keys = 3;}
112 3 if(r4 == 1 && r1 == r2 == r3 == 0){keys = 4;}
113 3 }
114 2 }
115 1 while(rn == 1){//按键是否松开
116 2 }
117 1 }
C51 COMPILER V6.12 WM1 03/17/2007 00:11:09 PAGE 3
118 /*****************************************************************************/
119 //断电器控制程序//
120 void jj_off(void){//继电器关,不工作//
121 1 j1 = 0;
122 1 j2 = 0;
123 1 delay(800);
124 1 }
125 void j1_on(void){//继电器1开,正转//
126 1 j1 = 1;
127 1 j2 = 0;
128 1 }
129 void j2_on(void){//继电器2开,反转//
130 1 j1 = 0;
131 1 j2 = 1;
132 1 }
133 void jj_run(uchar i){//继电器关,不工作//
134 1 uchar a;
135 1 j1_on();
136 1 a = i;
137 1 while(a > 0) {
138 2 delay(800);//基数是1s
139 2 a--;
140 2 }
141 1 jj_off();
142 1 j2_on();
143 1 a = i;
144 1 while(a > 0) {
145 2 delay(800);//基数是1s
146 2 a--;
147 2 }
148 1 jj_off();
149 1 }
150 /*****************************************************************************/
151 //时间发生程序(计数器中断T0)//
152 void t0_init (void) {//T0定时器初始化//
153 1 TH0 = 0x3c;//载入初值 50ms(12MHZ)
154 1 TL0 = 0xb0;
155 1 TMOD = 0x01;//定时计数器0工作方式1
156 1 ET0 = 1;//开定时器中断
157 1 TR0 = 1;//启动定时器
158 1 EA = 1;//开总中断
159 1 t0_con = 20;//1s
160 1 t0_con1 = 0;
161 1 t0_con2 = 0;//
162 1 }
163 void t0 (void) interrupt 1 using 1{//定时器中断处理程序//
164 1 TH0 = 0x3c;//载入初值
165 1 TL0 = 0xb0;
166 1 t0_con--;//到50ms计数减1
167 1 if(led_con == 2){//使用50ms闪烁的LED
168 2 led = ~led;
169 2 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -