📄 text2.lst
字号:
C51 COMPILER V6.12 TEXT2 04/10/2009 21:44:22 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE TEXT2
OBJECT MODULE PLACED IN .\Text2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\Text2.c DEBUG OBJECTEXTEND
stmt level source
1 #include "AT89X51.H"
2 #define Ddata P2
3 sbit RS=P0^5;
4 sbit RW=P0^6;
5 sbit LCDE=P0^7;
6 //1PIN--GND 2PIN--VCC 3PIN--VO 4PIN--RS 5PIN--RW 6PIN--E 7-14PIN--DB0-DB7 15PIN--A 16PIN--K
7 unsigned char hour=12,min=0,sec=0;
8 unsigned int count=0;
9 unsigned char line1[16]={"www.gliet.edu.cn"};
10 unsigned char line2[16]={"Gui Lin 12:00:00"};
11 unsigned char tab[]={'0','1','2','3','4','5','6','7','8','9'};
12 void delay5ms()
13 {unsigned int i;
14 1 for (i=0;i<1000;i++);
15 1 }
16 void delay50us()
17 {register int i;
18 1 for (i=0;i<20;i++);
19 1 }
20 void delay()
21 {unsigned char m,n;
22 1 for(m=255;m>0;m--)
23 1 for(n=255;n>0;n--);}
24 wr_com(unsigned char comm)//********写控制字符程序 E=1 RS=0 RW=0**********//
25 {
26 1 LCDE=0;
27 1 RS=0; //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
28 1 RW=0; //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
29 1 LCDE=1;
30 1 Ddata=comm;
31 1 RS=0;
32 1 RW=0;
33 1 LCDE=0;
34 1 }
35 wr_data(unsigned char dat)//*****当前位置写字符子程序:E=1 RS=1 RW=0
36 {
37 1 LCDE=0;
38 1 RS=0; //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
39 1 RW=0; //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
40 1 RS=1;
41 1 RW=0;
42 1 LCDE=1;
43 1 Ddata=dat;
44 1 LCDE=0;
45 1 RS=0;
46 1 RW=0;
47 1 }
48
49 unsigned char busycheck()//*****忙状态检查*******//
50 {
51 1 unsigned char i;
52 1 LCDE=0;
53 1 RS=0;
54 1 RW=0;
55 1 RS=0;
C51 COMPILER V6.12 TEXT2 04/10/2009 21:44:22 PAGE 2
56 1 RW=1;
57 1 LCDE=1;
58 1 i=Ddata;
59 1 LCDE=0;
60 1 return(i);
61 1 }
62
63 void init()//**********初始化程序,必须按照产品的资料介绍的过程进行********//
64 {
65 1 wr_com(0x38); //*****显示模式设置必须三次,不用检测忙信号
66 1 delay5ms();
67 1 wr_com(0x38);
68 1 delay5ms();
69 1 wr_com(0x38);
70 1 delay5ms();
71 1 wr_com(0x01); ///***清屏****
72 1 delay5ms();
73 1 busycheck();
74 1 delay5ms();
75 1 wr_com(0x06); ///****光标移动设置***
76 1 delay5ms();
77 1 busycheck();
78 1 delay50us();
79 1 wr_com(0x38); ////***显示模式设置****
80 1 delay50us();
81 1 busycheck();
82 1 delay50us();
83 1 wr_com(0x0c); /////***显示开***
84 1 delay50us();
85 1 busycheck();
86 1 delay50us();
87 1 wr_com(0x40); //set cgram address
88 1 delay50us();
89 1 delay50us(); //***这些延时可用可不用***//
90 1 }
91
92 void display()
93 { unsigned char i;
94 1 wr_com(0x80); //set ram address
95 1 delay50us();
96 1 busycheck();
97 1 delay50us();
98 1 for(i=0;i<16;i++)
99 1 {wr_data(line1[i]); //display
100 2 delay50us();
101 2 busycheck();}
102 1 busycheck();
103 1 delay50us();
104 1 wr_com(0xc0);
105 1 delay50us();
106 1 busycheck();
107 1 delay50us();
108 1 for(i=0;i<16;i++)
109 1 {
110 2 wr_data(line2[i]); //display
111 2 delay50us();
112 2 busycheck();
113 2 }
114 1 }
115
116 void main()
117 {
C51 COMPILER V6.12 TEXT2 04/10/2009 21:44:22 PAGE 3
118 1 TMOD=0X01;
119 1 EA=1;
120 1 ET0=1;
121 1 TR0=1;
122 1 TH0=(65536-4995)/256;
123 1 TL0=(65536-4995)%256;
124 1 init();
125 1 while(1)
126 1 {line2[15]=tab[sec%10];line2[14]=tab[sec/10];
127 2 line2[12]=tab[min%10];line2[11]=tab[min/10];
128 2 line2[9]=tab[hour%10];line2[8]=tab[hour/10];
129 2 if(!P1_2){delay();if(!P1_2){delay();sec++;if(sec==60){sec=0;}}}
130 2 if(!P1_1){delay();if(!P1_1){delay();min++;if(min==60){min=0;}}}
131 2 if(!P1_0){delay();if(!P1_0){delay();hour++;if(hour==24){hour=0;}}}
132 2 display();
133 2 }
134 1 }
135 void t0(void)interrupt 1 using 0
136 {
137 1 TH0=(65536-4995)/256;
138 1 TL0=(65536-4995)%256;
139 1 count++;
140 1 if(count==200){count=0;sec++;}
141 1 if(sec==60){sec=0;min++;}
142 1 if(min==60){min=0;hour++;}
143 1 if(hour==24){hour=0;}
144 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 446 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 47 ----
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 + -