📄 test.lst
字号:
C51 COMPILER V8.02 TEST 01/04/2009 11:03:28 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE TEST
OBJECT MODULE PLACED IN Test.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Test.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <STC12C5410AD.h>
2
3 #define uchar unsigned char
4 #define uint unsigned int
5
6 sbit RS = P3^2;
7 sbit RW = P3^3;
8 sbit E = P3^4;
9 sbit WDT= P3^5;
10
11 void InitialCPU(void);
12 void Delay60ns(int);
13 void WriteCmd(uchar);
14 void WriteData(uchar);
15 void Lcd_Init(void);
16 void chk_busy(void);
17 void Clear_Lcd(void);
18 void Char_Disp(uchar x, uchar y, char *p);
19
20
21 main()
22 {
23 1 uchar i;
24 1 char date[8] = {' ','a','b','c','d','e','f','g'};
25 1 char *p = date;
26 1
27 1
28 1 InitialCPU();
29 1 Lcd_Init();
30 1
31 1 Clear_Lcd();
32 1 chk_busy();
33 1
34 1 Char_Disp(0,0,"Monday");
35 1 Char_Disp(4,0,"星期一");
36 1
37 1 //Char_Disp(0,1,"Wednesday");
38 1 Char_Disp(1,1,"去电:");
39 1 Char_Disp(4,2,"星期四");
40 1 Char_Disp(1,3,"来电:");
41 1 Delay60ns(120);
42 1
43 1 while(1)
44 1 {
45 2 for(i=0;i<200;i++)
46 2 Delay60ns(2000);
47 2 WDT = !WDT;
48 2 }
49 1 }
50
51
52 /************************************/
53 /* CPU 初始化子程序 */
54 /************************************/
55 void InitialCPU(void)
C51 COMPILER V8.02 TEST 01/04/2009 11:03:28 PAGE 2
56 { //IDLE_CLK |=0x01;
57 1 //端口设置
58 1 P1M0 = 0x00; //设置P1 口为IO状态
59 1 P1M1 = 0x00;
60 1
61 1 P3M0 = 0x00; //设置P3 口为IO状态
62 1 P3M1 = 0x00;
63 1 WDT = 0;
64 1 }
65
66
67
68 //**************
69 //延时
70 //**************
71 void Delay60ns(int ns)
72 {
73 1 int i,j;
74 1 for (i=0;i<ns;i++);
75 1 {
76 2 for (j=0;j<4;j++);
77 2
78 2 }
79 1 }
80
81
82
83 //**************
84 //写命令
85 //**************
86 void WriteCmd(uchar cmd)
87 { uchar temp;
88 1
89 1 RS = 0;
90 1 RW = 1;
91 1 do
92 1 {
93 2 P1 = 0xFF;
94 2 E = 1;
95 2 temp = P1;
96 2 E = 0;
97 2 }while(temp&0x80); //等待空闲
98 1 RS = 0; //开始写命令
99 1 RW = 0;
100 1 P1 = cmd;
101 1 E = 1;
102 1 E = 0;
103 1 }
104
105
106 //**************
107 //写数据
108 //**************
109 void WriteData(uchar Dat)
110 { uchar temp;
111 1
112 1 RS = 0;
113 1 RW = 1;
114 1 do
115 1 {
116 2 P1 = 0xFF;
117 2 E = 1;
C51 COMPILER V8.02 TEST 01/04/2009 11:03:28 PAGE 3
118 2 temp = P1;
119 2 E = 0;
120 2 }while(temp&0x80); //等待空闲
121 1 RS = 1; //开始写数据
122 1 RW = 0;
123 1 P1 = Dat;
124 1 E = 1;
125 1 E = 0;
126 1 }
127
128
129
130 //**********
131 //LCD初始化
132 //**********
133 void Lcd_Init(void)
134 {
135 1 WriteCmd(0x30); //8bits,基本指令
136 1
137 1 WriteCmd(0x0c); //开显示,显游标,不反显
138 1
139 1 WriteCmd(0x01); //清屏
140 1 Delay60ns(200);
141 1 WriteCmd(0x06);
142 1 }
143
144
145 //**************
146 //忙检查
147 //**************
148 void chk_busy(void)
149 { uchar temp;
150 1
151 1 RS = 0;
152 1 RW = 1;
153 1 do
154 1 {
155 2 P1 = 0xFF;
156 2 E = 1;
157 2 temp = P1;
158 2 E = 0;
159 2 }while(temp&0x80);
160 1
161 1 E = 0;
162 1 }
163
164
165
166 //**********
167 //清屏
168 //**********
169 void Clear_Lcd(void)
170 {
171 1 WriteCmd(0x01);
172 1 }
173
174
175
176 //**********
177 //显示汉字
178 //**********
179 void Char_Disp(unsigned char x, unsigned char y, char *p)
C51 COMPILER V8.02 TEST 01/04/2009 11:03:28 PAGE 4
180 {
181 1 if(y == 0)
182 1 WriteCmd(0x80+x);
183 1
184 1 if(y == 1)
185 1 WriteCmd(0x90+x);
186 1
187 1 if(y == 2)
188 1 WriteCmd(0x88+x);
189 1
190 1 if(y == 3)
191 1 WriteCmd(0x98+x);
192 1
193 1 while(*p != 0)
194 1 WriteData(*p++);
195 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 371 ----
CONSTANT SIZE = 43 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 15
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 + -