?? main.lst
字號:
C51 COMPILER V8.08 MAIN 05/20/2008 14:06:01 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
NO OBJECT MODULE REQUESTED
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND SRC(.\main.SRC)
line level source
1 #include<reg51.h>
2
3 sbit P30=P3^0;
4 sbit P31=P3^1;
5 sbit P32=P3^2;
6 sbit P33=P3^3;
7 sbit P34=P3^4;
8 void gdct()
9 {
10 1 //;滾動彩條信號
11 1 // org 0000h
12 1 #pragma asm
13 1
14 1 Line: setb p1.4 ;行同步脈沖開始
15 1 mov r4,#13 ;設定循環次數
16 1 clr p1.4 ;行同步脈沖結束
17 1 inc dptr ;計數器遞增,并作行消隱前肩的延時
18 1 mov r3,#45 ;預先設定場消隱計數器初值
19 1 mov p1,7
20 1 djnz r0,aaa
21 1 mov r0,#15
22 1 nop
23 1 sjmp bbb
24 1 aaa: cjne r0,#7,ccc
25 1 nop
26 1 nop
27 1 bbb: mov a,r1
28 1 add a,#4
29 1 mov r1,a
30 1 mov r4,#9
31 1 cjne a,b,ccc
32 1 mov r7,#0
33 1 dec r4
34 1 ccc: djnz r4,$
35 1 clr a
36 1 mov p1,a
37 1 cjne a,dph,Line ;繼續下一行周期
38 1
39 1 Frame: setb p1.4 ;場消隱期間仍要行同步脈沖
40 1 mov r2,#12 ;設定延時時間
41 1 clr p1.4 ;行同步脈沖結束
42 1 FF: cjne r3,#32,FB ;倒數到32時,開始場同步信號
43 1 sjmp Chg
44 1 FB: cjne r3,#30,Cnt ;倒數到30時,結束場同步信號
45 1 Chg: cpl p1.5 ;場同步信號反轉
46 1 sjmp Dly
47 1 Cnt: mov dptr,#-480 ;設定顯示區域的行數
48 1 mov r1,a
49 1 Dly: djnz r2,$ ;延時
50 1 xch a,b
51 1 add a,#148 ;((480-512)+45*148)\256=4
52 1 xch a,b
53 1 mov r7,#7
54 1 cjne r3,#1,Next ;判斷場消隱是否到時
55 1 ajmp Line ;轉到顯示區域信號輸出
C51 COMPILER V8.08 MAIN 05/20/2008 14:06:01 PAGE 2
56 1 Next: djnz r3,Frame ;繼續場消隱周期
57 1 #pragma endasm
58 1 }
59
60 void hbst()
61 {
62 1 #pragma asm
63 1 //;黑白豎條
64 1 // org 0000h
65 1 Line1: setb p1.4 ;行同步脈沖開始
66 1 mov r3,#45 ;預先設定場消隱計數器初值
67 1 clr p1.4 ;行同步脈沖結束
68 1 inc dptr ;計數器遞增,并作行消隱前肩的延時
69 1 inc dptr
70 1 setb p1.3
71 1 dec p1
72 1 inc p1
73 1 dec p1
74 1 inc p1
75 1 dec p1
76 1 inc p1
77 1 dec p1
78 1 inc p1
79 1 dec p1
80 1 inc p1
81 1 dec p1
82 1 inc p1
83 1 dec p1
84 1 inc p1
85 1 dec p1
86 1 inc p1
87 1 dec p1
88 1 inc p1
89 1 dec p1
90 1 inc p1
91 1 dec p1
92 1 inc p1
93 1 dec p1
94 1 inc p1
95 1 dec p1
96 1 inc p1
97 1 dec p1
98 1 inc p1
99 1 dec p1
100 1 inc p1
101 1 dec p1
102 1 mov p1,a
103 1 cjne a,dph,Line1 ;繼續下一行周期
104 1
105 1 Frame1: setb p1.4 ;場消隱期間仍要行同步脈沖
106 1 mov r2,#14 ;設定延時時間
107 1 clr p1.4 ;行同步脈沖結束
108 1 FF1: cjne r3,#32,FB1 ;倒數到32時,開始場同步信號
109 1 sjmp Chg1
110 1 FB1: cjne r3,#30,Cnt1 ;倒數到30時,結束場同步信號
111 1 Chg1: cpl p1.5 ;場同步信號反轉
112 1 sjmp Dly1
113 1 Cnt1: mov dptr,#-960 ;設定顯示區域的行數
114 1 nop ;匹配周期時長
115 1 Dly1: djnz r2,$ ;延時
116 1 cjne r3,#1,Next1 ;判斷場消隱是否到時
117 1 ajmp Line1 ;轉到顯示區域信號輸出
C51 COMPILER V8.08 MAIN 05/20/2008 14:06:01 PAGE 3
118 1 Next1: djnz r3,Frame1 ;繼續場消隱周期
119 1 #pragma endasm
120 1
121 1 }
122
123 void kct()
124 {
125 1 #pragma asm
126 1 //;寬彩條信號
127 1 // org 0000h
128 1 Line2: setb p1.4 ;行同步脈沖開始
129 1 nop ;延時
130 1 clr p1.4 ;行同步脈沖結束
131 1 inc dptr ;計數器遞增,并作行消隱前肩的延時
132 1 inc dptr
133 1 mov p1,#15 ;設定循環次數
134 1 mov r3,#45 ;預先設定場消隱計數器初值
135 1 djnz p1,$ ;輸出彩條信號
136 1 cjne a,dph,Line2 ;繼續下一行周期
137 1
138 1 Frame2: setb p1.4 ;場消隱期間仍要行同步脈沖
139 1 mov r2,#14 ;設定延時時間
140 1 clr p1.4 ;行同步脈沖結束
141 1 FF2: cjne r3,#32,FB2 ;倒數到32時,開始場同步信號
142 1 sjmp Chg2
143 1 FB2: cjne r3,#30,Cnt2 ;倒數到30時,結束場同步信號
144 1 Chg2: cpl p1.5 ;場同步信號反轉
145 1 sjmp Dly2
146 1 Cnt2: mov dptr,#-960 ;設定顯示區域的行數
147 1 nop ;匹配周期時長
148 1 Dly2: djnz r2,$ ;延時
149 1 cjne r3,#1,Next2 ;判斷場消隱是否到時
150 1 ajmp Line1 ;轉到顯示區域信號輸出
151 1 Next2: djnz r3,Frame2 ;繼續場消隱周期
152 1 #pragma endasm
153 1
154 1 }
155
156 void qp()
157 {
158 1 #pragma asm
159 1 //;棋盤信號
160 1 // org 0000h
161 1 Line3: setb p1.4 ;行同步脈沖開始
162 1 mov r4,#7 ;延時
163 1 clr p1.4 ;行同步脈沖結束
164 1 inc dptr ;計數器遞增,并作行消隱前肩的延時
165 1 mov r3,#45 ;預先設定場消隱計數器初值
166 1 mov p1,b
167 1 djnz r0,aaa3
168 1 xrl p1,#7
169 1 xrl b,#7
170 1 xrl p1,#7
171 1 mov r0,#80
172 1 mov r4,#5
173 1 aaa3: xrl p1,#7
174 1 djnz r4,aaa3
175 1 mov p1,#0
176 1 cjne a,dph,Line3 ;繼續下一行周期
177 1
178 1 Frame3: setb p1.4 ;場消隱期間仍要行同步脈沖
179 1 mov r2,#14 ;設定延時時間
C51 COMPILER V8.08 MAIN 05/20/2008 14:06:01 PAGE 4
180 1 clr p1.4 ;行同步脈沖結束
181 1 FF3: cjne r3,#32,FB3 ;倒數到32時,開始場同步信號
182 1 sjmp Chg3
183 1 FB3: cjne r3,#30,Cnt3 ;倒數到30時,結束場同步信號
184 1 Chg3: cpl p1.5 ;場同步信號反轉
185 1 sjmp Dly3
186 1 Cnt3: mov dptr,#-480 ;設定顯示區域的行數
187 1 ;nop ;匹配周期時長
188 1 mov r0,#80
189 1 Dly3: djnz r2,$ ;延時
190 1 cjne r3,#1,Next3 ;判斷場消隱是否到時
191 1 ajmp Line3 ;轉到顯示區域信號輸出
192 1 Next3: djnz r3,Frame3 ;繼續場消隱周期
193 1 #pragma endasm
194 1
195 1 }
196
197 void xq()
198 {
199 1 #pragma asm
200 1 //;細彩條
201 1 // org 0000h
202 1 Line4: setb p1.4 ;行同步脈沖開始
203 1 mov r3,#45 ;預先設定場消隱計數器初值
204 1 clr p1.4 ;行同步脈沖結束
205 1 inc dptr ;計數器遞增,并作行消隱前肩的延時
206 1 inc dptr
207 1 nop
208 1 inc p1
209 1 inc p1
210 1 inc p1
211 1 inc p1
212 1 inc p1
213 1 inc p1
214 1 inc p1
215 1 inc p1
216 1 inc p1
217 1 inc p1
218 1 inc p1
219 1 inc p1
220 1 inc p1
221 1 inc p1
222 1 inc p1
223 1 mov p1,a
224 1 inc p1
225 1 inc p1
226 1 inc p1
227 1 inc p1
228 1 inc p1
229 1 inc p1
230 1 inc p1
231 1 inc p1
232 1 inc p1
233 1 inc p1
234 1 inc p1
235 1 inc p1
236 1 inc p1
237 1 inc p1
238 1 inc p1
239 1 mov p1,a
240 1 cjne a,dph,Line4 ;繼續下一行周期
241 1
C51 COMPILER V8.08 MAIN 05/20/2008 14:06:01 PAGE 5
242 1 Frame4: setb p1.4 ;場消隱期間仍要行同步脈沖
243 1 mov r2,#14 ;設定延時時間
244 1 clr p1.4 ;行同步脈沖結束
245 1 FF4: cjne r3,#32,FB4 ;倒數到32時,開始場同步信號
246 1 sjmp Chg4
247 1 FB4: cjne r3,#30,Cnt4 ;倒數到30時,結束場同步信號
248 1 Chg4: cpl p1.5 ;場同步信號反轉
249 1 sjmp Dly4
250 1 Cnt4: mov dptr,#-960 ;設定顯示區域的行數
251 1 nop ;匹配周期時長
252 1 Dly4: djnz r2,$ ;延時
253 1 cjne r3,#1,Next4 ;判斷場消隱是否到時
254 1 ajmp Line4 ;轉到顯示區域信號輸出
255 1 Next4: djnz r3,Frame4 ;繼續場消隱周期
256 1 #pragma endasm
257 1
258 1 }
259
260 void main()
261 {
262 1 while(1)
263 1 {
264 2 if(!P30)gdct();
265 2 if(!P31)hbst();
266 2 if(!P32) kct();
267 2 if(!P33)qp();
268 2 if(!P34)xq();
269 2 }
270 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 685 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -