📄 main.lst
字号:
C51 COMPILER V7.20 MAIN 12/08/2004 10:06:47 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 BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<stdio.h>
3 #include<stdlib.h>
4 #include<intrins.h>
5 #include<absacc.h>
6
7 #define busy 0x80 //用于检测LCD状态字中的Busy标识
8 #define RSaddr 0x1000
9 #define RWaddr 0x2000
10 #define CSaddr 0x0400
11 #define adtn 0xc8ff
12
13 #define wc 0xcfff
14 #define wd 0xdfff
15 #define rc 0xefff
16
17 unsigned char code homepage[] = {"www.ispdown.com"};
18 unsigned char code email[] = {"ispdown@21cn.com"};
19
20 //5ms延时
21 void delay5ms(void)
22 {
23 1 unsigned int TempCyc = 5552;
24 1 while(TempCyc--);
25 1 }
26 //----------------------------------
27 //400ms延时
28 void delay400ms(void)
29 {
30 1 unsigned char TempCycA = 5;
31 1 unsigned int TempCycB;
32 1 while(TempCycA--)
33 1 {
34 2 TempCycB=7269;
35 2 while(TempCycB--);
36 2 };
37 1 }
38 //--------------------------------
39 void waitLcd()
40 {
41 1 char temp;
42 1 bit flag=1;
43 1 while(flag==1)
44 1 {
45 2 //temp=XBYTE[CSaddr+RWaddr+adtn];
46 2 temp=XBYTE[rc];
47 2 if (temp>>7==0) flag=0;
48 2 P1=temp;
49 2 }
50 1 P1=0xff;
51 1 }
52 //---------------------------------
53 void WC_Lcd(bit isCheck,char c)
54 {
55 1 if (isCheck==1) waitLcd();
C51 COMPILER V7.20 MAIN 12/08/2004 10:06:47 PAGE 2
56 1 //XBYTE[CSaddr+adtn]=c;
57 1 XBYTE[wc]=c;
58 1 }
59
60 //--------------------------------
61 void WD_Lcd(char c)
62 {
63 1 waitLcd();
64 1 //XBYTE[CSaddr+RSaddr+adtn]=c;
65 1 XBYTE[wd]=c;
66 1 }
67
68 //----------------------------------
69 void LcdInit()
70 {
71 1 delay5ms();
72 1 delay5ms();
73 1 delay5ms();
74 1 WC_Lcd(0,0x38); //三次显示模式设置,不检测忙信号
75 1 delay5ms();
76 1 WC_Lcd(0,0x38);
77 1 delay5ms();
78 1 WC_Lcd(0,0x38);
79 1 delay5ms();
80 1
81 1 WC_Lcd(1,0x38); //显示模式设置,开始要求每次检测忙信号
82 1 WC_Lcd(1,0x08); //关闭显示
83 1 WC_Lcd(1,0x01); //显示清屏
84 1 WC_Lcd(1,0x06); // 显示光标移动设置
85 1 WC_Lcd(1,0x0C); // 显示开及光标设置
86 1 }
87 //-------------------------------------------------------------------------
88 //按指定位置显示一个字符
89 void displayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
90 {
91 1 Y &= 0x1;
92 1 X &= 0xF; //限制X不能大于15,Y不能大于1
93 1 if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
94 1 X |= 0x80; //算出指令码
95 1 WC_Lcd(0,X); //这里不检测忙信号,发送地址码
96 1 WD_Lcd(DData);
97 1 }
98 //-------------------------------------------------------------------------------
99 //按指定位置显示一串字符
100 void displayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
101 {
102 1 unsigned char ListLength;
103 1
104 1 ListLength = 0;
105 1 Y &= 0x1;
106 1 X &= 0xF; //限制X不能大于15,Y不能大于1
107 1 while (DData[ListLength]>0x20) //若到达字串尾则退出
108 1 {
109 2 if (X <= 0xF) //X坐标应小于0xF
110 2 {
111 3 displayOneChar(X, Y, DData[ListLength]); //显示单个字符
112 3 ListLength++;
113 3 X++;
114 3 }
115 2 }
116 1 }
117 //====================================
C51 COMPILER V7.20 MAIN 12/08/2004 10:06:47 PAGE 3
118 void main(void)
119 {
120 1 delay400ms();
121 1 LcdInit();
122 1
123 1 displayListChar(0, 0, homepage);
124 1 displayListChar(0, 1, email);
125 1
126 1 while(1);
127 1 }
128 //====================================
129
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 271 ----
CONSTANT SIZE = 33 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -