📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 11/03/2008 11:24:32 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\uv2\C51\BIN\C51.EXE main.c OPTIMIZE(0,SPEED) DEBUG OBJECTEXTEND CODE SYMBOLS
line level source
1 /*---------------------------------
2 本系统还有一个T2中断可由外部来引发,未用可留作以后用
3 系统因用史密特电路后,两开关应处于常闭
4 光电开关也应打开处于接通状态
5 本系统只在摇杆转动时才有动作,所有的静态变量处于初值0
6
7 -----------------------------------*/
8 #include <general.h>
9 #define T0_interval -1500 //按1500HZ来输出脉冲 水平方向
10 #define T1_interval -4000 //竖直方向
11
12 /*---------------------------------
13 水平方向分左右两种方向用dir_horizon来表示,0表示左转,1 表示右转
14 上下方向也分两种,用dir_vertical来表示,0表示上转,1表示下转
15 步进电机按四步方式来进行, 低速按500HZ来步进,中速电机无减速用30HZ
16 高速按60HZ来进行,以上均表示主电机,控制相机的电机相应减小频率
17 两种电机旋转状态的记录分别由horizon_step,vertical_step来表示
18 两种电机的控制输出用一数组来表示
19 Left_Right[horizon_step],Up_Down[vertical_step]
20 -----------------------------------*/
21 /*-------------------------------------------------------------------------
22 线扫功能的说明
23 对明景的协议扫描用auto+1+on+1+off
24
25 pelcop,pelcod扫描用auto+on
26 硬盘机用扫描即可
27
28 工控机用轨迹扫描功能
29 ---------------------------------------------------------------------------*/
30 #define DIP_1 P3_4 //定义协议及波特选择位
31 #define DIP_2 P3_5
32 #define DIP_3 P3_6
33 #define DIP_4 P3_7
34 #define DIP_5 P4_0
35 #define DIP_6 P4_1
36
37
38
39 char code Left_Right[]={1, 3 ,2, 6,4,0xc,8,9}; //电机控制代码 按红是最低位来设计
40 char code Up_Down[]= {1, 3 ,2, 6,4,0xc,8,9};
41 unsigned char bdata bflag=0; //通用位变量
42 sbit bflag_0=bflag^0;
43 sbit bflag_1=bflag^1;
44 sbit bflag_2=bflag^2;
45 sbit bflag_3=bflag^3;
46 sbit bflag_4=bflag^4;
47 sbit bflag_5=bflag^5;
48 sbit bflag_6=bflag^6;
49 sbit bflag_7=bflag^7;
50
51
52
53 unsigned char bdata bflag1=0; //通用位变量
54 sbit bflag1_0=bflag1^0;
55 sbit bflag1_1=bflag1^1;
C51 COMPILER V7.50 MAIN 11/03/2008 11:24:32 PAGE 2
56 sbit bflag1_2=bflag1^2;
57 sbit bflag1_3=bflag1^3;
58 sbit bflag1_4=bflag1^4;
59 sbit bflag1_5=bflag1^5;
60 sbit bflag1_6=bflag1^6;
61 sbit bflag1_7=bflag1^7;
62 /*-----------------------------------------------
63
64 明景的键盘PELCO-P球机ID为实际球机ID少1,程序要进行处理
65 PELCO-D上下两代码颠倒了,UP为000 DOWN 为00108 与公布的相反
66 ------------------------------------------------*/
67 unsigned char cProtocal;
68 unsigned char bdata id=0; //通用位变量
69 sbit id_0=id^0;
70 sbit id_1=id^1;
71 sbit id_2=id^2;
72 sbit id_3=id^3;
73 sbit id_4=id^4;
74 sbit id_5=id^5;
75 sbit id_6=id^6;
76 sbit id_7=id^7;
77 /*--------------------------------------------------------------------*/
78 char idata cDirectHorizon=0; //水平方向标志 下面几个用+/-1来表示其意义
79 char idata cDirectVertical=0 ; //竖直方向标志
80 /*--------------------------------------------------------------------*/
81 char idata cDirectHorizonLim=0; //水平方向极限标志
82 char idata cDirectVerticalLim=0; //竖直方向极限标志
83 char idata cHorizonStep=0;
84 char idata cVerticleStep=0; //步进
85
86 //char idata cAutoScan=0;//自动扫描的标志
87 char idata cAutoScan;
88 char idata cAutoTestVertical=0;//自动检测竖直方向的标志
89 //上述变量初值为0
90 /*-------------------------------------------------
91 主芯片工作于串口查询等待方式
92 按键盘发来的控制码作相应的处理
93 以下是键盘的控制码列表,按两者通信协议作出编程处理
94 --------------------------------------------------*/
95
96 /*------------------------------------------
97 接收区分键盘区和相机区,定位在外部RAM区,各分配100个空间,
98 高一个数标志,在主程序里分别访问两个区,并作想应两串口485的
99 处理
100 主程序初始时开串口中断,
101 -------------------------------------------*/
102
103 //char xdata keycode[50][7];
104
105 unsigned char idata sKeyCode[20]={""}; //目前只用一组来表示,并且为0值 接收键盘码用
106 unsigned char idata cKeyCodeReceiveState=0 ; //初值处于无串口码接收到状态有值用1表示
107 unsigned char idata cKeyCodeReceive=0;
108 unsigned char idata *pKeyCode;
109
110 /*
111 char xdata cameracode[50][7];
112 char xdata camera_num;
113 char xdata camera_addr;
114 */
115
116
117 /*--------------
C51 COMPILER V7.50 MAIN 11/03/2008 11:24:32 PAGE 3
118 I2c取球机的ID 调试设为一号
119 -----------*/
120 //char ID=1;
121
122 /*----------------------------------------------
123 以下是步进电机的输出函数----
124 以及时间参数装载函数
125 因为中断处理不可引用外部函数并且必须在之前定义
126 所以在此不按结构可视来组织程序
127 _______________________________________________*/
128 /*--------------------
129 水平方向的电机按P2口低四位来控制,分别对应各位
130 和bflag方向一致;
131 竖直方向也一样按P2高位来控制
132 -----------------------------------------------*/
133
134
135
136
137
138
139
140 unsigned char ProtocalSelect()
141 { unsigned char x;
142 1 bflag1=0;
143 1 DIP_4=1; //写1
144 1 DIP_3=1;
145 1 DIP_2=1;
146 1 DIP_1=1;
147 1 do
148 1 {
149 2
150 2 bflag1_0=!DIP_4; //选择通讯协议 取反
151 2 bflag1_1=!DIP_3;
152 2 bflag1_2=!DIP_2;
153 2 bflag1_3=!DIP_1;
154 2 x= bflag1;
155 2 bflag1_0=!DIP_4; //选择通讯协议 取反
156 2 bflag1_1=!DIP_3;
157 2 bflag1_2=!DIP_2;
158 2 bflag1_3=!DIP_1;
159 2 }while(bflag1!=x);
160 1
161 1
162 1 return(x);
163 1 }
164 void BaudSelect() //波特率选择 子程序
165 {
166 1 unsigned char x; //开关取反才是正确的
167 1 bflag1=0;
168 1 DIP_6=1; //先给1
169 1 DIP_5=1;
170 1 do
171 1 {
172 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -