📄 ocm12864.lst
字号:
C51 COMPILER V8.08 OCM12864 07/23/2007 08:17:44 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE OCM12864
OBJECT MODULE PLACED IN OCM12864.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE OCM12864.c LARGE BROWSE DEBUG OBJECTEXTEND CODE
line level source
1
2 #include <at89x52.h>
3 #include <stdio.h>
4 #include <absacc.h>
5 #include <intrins.h>
6 #include <ocm12864.h>
7 #include <lcd_code.h>
8 #include <xbyte.h>
9
10 #define disp_off 0x3e
11 #define disp_on 0x3f
12 #define disp_x 0xb8
13 #define disp_z 0xc0
14 #define disp_y 0x40
15 #define comm 0
16 #define dat 1
17 #define data_ora XBYTE[0x8000] //MCU P1<------> LCM
18
19 sbit di = P1^2; //Data or Instrument Select,H:写数据,L:写指令
20 sbit rw = P1^1; //Write or Read,H:read,L:write
21 sbit e = P1^0; //读写使能
22
23 //sbit bf = P0^7;
24 //sbit res= P0^4;
25
26
27
28 //void chk_busy (void);
29 void clrscr();
30 void delay (uchar us)
31 {
32 1 while(us--);
33 1 }
34 /*--------------写LCD----------*/
35 void wr_lcd (uchar dat_comm,uchar content)
36 {
37 1 //chk_busy ();
38 1 COM8255=0x80; //PA输出,PB输出
39 1 if (dat_comm==1) //di=dat_comm; //DI=PB5
40 1 {
41 2 PB8255=0x2f; //di=1 rw=0 e=1
42 2 data_ora=content;
43 2 PB8255=0x6f;
44 2 ;
45 2 ;
46 2 PB8255=0X2f;
47 2 }
48 1 else
49 1 {
50 2 PB8255=0x0f; //di=0 rw=0 e=1 //RW=PB4
51 2 data_ora=content;
52 2 PB8255=0x4f; //e=1; //e=PB6
53 2 ;
54 2 ;
55 2 PB8255&=0x0f; //e=0;
C51 COMPILER V8.08 OCM12864 07/23/2007 08:17:44 PAGE 2
56 2 }
57 1
58 1 }
59 /*void chk_busy (void)
60 {
61 data_ora=0xff;
62 di=0;
63 rw=1;
64 ;
65 e=1;
66 // while(bf||res==1);
67 e=0;
68 }
69
70 /*--------------读LCD数据---------------
71 uchar rd_lcd ()
72 {
73 uchar rddata;
74 chk_busy ();
75 di=1;
76 rw=1;
77 e=1;
78 ;
79 rddata=data_ora;
80 e=0;
81 return rddata;
82 } */
83
84 /*--------------写点阵------------------*/
85 void lat_disp (uchar data1)
86 {
87 1 uchar i,j;
88 1 cs1=1;cs2=1;
89 1 wr_lcd (comm,disp_on);
90 1 for(j=0;j<8;j++)
91 1 {
92 2 wr_lcd (comm,disp_x+j);
93 2 //wr_lcd (comm,disp_z);
94 2 wr_lcd (comm,disp_y);
95 2 for(i=0;i<64;i++)
96 2 {
97 3 wr_lcd (dat,data1);
98 3 // wr_lcd (dat,data2);
99 3 }
100 2 }
101 1 }
102 /*--------------显示图片----------------
103 void img_disp (uchar code *img,uchar l,uchar r)
104 {
105 uchar i,j;
106 for(j=0;j<8;j++)
107 {
108 cs1=l;cs2=r;
109 wr_lcd (comm,disp_on);
110 wr_lcd (comm,disp_x+j);
111 wr_lcd (comm,disp_z);
112 wr_lcd (comm,disp_y);
113 for(i=0;i<64;i++)
114 wr_lcd (dat,img[j*64+i]);
115
116
117 }
C51 COMPILER V8.08 OCM12864 07/23/2007 08:17:44 PAGE 3
118 } */
119
120 /*---------------指定位置(x,y)显示row_xl行(每行row_yl个)汉字(大小xl*yl)--------------*/
121
122 void chn_disp (uchar x,uchar y,uchar xl,uchar yl,uchar row_xl,uchar row_yl,uchar code *chn)
123 {
124 1 uchar i,j,k,l,a;
125 1 wr_lcd (comm,disp_on);
126 1 for(l=0;l<row_xl;l++)
127 1 {
128 2 for(k=0;k<row_yl;k++)
129 2 {
130 3 for(j=0;j<xl;j++)
131 3 {
132 4 wr_lcd (comm,disp_x+x+l*xl+j);
133 4 //wr_lcd (comm,disp_z);
134 4 wr_lcd (comm,disp_y+y+k*yl);
135 4 a=l*xl*yl*row_yl+k*xl*yl+j*yl;
136 4 for(i=0;i<yl;i++)
137 4 wr_lcd (dat,chn[a+i]);
138 4 }
139 3 }
140 2 }
141 1 }
142 /*------------------初始化-----------------*/
143 void init_lcd (void)
144 {
145 1 delay(20);
146 1 cs1=1;
147 1 cs2=1;
148 1 //wr_lcd (comm,disp_off);
149 1 wr_lcd (comm,disp_on);
150 1 }
151 /*---------------清屏-----------------*/
152 void clrscr()
153 {
154 1 lat_disp(0x00);
155 1 }
156 /*-----------------反白方式显示汉字------------------*/
157 void chn_fdisp (uchar x,uchar y,uchar xl,uchar yl,uchar row_xl,uchar row_yl,uchar code *chn)
158 {
159 1 uchar i,j,k,l,a;
160 1 wr_lcd (comm,disp_on);
161 1 for(l=0;l<row_xl;l++)
162 1 {
163 2 for(k=0;k<row_yl;k++)
164 2 {
165 3 for(j=0;j<xl;j++)
166 3 {
167 4 wr_lcd (comm,disp_x+x+l*xl+j);
168 4 //wr_lcd (comm,disp_z);
169 4 wr_lcd (comm,disp_y+y+k*yl);
170 4 a=l*xl*yl*row_yl+k*xl*yl+j*yl;
171 4 for(i=0;i<yl;i++)
172 4 wr_lcd (dat,~chn[a+i]);
173 4 }
174 3 }
175 2 }
176 1 }
177 /*-------- 在 CS屏上(X ,Y )位置显示数字 Num----------*/
178 void num_disp(bit cs,uchar x,uchar y,uchar Num)
179 {
C51 COMPILER V8.08 OCM12864 07/23/2007 08:17:44 PAGE 4
180 1 cs1=cs;
181 1 cs2=~cs;
182 1 switch(Num)
183 1 {
184 2 case 0: { chn_disp(x,y,2,8,1,1,hz_zero); } break;
185 2 case 1: { chn_disp(x,y,2,8,1,1,hz_one); } break;
186 2 case 2: { chn_disp(x,y,2,8,1,1,hz_two); } break;
187 2 case 3: { chn_disp(x,y,2,8,1,1,hz_three);} break;
188 2 case 4: { chn_disp(x,y,2,8,1,1,hz_four);} break;
189 2 case 5: { chn_disp(x,y,2,8,1,1,hz_five);} break;
190 2 case 6: { chn_disp(x,y,2,8,1,1,hz_six);} break;
191 2 case 7: { chn_disp(x,y,2,8,1,1,hz_seven);} break;
192 2 case 8: { chn_disp(x,y,2,8,1,1,hz_eight);} break;
193 2 case 9: { chn_disp(x,y,2,8,1,1,hz_nine);} break;
194 2 case 10: { chn_disp(x,y,2,8,1,1,hz_A);} break;
195 2 case 11: { chn_disp(x,y,2,8,1,1,hz_B);} break;
196 2 case 12: { chn_disp(x,y,2,8,1,1,hz_C);} break;
197 2 case 13: { chn_disp(x,y,2,8,1,1,hz_D);} break;
198 2 case 14: { chn_disp(x,y,2,8,1,1,hz_E);} break;
199 2 case 15: { chn_disp(x,y,2,8,1,1,hz_F);} break;
200 2 }
201 1 }
C51 COMPILER V8.08 OCM12864 07/23/2007 08:17:44 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _delay (BEGIN)
; SOURCE LINE # 30
;---- Variable 'us' assigned to Register 'R7' ----
; SOURCE LINE # 31
0000 ?C0001:
; SOURCE LINE # 32
0000 AE07 MOV R6,AR7
0002 1F DEC R7
0003 EE MOV A,R6
0004 70FA JNZ ?C0001
; SOURCE LINE # 33
0006 ?C0003:
0006 22 RET
; FUNCTION _delay (END)
; FUNCTION L?0077 (BEGIN)
0000 E9 MOV A,R1
0001 8FF0 MOV B,R7
0003 A4 MUL AB
0004 FF MOV R7,A
0005 E0 MOVX A,@DPTR
0006 24B8 ADD A,#0B8H
0008 2F ADD A,R7
0009 2C ADD A,R4
000A FD MOV R5,A
000B E4 CLR A
000C FF MOV R7,A
; FUNCTION _wr_lcd (BEGIN)
; SOURCE LINE # 35
;---- Variable 'content' assigned to Register 'R5' ----
;---- Variable 'dat_comm' assigned to Register 'R7' ----
; SOURCE LINE # 36
; SOURCE LINE # 38
000D 908003 MOV DPTR,#08003H
0010 7480 MOV A,#080H
0012 F0 MOVX @DPTR,A
; SOURCE LINE # 39
0013 EF MOV A,R7
0014 908001 MOV DPTR,#08001H
0017 B40110 CJNE A,#01H,?C0004
; SOURCE LINE # 40
; SOURCE LINE # 41
001A 742F MOV A,#02FH
001C F0 MOVX @DPTR,A
; SOURCE LINE # 42
001D 908000 MOV DPTR,#08000H
0020 ED MOV A,R5
0021 F0 MOVX @DPTR,A
; SOURCE LINE # 43
0022 A3 INC DPTR
0023 746F MOV A,#06FH
0025 F0 MOVX @DPTR,A
; SOURCE LINE # 46
0026 742F MOV A,#02FH
0028 F0 MOVX @DPTR,A
; SOURCE LINE # 47
0029 22 RET
002A ?C0004:
; SOURCE LINE # 49
C51 COMPILER V8.08 OCM12864 07/23/2007 08:17:44 PAGE 6
; SOURCE LINE # 50
002A 740F MOV A,#0FH
002C F0 MOVX @DPTR,A
; SOURCE LINE # 51
002D 908000 MOV DPTR,#08000H
0030 ED MOV A,R5
0031 F0 MOVX @DPTR,A
; SOURCE LINE # 52
0032 A3 INC DPTR
0033 744F MOV A,#04FH
0035 F0 MOVX @DPTR,A
; SOURCE LINE # 55
0036 E0 MOVX A,@DPTR
0037 540F ANL A,#0FH
0039 F0 MOVX @DPTR,A
; SOURCE LINE # 56
; SOURCE LINE # 58
003A ?C0006:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -