📄 main.lst
字号:
C51 COMPILER V7.10 MAIN 08/04/2006 15:38:10 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE main.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <at89x51.h>
2 #include <absacc.h>
3 #include "define.h"
4 #include "Uart.h"
5
6 uchar KeyBoard_Int_ID; //键盘中断标志
7 uchar KeyData; //键值
8 uchar len;
9
10 unsigned char state; // .7=0 无暗盒 .7=1有暗盒状态 ,
11 unsigned char bdata ab[4]; // .0=1压迫器运动状态 .1=1床体运动状态 .2=1束光器运动状态 .3=1分隔选定状态
12 unsigned char bdata Led[3]; //
13 sbit Pmd =ab[0]^0; //压迫器进
14 sbit Pmu =ab[0]^1; //压迫器退
15 sbit Sh_on =ab[0]^2; //束光器横向开
16 sbit Sh_off =ab[0]^3; //束光器横向关
17 sbit Sv_on =ab[0]^4; //束光器纵向开
18 sbit Sv_off =ab[0]^5; //束光器纵向关
19 sbit Trh =ab[0]^6; //床头向旋转
20 sbit Trf =ab[0]^7; //床足向选装
21
22 sbit Imh =ab[1]^0; //球管头向移动
23 sbit Imf =ab[1]^1; //球管足向移动
24 sbit Tml =ab[1]^2; //床左移
25 sbit Tmr =ab[1]^3; //床右移
26 sbit R_driver =ab[1]^4; // 曝光
27 sbit En_bed =ab[1]^5; //床旋转使能
28 sbit N_D_mode =ab[1]^6; //常规、数字模式
29 sbit DSA =ab[1]^7; //dsa模式
30
31 sbit Zoom3 =ab[2]^0; //II zoom3
32 sbit Zoom2 =ab[2]^1; //II zoom2
33 sbit Zoom1 =ab[2]^2; //II zoom1
34 sbit Zoom0 =ab[2]^3; //no zoom
35 sbit Pol_h =ab[2]^4; //图像水平镜像
36 sbit Pol_v =ab[2]^5; //图像垂直镜像
37 sbit Sgq_H_A =ab[2]^6; //束光器手动半自动模式
38 sbit Out_p =ab[2]^7; //出片
39
40 sbit All_p =ab[3]^0; //全片
41 sbit H_2 =ab[3]^1; //横向2分隔
42 sbit V_2 =ab[3]^2; //纵向2分隔
43 sbit Cp_3 =ab[3]^3; //3分隔
44 sbit Cp_4 =ab[3]^4; //4分隔
45 sbit Cp_S =ab[3]^5; //分隔选定
46 //sbit F_g =ab[3]^6; //脚闸
47 //sbit H_g =ab[3]^7; //手闸
48 //=============
49
50 sbit Zoom3_led =Led[0]^0; //II zoom3
51 sbit Zoom2_led =Led[0]^1; //II zoom2
52 sbit Zoom1_led =Led[0]^2; //II zoom1
53 sbit Zoom0_led =Led[0]^3; //no zoom
54 sbit Ph_led =Led[0]^4; //图像水平镜像
55 sbit Pv_led =Led[0]^5; //图像垂直镜像
C51 COMPILER V7.10 MAIN 08/04/2006 15:38:10 PAGE 2
56 sbit SHA_led =Led[0]^6; //束光器手动半自动模式
57 sbit ND_led =Led[0]^7; //常规、数字模式
58
59 sbit H2_led1 =Led[1]^0; //横向2分隔led0
60 sbit H2_led2 =Led[1]^1; //横向2分隔led1
61
62 sbit V2_led1 =Led[1]^2; //纵向2分隔led0
63 sbit V2_led2 =Led[1]^3; //纵向2分隔led1
64
65 sbit Cp3_led1 =Led[1]^4; //3分隔led0
66 sbit Cp3_led2 =Led[1]^5; //3分隔led1
67 sbit Cp3_led3 =Led[1]^6; //3分隔led2
68 sbit Cp_S_led =Led[1]^7; //分隔选定
69
70 sbit Cp4_led1 =Led[2]^0; //4分隔 led1
71 sbit Cp4_led2 =Led[2]^1; //4分隔 led1
72 sbit Cp4_led3 =Led[2]^2; //4分隔 led1
73 sbit Cp4_led4 =Led[2]^3; //4分隔 led1
74 sbit All_p_led =Led[2]^4; //全片
75 sbit DSA_led =Led[2]^7; //dsa模式
76
77
78
79 /*
80 sbit F_g_led =Led[3]^6; //脚闸
81 sbit H_g_led =Led[3]^7; //手闸
82 sbit Pmd_led =Led[0]^0; //压迫器进
83 sbit Pmu_led =Led[0]^1; //压迫器退
84 sbit Sgq_h_on_led =Led[0]^2; //束光器横向开
85 sbit Sgq_h_off_led =Led[0]^3; //束光器横向关
86 sbit Sgq_v_on_led =Led[0]^4; //束光器纵向开
87 sbit Sgq_v_off_led =Led[0]^5; //束光器纵向关
88 sbit Trh_led =Led[0]^6; //床头向旋转
89 sbit Trf_led =Led[0]^7; //床足向选装
90 sbit Imh_led =Led[1]^0; //球管头向移动
91 sbit Imf_led =Led[1]^1; //球管足向移动
92 sbit Tml_led =Led[1]^2; //床左移
93 sbit Tmr_led =Led[1]^3; //床右移
94 sbit R_driver_led =Led[1]^4; //曝光
95 sbit En_bed_led =Led[1]^5; //床旋转使能
96
97 */
98
99
100
101
102
103
104
105 uchar Timer_Int_ID; //定时器定时中断标志
106 uchar KeyBoard_Int_ID; //键盘中断标志
107 //uchar Uart_Int_ID; //串口接收中断标志
108
109 uchar KeyData; //键值
110
111 uchar AD_Data[2]; //A/D暂存数据
112
113 uchar Timer_Int_ID; //定时器中断标志位
114 uchar Check;
115
116 uchar Table[7]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00}; //定义与键盘和AD有关的数据表
117 idata unsigned char Tbak[7]={0xff,0xff,0xff,0xff,0xff,0xff,0x00};
C51 COMPILER V7.10 MAIN 08/04/2006 15:38:10 PAGE 3
118
119 uchar Rx_data[5]; //定义从中控板接收到的数据
120 //uchar Tx_data[10];
121
122 extern void Uart_Init(void);
123 extern void ComOutChar(uchar OutData);
124 extern unsigned char ComGetChar();
125 extern void Timer0_Init(void);
126 extern unsigned char GetTLC0832Data(uchar ucCmd);
127
128
129 void Delay(void)
130 {
131 1 unsigned char i;
132 1 unsigned char j;
133 1 for(i = 0;i <= 200;i++)
134 1 for(j = 0;j <= 80;j++)
135 1 {
136 2 ;
137 2 }
138 1 }
139
140 void Led_Display()
141 {
142 1 if((Rx_data[2])==0xff)
143 1 {
144 2 state = state&0x7f; //无暗盒
145 2 All_p=0;
146 2 H2_led1=0;
147 2 H2_led2=0;
148 2 V2_led1=0;
149 2 V2_led2=0;
150 2 Cp3_led1=0;
151 2 Cp3_led2=0;
152 2 Cp3_led3=0;
153 2 Cp4_led1=0;
154 2 Cp4_led2=0;
155 2 Cp4_led3=0;
156 2 Cp4_led4=0;
157 2
158 2 }
159 1 else
160 1 {
161 2 if((Rx_data[2]&0x01)==0) All_p=1;
162 2 else All_p=0;
163 2 if((Rx_data[2]&0x02)==0) H2_led1=1;
164 2 else H2_led1=0;
165 2 if((Rx_data[2]&0x04)==0) H2_led2=1;
166 2 else H2_led2=0;
167 2 if((Rx_data[2]&0x08)==0) V2_led1=1;
168 2 else V2_led1=0;
169 2 if((Rx_data[2]&0x10)==0) V2_led2=1;
170 2 else V2_led2=0;
171 2 if((Rx_data[2]&0x20)==0) Cp3_led1=1;
172 2 else Cp3_led1=0;
173 2 if((Rx_data[2]&0x40)==0) Cp3_led2=1;
174 2 else Cp3_led2=0;
175 2 if((Rx_data[2]&0x80)==0) Cp3_led3=1;
176 2 else Cp3_led3=0;
177 2
178 2 if((Rx_data[3]&0x01)==0) Cp4_led1=1;
179 2 else Cp4_led1=0;
C51 COMPILER V7.10 MAIN 08/04/2006 15:38:10 PAGE 4
180 2 if((Rx_data[3]&0x02)==0) Cp4_led2=1;
181 2 else Cp4_led2=0;
182 2 if((Rx_data[3]&0x04)==0) Cp4_led3=1;
183 2 else Cp4_led3=0;
184 2 if((Rx_data[3]&0x08)==0) Cp4_led4=1;
185 2 else Cp4_led4=0;
186 2 }
187 1 }
188
189
190 void Interrupt_Init(void)
191 {
192 1 EA = 0; // CPU所有中断关(IE最高位MSB)
193 1 EX0 = 1; // INT0中断开
194 1 IT0 = 1; // INT0低电平触发(为1则为下降沿触发)
195 1 ES = 1;
196 1 ET0 = 1;
197 1 EA = 1; // CPU总中断开(IE最高位MSB)
198 1 }
199
200 //void Speaker_out(void)//峰鸣器响函数
201 // {
202 // P1_4 = 1;
203 // Delay();
204 // P1_4 = 0;
205 // }
206
207 void Int0_Int()interrupt 0 using 0
208 {
209 1 IE0 = 0;
210 1 KeyBoard_Int_ID = 1; //键盘中断标志
211 1
212 1 }
213
214 void CPU_IO_Int(void) //通用IO口初始化
215 {
216 1 Speaker = 0; //峰鸣器输出脚
217 1 HandGate = 0; //脚闸输入脚
218 1 FootGate = 0; //手闸输入脚
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -