📄 main.lst
字号:
C51 COMPILER V7.20 MAIN 10/13/2008 13:13:43 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //main.c 可能中文文件夹下有问题 //电机输出应该屏蔽其他电机异动
2 //风扇 12v 0.37A 灯 12mA 12V 门磁 0.67A 24V
3 #include "AT89X51.h"
4 #include "main.h"
5 #include <intrins.h>
6 #include <absacc.h>
7 //#include <reg52.h>
8 #define uchar unsigned char
9 #define uint unsigned int
10
11 BYTE workState = HALT_STATUS; //工作状态
12
13
14 //输出数组
15 uchar ACK_BUF[LENMAX]; //Command in length=3 数据(命令) 接收 缓冲区
16 uchar DLE_BUF[DLELENMAX]; //state out length=3 数据(状态) 发送 缓冲区
17 //uchar TRUE_LEN=0; //接收字符个数统计变量
18 uchar IN_LENGTH;
19 bit first_DLE=0;
20
21 uchar CMDIN[LENMAX]; //Command in length=3 数据(命令) 接收 缓冲区
22
23 uchar count=0; //接收字符个数统计变量
24 bit RECE_flag=0; //接收标志位(1=成功接收)
25 //bit RECE_bak=0; //接收标志位(1=成功接收) 长时间保留位
26 //bit SEND_flag=0; //发送标志位(1=一次发送完毕,接下去等待 成功接收了)
27 //bit timerOver; //=1:定时器时间到了 标志位
28 //uint timeCounter=0;
29
30 bit timerHap; //=1:定时器时间到了 标志位
31 uint counter=0; //定时器循环次数计数器
32
33
34 extern BYTE bdata outputByte2; //XBYTE[0x1000];
35 extern bit OLT8; //控制投币口 开 关
36 extern bit OLT9; //控制维修灯 亮 灭
37 extern bit OLTA; //控制出卡处灯 亮 灭
38 //extern bit OLTB; //
39 extern bit OLTE; //控制fan1 亮 灭
40 extern bit OLTF; //控制fan2 亮 灭
41
42 uchar pwm1; //调制脉宽计数
43 bit fan1=0; //风扇1
44
45 uchar pwm2; //调制脉宽计数
46 bit fan2=0; //风扇2
47
48 uchar pwm3; //调制脉宽计数
49 bit cardlamp=0; //出票口灯
50
51 uchar pwm4; //调制脉宽计数
52 bit mainlamp=0; //维修处灯
53 //time0
54 #define RELOAD_HIGH 0xD8
55 #define RELOAD_LOW 0xF0
C51 COMPILER V7.20 MAIN 10/13/2008 13:13:43 PAGE 2
56 //time2
57 #define LD_T2H 0xFF
58 #define LD_T2L 0x9B
59 //FC17 1ms
60 //FE0C 0.5ms
61 //FFCD 50us
62 //FF9B 100us
63 /**********************************************************************
64 ** 函数名称: init_time2
65 ** 功能描述: 初始化定时器2 Door
66 ** 输 入: 无
67 ** 输 出: 无
68 ** 全局变量: 无
69 ** 调用模块: 无
70 ***********************************************************************/
71 void INIT_TIME2(void)
72 {
73 1 T2CON=0x00; //16位自动重载定时器
74 1 T2MOD=0x00; //DCEN=0,定时器向上计数
75 1 TH2=0xFF; //
76 1 TL2=0xFF; //上顶点,加计数到该点了 就溢出
77 1 RCAP2H=LD_T2H;//
78 1 RCAP2L=LD_T2L;//下位点,向上计数的开始点
79 1 ET2=1; //使能定时器2中断
80 1 EA = 1;
81 1 TR2=1; //开始定时
82 1 }
83 /**********************************************************************
84 ** 函数名称: init_time0
85 ** 功能描述: 初始化定时器0 com
86 ***********************************************************************/
87 void INIT_TIME0(void)
88 {
89 1 PX0=1; //
90 1 PX1=1; //外部中断01位高于定时器0的中断级别
91 1 TMOD=TMOD|0x01; //定时器0在模式1下工作
92 1 TL0=RELOAD_LOW;//0x00; //定时器每50ms产生一次溢出
93 1 TH0=RELOAD_HIGH;//0x4C; //自动重装的值
94 1 ET0=1; //使能定时器0中断
95 1 EA=1; //使能总中断
96 1 TR0=1; //开始计时
97 1 }
98 void tick_int(void) interrupt 1 //using 0 //定时器
99 {
100 1 TR0=0; // 停止定时器
101 1
102 1 P2_0=!P2_0; //先不喂狗
103 1
104 1 if(counter > 0)
105 1 {
106 2 counter--;
107 2 if(counter == 0) timerHap=1;
108 2 }
109 1
110 1 TH0=RELOAD_HIGH; // 设置重装值
111 1 TL0=RELOAD_LOW;
112 1 TR0=1; // 重新启动定时器
113 1 }
114
115
116 /**********************************************************************
117 ** 函数名称: TIME2 定时器中断益处程序--
C51 COMPILER V7.20 MAIN 10/13/2008 13:13:43 PAGE 3
118 ** 全局变量:
119 ***********************************************************************/
120 void timer2 (void) interrupt 5
121 {
122 1 TR2=0; //关定时
123 1 P2_0=!P2_0; //先不喂狗
124 1
125 1 /*if(timeCounter > 0)
126 1 {
127 1 timeCounter--;
128 1 if(timeCounter == 0) timerOver=1;
129 1 }*/
130 1
131 1 if(fan1)
132 1 {
133 2 if(pwm1<=PWM50)//导通时间 1-8
134 2 {
135 3 OLTE = 0;
136 3 }//正方向 转
137 2 else
138 2 {
139 3 if(pwm1<PWM100) //关断时间 9-10
140 3 {
141 4 OLTE = 1;
142 4 }//停
143 3 else
144 3 { pwm1=0; }
145 3 }
146 2 pwm1++;
147 2 }
148 1 else { OLTE = 1; } //停
149 1
150 1 if(fan2)
151 1 {
152 2 if(pwm2<=PWM50)//导通时间 1-8
153 2 {
154 3 OLTF = 0;
155 3 }//正方向 转
156 2 else
157 2 {
158 3 if(pwm2<PWM100) //关断时间 9-10
159 3 {
160 4 OLTF = 1;
161 4 }//停
162 3 else
163 3 { pwm2=0; }
164 3 }
165 2 pwm2++;
166 2 }
167 1 else { OLTF = 1; } //停
168 1
169 1 /*if(mainlamp)
170 1 {
171 1 if(pwm4<=PWM50)//导通时间 1-8
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -