📄 main.lst
字号:
C51 COMPILER V7.20 MAIN 04/30/2006 10:52:20 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 OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND CODE
line level source
1 #include <reg52.h>
2 #include <string.h>
3 #include <absacc.h>
4 #define PAPERMOTOR_Data XBYTE[0x4000]
5 #define PRN_Control XBYTE[0x4000]
6 #define uint unsigned int
7 #define uchar unsigned char
8 uint code Pap_acdata[20] = {0x3266,0x2156,0x198f,0x1599,0x1302,0x1135,0xfc4,0xeb0,0xdd2,0xd08,
9 0xc74,0xbe1,0xb60,0xaf1,0xa95,0xa39,0x9ef,0x9a5,0x95c,0x924};
10 uint code Pap_dcdata[2] = {0xc06,0x1200};
11 sbit HOME_Pin = P3^2;
12 sbit Paper_Pin = P3^4;
13 bit PrintDirect;
14 bit homeflag;
15 bit PAPERMOTOR_Flag;
16 //bit CARRIGEMOTOR_Flag;
17 //sbit Cut_A = P1^5;
18 //sbit Cut_B = P1^6;
19 sbit Sens = P1^7;
20 sbit Mark_Pin = P3^5;
21 uchar xdata LOW_PRN_ControlState;
22 void PAPERMOTOR_Init();
23 void PAPERMOTOR_Hold();
24 void PAPERMOTOR_Rush();
25 void PAPERMOTOR_On();
26 void PAPERMOTOR_Off();
27 void CARRIGEMOTOR_Acce_Dece_11steps(uchar AC_DC);
28 void LOW_PRN_InitDotTimer(uint T0_DATA);
29 void PAPERMOTOR_SetStep(uchar Papermove_Direc);
30 void PAPERMOTOR_Move(uchar Direc, uint Steps);
31
32
33 void PAPERMOTOR_Init()
34 {
35 1
36 1 LOW_PRN_ControlState &= 0x33;
37 1 LOW_PRN_ControlState |= 0xc0;
38 1 PAPERMOTOR_Flag = 0;
39 1
40 1 }
41
42 void PH_Timer_Set(uint PH_DATA)
43 {
44 1 TH1 = -(PH_DATA/256);
45 1 TL1 = -(PH_DATA%256);
46 1 ET1 = 1;
47 1 TR1 = 1;
48 1 }
49
50 /* void LOW_PRN_InitDotTimer(uint T0_DATA)
51 {
52 TH0 = -T0_DATA/256;
53 TL0 = -T0_DATA%256;
54 ET0 = 1;
55 TR0 = 1;
C51 COMPILER V7.20 MAIN 04/30/2006 10:52:20 PAGE 2
56 }*/
57 void PAPERMOTOR_Move(uchar Direc, uint Steps)
58 {
59 1 uint i,PAPERSteps;
60 1 PAPERSteps = Steps;
61 1 PAPERMOTOR_Flag = 0;
62 1 PAPERMOTOR_On();
63 1 if(PAPERSteps < 22)
64 1 {
65 2 for(i=0;i<PAPERSteps;i++)
66 2 {
67 3 PAPERMOTOR_SetStep(Direc);
68 3 //LOW_PRN_InitDotTimer(0x3266);
69 3 // while(!PAPERMOTOR_Flag);
70 3 PAPERMOTOR_Flag = 0;
71 3 }
72 2 }
73 1 else
74 1 {
75 2 for(i=0;i<20;i++)
76 2 {
77 3 PAPERMOTOR_SetStep(Direc);
78 3 // LOW_PRN_InitDotTimer(Pap_acdata[i]);
79 3 // while(!PAPERMOTOR_Flag);
80 3 PAPERMOTOR_Flag = 0;
81 3 }
82 2 for(i=0;i<(PAPERSteps-22);i++)
83 2 {
84 3 PAPERMOTOR_SetStep(Direc);
85 3 // LOW_PRN_InitDotTimer(0x900);
86 3 // while(!PAPERMOTOR_Flag);
87 3 PAPERMOTOR_Flag = 0;
88 3 }
89 2 for(i=0;i<2;i++)
90 2 {
91 3 PAPERMOTOR_SetStep(Direc);
92 3 // LOW_PRN_InitDotTimer(Pap_dcdata[i]);
93 3 // while(!PAPERMOTOR_Flag);
94 3 PAPERMOTOR_Flag = 0;
95 3 }
96 2 }
97 1 PAPERMOTOR_Off();
98 1 }
99
100
101
102 void PAPERMOTOR_SetStep(uchar Papermove_Direc)
103 {
104 1 uchar i;
105 1 uchar temp;
106 1 uchar PH_State[5] = {0x00,0x04,0x0c,0x08,0x00};
107 1
108 1 temp = LOW_PRN_ControlState;
109 1 temp &= 0x0c;
110 1 if(Papermove_Direc)
111 1 {
112 2 for(i=0;i<5;i++)
113 2 {
114 3 if(temp == PH_State[i])
115 3 {
116 4 temp = PH_State[i+1];
117 4 break;
C51 COMPILER V7.20 MAIN 04/30/2006 10:52:20 PAGE 3
118 4 }
119 3 }
120 2 }
121 1 else
122 1 {
123 2 for(i=4;i>0;i--)
124 2 {
125 3 if(temp == PH_State[i])
126 3 {
127 4 temp = PH_State[i-1];
128 4 break;
129 4 }
130 3 }
131 2 }
132 1 LOW_PRN_ControlState &= 0xf3;
133 1 LOW_PRN_ControlState |= temp;
134 1 PAPERMOTOR_Data = LOW_PRN_ControlState;
135 1 }
136
137 void PAPERMOTOR_On()
138 {
139 1 PAPERMOTOR_Hold();
140 1 PAPERMOTOR_Rush();
141 1 }
142
143 void PAPERMOTOR_Off()
144 {
145 1 PAPERMOTOR_Rush();
146 1 PAPERMOTOR_Hold();
147 1 }
148
149 void Delay_6ms()
150 {
151 1 uint i;
152 1 for(i=0;i<0x0b33;i++);
153 1 }
154
155 void PAPERMOTOR_Hold()
156 {
157 1 LOW_PRN_ControlState &= 0x3f;
158 1 LOW_PRN_ControlState |= 0x80;
159 1 PAPERMOTOR_Data = LOW_PRN_ControlState;
160 1 Delay_6ms();
161 1 }
162
163 void PAPERMOTOR_Rush()
164 {
165 1 LOW_PRN_ControlState &= 0x3f;
166 1 PAPERMOTOR_Data = LOW_PRN_ControlState;
167 1 Delay_6ms();
168 1 }
169
170
171
172 /* void LOW_PRN_Findhome()
173 {
174 uchar i;
175 CARRIGEMOTOR_Hold();
176 CARRIGEMOTOR_Rush();
177 if(!HOME_Pin)
178 {
179 PrintDirect = 0;
C51 COMPILER V7.20 MAIN 04/30/2006 10:52:20 PAGE 4
180 CARRIGEMOTOR_Acce_Dece_11steps(1);
181 for(i=0;i<180;i++)
182 {
183 CARRIGEMOTOR_PH_Set();
184 PH_Timer_Set(0x05f2);
185 while(!CARRIGEMOTOR_Flag);
186 CARRIGEMOTOR_Flag = 0;
187 }
188 CARRIGEMOTOR_Acce_Dece_11steps(0);
189 }
190 for(;;)
191 {
192 if(HOME_Pin)
193 {
194 PrintDirect = 1;
195 homeflag = HOME_Pin;
196 }
197 else
198 {
199 PrintDirect = 0;
200 homeflag = HOME_Pin;
201 }
202 CARRIGEMOTOR_PH_Set();
203 PH_Timer_Set(0x2347);
204 while(!CARRIGEMOTOR_Flag);
205 CARRIGEMOTOR_Flag = 0;
206 if(homeflag == !HOME_Pin)
207 break;
208 }
209 PrintDirect = 0;
210 CARRIGEMOTOR_Acce_Dece_11steps(1);
211 CARRIGEMOTOR_Acce_Dece_11steps(0);
212 CARRIGEMOTOR_Rush();
213 CARRIGEMOTOR_Hold();
214 PrintDirect = 1;
215 }*/
216
217 void main()
218 {
219 1 Sens = 1;
220 1 PAPERMOTOR_Init();
221 1 if(Sens)
222 1 {
223 2 PAPERMOTOR_SetStep(0);
224 2 }
225 1 // for(;;)
226 1 // {
227 1 PRN_Control &= 0x3f;
228 1 PAPERMOTOR_Move(0, 20);
229 1 // }
230 1 // PAPERMOTOR_Off();
231 1
232 1 }
233
234
235
236
237
238
C51 COMPILER V7.20 MAIN 04/30/2006 10:52:20 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION PAPERMOTOR_Init (BEGIN)
; SOURCE LINE # 33
; SOURCE LINE # 34
; SOURCE LINE # 36
0000 900000 R MOV DPTR,#LOW_PRN_ControlState
0003 E0 MOVX A,@DPTR
0004 5433 ANL A,#033H
0006 F0 MOVX @DPTR,A
; SOURCE LINE # 37
0007 44C0 ORL A,#0C0H
0009 F0 MOVX @DPTR,A
; SOURCE LINE # 38
000A C200 R CLR PAPERMOTOR_Flag
; SOURCE LINE # 40
000C 22 RET
; FUNCTION PAPERMOTOR_Init (END)
; FUNCTION _PH_Timer_Set (BEGIN)
; SOURCE LINE # 42
;---- Variable 'PH_DATA' assigned to Register 'R4/R5' ----
0000 AD07 MOV R5,AR7
0002 AC06 MOV R4,AR6
; SOURCE LINE # 43
; SOURCE LINE # 44
0004 EC MOV A,R4
0005 F4 CPL A
0006 04 INC A
0007 F58D MOV TH1,A
; SOURCE LINE # 45
0009 ED MOV A,R5
000A F4 CPL A
000B 04 INC A
000C F58B MOV TL1,A
; SOURCE LINE # 46
000E D2AB SETB ET1
; SOURCE LINE # 47
0010 D28E SETB TR1
; SOURCE LINE # 48
0012 22 RET
; FUNCTION _PH_Timer_Set (END)
; FUNCTION _PAPERMOTOR_Move (BEGIN)
; SOURCE LINE # 57
0000 8F00 R MOV Direc,R7
;---- Variable 'Steps' assigned to Register 'R4/R5' ----
; SOURCE LINE # 58
; SOURCE LINE # 60
0002 8C00 R MOV PAPERSteps,R4
0004 8D00 R MOV PAPERSteps+01H,R5
; SOURCE LINE # 61
0006 C200 R CLR PAPERMOTOR_Flag
; SOURCE LINE # 62
0008 120000 R LCALL PAPERMOTOR_On
; SOURCE LINE # 63
000B C3 CLR C
000C E500 R MOV A,PAPERSteps+01H
000E 9416 SUBB A,#016H
0010 E500 R MOV A,PAPERSteps
0012 9400 SUBB A,#00H
C51 COMPILER V7.20 MAIN 04/30/2006 10:52:20 PAGE 6
0014 5019 JNC ?C0003
; SOURCE LINE # 64
; SOURCE LINE # 65
0016 E4 CLR A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -