📄 text7.lst
字号:
C51 COMPILER V7.50 TEXT7 12/26/2008 16:22:21 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE TEXT7
OBJECT MODULE PLACED IN Text7.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text7.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG938.h>
2 #include <intrins.h>
3
4 #define uint unsigned int
5 #define uchar unsigned char
6 #define ulong unsigned long
7 #define _Nop() _nop_()
8 //定义变量
9
10 sbit LCDD=P0^5;
11 sbit LCDC=P0^4;
12
13 sbit YANZ1=P1^6;
14 sbit YANZ2=P1^7;
15
16 uchar code byte[20]="gnhjuju";
17 uchar code byte1[20]="2008";
18 uchar code byte2[]="ST";
19 uchar tr_flag=1;
20
21
22 void dally_timer1(uint data ms);
23 void dally_timer2(uint data us);
24 void LCD_WRITE1(uchar data TMP1);
25 void LCD_WRITE(uchar data LCD_COMMAND,uchar data LCD_TMP);
26 void LCDInit(void);
27 void lcd12232_zfc(uchar row,uchar tier,uchar *puts);
28 void clear_lcd(void);
29 void uart_init(void);
30 void uart_send(uchar *dat);
31 uchar uart_read();
32 //void Light1();
33 //void Light2();
34
35
36
37 uchar code AC_TABLE[]={ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87, //第一行汉字位置
38 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97, //第二行汉字位置
39 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f, //第三行汉字位置
40 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f}; //第四行汉字位置
41
42 uchar code lcd_tab[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
43 0x41,0x42,0x43,0x44,0x45,0x46};
44
45
46 void dally_timer1(uint data ms)
47 {
48 1 uint i;
49 1 TR1=1;//启动定时器T1
50 1 for(i=ms*25;i>0;i--)
51 1 {
52 2 while(TF1==0)
53 2 {
54 3 _Nop();
55 3 };
C51 COMPILER V7.50 TEXT7 12/26/2008 16:22:21 PAGE 2
56 2 TF1=0;//清除T1溢出标志TF1
57 2 }
58 1 TR1=0;//关闭定时器T1
59 1 }
60
61 void dally_timer2(uint data us)
62 {
63 1 do
64 1 {
65 2 us--;
66 2 }
-
-
-
-
67 1 while (us > 0);
68 1 }
69
70
71 void LCD_WRITE1(uchar data TMP1)
72 {
73 1 uchar data m,TMP;
74 1 for(m=8;m>0;m--)
75 1 {
76 2 LCDC=0;
77 2 TMP=(TMP1&(0x01<<(m-1)))>>(m-1);//取数据的第7-0位
78 2 if(TMP==0)
79 2 {
80 3 LCDD=0; //?i??0,lcd???0
81 3 }
82 2 if(TMP==1)
83 2 {
84 3 LCDD=1; //?i??1,lcd???1
85 3 }
86 2 //lcd?????????
87 2 dally_timer2(1);
88 2 LCDC=1;
89 2 }
90 1 }
91
92 void LCD_WRITE(uchar data LCD_COMMAND,uchar data LCD_TMP)
93 {
94 1 uchar data TMP1;
95 1 TMP1=LCD_COMMAND; //??lcd??
96 1 LCD_WRITE1(TMP1);
97 1 TMP1=LCD_TMP&0xF0; //??lcd??????4?
98 1 LCD_WRITE1(TMP1);
99 1 TMP1=(LCD_TMP&0x0F)<<4; //??lcd??????4?
100 1 LCD_WRITE1(TMP1);
101 1 }
102
103 void LCDInit(void)
104 {
105 1 LCD_WRITE(0xf8,0x01);
106 1 dally_timer1(40);
107 1 LCD_WRITE(0xf8,0x30);
108 1 dally_timer1(40);
109 1 LCD_WRITE(0xf8,0x02);
110 1 dally_timer1(40);
111 1 LCD_WRITE(0xf8,0x04);
112 1 dally_timer1(40);
113 1 LCD_WRITE(0xf8,0x0c);
C51 COMPILER V7.50 TEXT7 12/26/2008 16:22:21 PAGE 3
114 1 dally_timer1(40);
115 1 LCD_WRITE(0xf8,0x01);
116 1 dally_timer1(40);
117 1 LCD_WRITE(0xf8,0x80);
118 1 dally_timer1(40);
119 1 }
120
121 void lcd12232_zfc(uchar row,uchar tier,uchar *puts)
122 {
123 1 uchar data tmp;
124 1 tmp = AC_TABLE[8*row+tier];
125 1 LCD_WRITE(0xf8,tmp);
126 1 while(*puts != '\0') //???????????
127 1 {
128 2 LCD_WRITE(0xfa,*puts); //
129 2 puts++;
130 2 }
131 1 }
132
133
134
135 void clear_lcd(void)
136 {
137 1 LCD_WRITE(0xf8,0x01);
138 1 dally_timer1(40);
139 1 }
140
141 void uart_init(void)
142 {
143 1 SCON=0x50;//模式1,使能串行接受
144 1 SSTAT=0x60;//双缓冲禁止,组合中断禁止,停止位结束产生Tx中断.采用查询方式发送和接收
145 1 BRGCON=0;
146 1 BRGR0=0xF0;//
147 1 BRGR1=0x02;//
148 1 BRGCON=0x03;//使能波特率发生器
149 1 }
150
151
152
153 void uart_send(uchar *dat)
154 {
155 1 uint j=0;
156 1
157 1 while(dat[j] !='\0') // send string
158 1 {
159 2 SBUF=dat[j]; // start sending one byte
160 2 while (!TI); // wait until sent
161 2 TI=0;
162 2 j++;
163 2
164 2 }
165 1
166 1 }
167
168
169 /*void Light1()
170 {
171 uchar i;
172 for(i=0;i<20;i++)
173 {
174 YANZ1=1;
175 dally_timer1(100);
C51 COMPILER V7.50 TEXT7 12/26/2008 16:22:21 PAGE 4
176 YANZ1=0;
177 dally_timer1(100);
178 }
179
180 }
181
182 void Light2()
183 {
184 uchar i;
185 for(i=0;i<20;i++)
186 {
187 YANZ2=1;
188 dally_timer1(100);
189 YANZ2=0;
190 dally_timer1(100);
191 }
192
193 }*/
194
195 uchar uart_read()
196 {
197 1 uchar dat1;
198 1
199 1 while(RI==0);
200 1 RI=0;
201 1 dat1=SBUF;
202 1
203 1 return dat1;
204 1 }
205
206
207 void main()
208 {
209 1 uint i;
210 1 uchar dat11[16]="4326788600007";
211 1 P0M1=0x00;
212 1 P0M2=0x00;
213 1 P1M1=0x00;
214 1 P1M2=0x00;
215 1 P2M1=0x00;
216 1 P2M2=0x00;
217 1
218 1 P0=0xf8;
219 1 P1=0x3f;
220 1 P2=0xff;
221 1
222 1 SP=0x7F;
223 1 TMOD=0x20;//T1工作方式2
224 1 TAMOD=0x00;
225 1 TL1=0x6C;//装入T1初值
226 1 TH1=0x6C;
227 1
228 1 LCDInit();
229 1 uart_init();
230 1 //IEN0=0x90;
231 1 //Light1();
232 1 lcd12232_zfc(0,0,dat11);
233 1 while(1)
234 1 {
235 2
236 2 for(i=0;i<16;i++)
237 2 {
C51 COMPILER V7.50 TEXT7 12/26/2008 16:22:21 PAGE 5
238 3 dat11[i]=uart_read();
239 3 }
240 2 clear_lcd();
241 2 lcd12232_zfc(0,0,dat11);
242 2 dally_timer1(50);
243 2
244 2 uart_send(byte);
245 2
246 2 }
247 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 461 ----
CONSTANT SIZE = 107 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 22
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 + -