📄 guding.lst
字号:
C51 COMPILER V7.06 GUDING 10/24/2006 10:47:06 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE GUDING
OBJECT MODULE PLACED IN guding.OBJ
COMPILER INVOKED BY: D:\keil 7.06\C51\BIN\C51.EXE guding.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*======缩写说明=========
2 PB---判别
3 SF---是否
4 ZL---指令
5 SJ---数据
6 QD---确定
7 WZ---位置
8 ========================*/
9 #include<reg51.h>
10 #define uchar unsigned char
11 #define uint unsigned int
12
13 void Delay5Ms(void);
14
15 sbit RS = P1^0; // P10口接4脚,1-数据寄存器,0-指令寄存器
16 sbit RW = P1^1; // P11口接5脚,1-读操作,0-写操作
17 sbit E = P1^2; // P12口接6脚,使能
18
19
20 extern uchar m,n,k,l;
21 void ReadTemperature();
22
23 uchar lcd_show_date[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
24
25
26 /*=========================
27 读忙子程序 RS=0 RW=1 E=1
28 =========================*/
29 bit PB_busy(void)
30 {
31 1 uchar temp ;
32 1 bit busy=1;
33 1 RS=0;
34 1 RW=1;
35 1 E=1;
36 1 while(busy)
37 1 {
38 2 E = 0 ;
39 2 temp = P2 ;
40 2 E = 1 ; //读忙
41 2 temp = temp & 0x80;
42 2 if(temp) busy=1; //当检测到忙,则一直检测,程序进入循环
43 2 else busy=0; //等待不忙
44 2 }
45 1 return busy; //返回忙标志,可能有用
46 1
47 1 }
48
49
50 /*==========================
51 写指令子程序 RS=0 RW=0 E=1
52 ============================*/
53 void Write_ZL(uchar ZL)
54 {
55 1 if( !PB_busy() ) //判断不忙则写指令
C51 COMPILER V7.06 GUDING 10/24/2006 10:47:06 PAGE 2
56 1 {
57 2 RS=0; RW=0;
58 2 P2 = ZL ;
59 2 E=1;
60 2 E=0;
61 2 }
62 1
63 1 }
64
65
66 /*==========================
67 写单个数据 RS=1 RW=0 E=1
68 ============================*/
69 void Write_SJ(uchar SJ)
70 {
71 1 if( !PB_busy() )
72 1 {
73 2 RS=1; RW=0;
74 2 P2 = SJ ;
75 2 E = 1 ;
76 2 E = 0 ;
77 2 }
78 1 }
79
80
81 /*===============================
82 确定字符位置字程序 x---列 y---行
83 ================================*/
84 void QD_WZ(uchar x,uchar y)
85 {
86 1 uchar address;
87 1 if(y==0) address = 0x80 + x ; //x,y都从0计起
88 1 else address = 0xc0 + x ;
89 1 Write_ZL(address);
90 1 }
91
92
93 /*==========================================
94 初试化:
95 ===========================================*/
96 void Reset(void)
97 {
98 1 uchar n;
99 1 for(n=0;n<3;n++) //3次,不检测忙信号(故未直接用函数)
100 1 {
101 2 RS=0;RW=0;E=1;
102 2 P2=0x38; //八位总线,双行显示,显示5X10的点阵字符
103 2 E=1;E=0;
104 2 Delay5Ms();
105 2 };
106 1 Write_ZL(0x38); //需要检测忙信号
107 1 Write_ZL(0x0e);
108 1 Write_ZL(0x0d); //关显示
109 1 Write_ZL(0x01);
110 1 Delay5Ms();
111 1 Write_ZL(0x06); //光标设置,光标右移,文字不移动
112 1 Delay5Ms();
113 1 Write_ZL(0x0c); //开显示,设置光标
114 1 /*未用到指令5*/
115 1 }
116
117
C51 COMPILER V7.06 GUDING 10/24/2006 10:47:06 PAGE 3
118 // 短延时
119 void Delay5Ms(void)
120 {
121 1 uint c=5552;
122 1 while(c--);
123 1 }
124
125
126
127 void main(void)
128 {
129 1 Reset();
130 1 while(1)
131 1 {
132 2 ReadTemperature();
133 2 Delay5Ms();
134 2 QD_WZ(1,0);
135 2 Write_SJ(lcd_show_date[m]);
136 2 QD_WZ(2,0);
137 2 Write_SJ(lcd_show_date[n]);
138 2 QD_WZ(3,0);
139 2 Write_SJ(0x2e);
140 2 QD_WZ(4,0);
141 2 Write_SJ(lcd_show_date[k]);
142 2 QD_WZ(5,0);
143 2 Write_SJ(lcd_show_date[l]);
144 2 }
145 1
146 1
147 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 247 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 1
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -