📄 jhd162.lst
字号:
C51 COMPILER V8.08 JHD162 01/16/2008 15:58:53 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE JHD162
OBJECT MODULE PLACED IN jhd162.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE jhd162.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <at89x51.h>
2 #include <intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5
6 sbit dc=0xa5; /*P2.5 LCD的RS*/
7 sbit rw=0xa6; /*P2.6 LCD的R/W*/
8 sbit cs=0xa7; /*P2.7 LCD的E*/
9 #define lcdbus P0 /*P0LCD 数据D0=P0.0*/
10
11 void soft_nop(){}
12
13
14 uchar data lcdcounter;
15
16 bit lcdusing1,lcdusing2;
17 bit lcd_checkbusy() /*检查LCD忙*/
18
19 { register lcdstate;
20 1 dc=0;
21 1 rw=1;
22 1 cs=1;
23 1 soft_nop();
24 1 lcdstate=lcdbus;
25 1 cs=0;
26 1 return((bit)(lcdstate&0x80));
27 1 }
28
29 void lcd_wrcmd(uchar lcdcmd) /*写LCD命令*/
30 { lcdusing1=1;
31 1 while(lcd_checkbusy());
32 1 lcdbus=lcdcmd;
33 1 dc=0;
34 1 rw=0;
35 1 cs=1;
36 1 soft_nop();
37 1 cs=0;
38 1 lcdbus=0xff;
39 1 lcdusing1=0;
40 1 }
41
42 void lcd_moveto(char position) /*移动光标到:0-79*/
43 { register cmd=0x80;
44 1 lcdcounter=position;
45 1 if(position>59)
46 1 position+=0x18;
47 1 else
48 1 {if(position>39)position-=0x14;
49 2 else
50 2 {if(position>19)position+=0x2c;
51 3 }
52 2 }
53 1 cmd=cmd|position;
54 1 lcd_wrcmd(cmd);
55 1 }
C51 COMPILER V8.08 JHD162 01/16/2008 15:58:53 PAGE 2
56
57 void lcd_wrdata(char lcddata) /*在当前显示位置显示数据*/
58 {
59 1 lcdusing2=1;
60 1 while(lcd_checkbusy());
61 1 if(lcdcounter==20)
62 1 {lcd_moveto(20);
63 2 while(lcd_checkbusy());
64 2 }
65 1 if(lcdcounter==40)
66 1 {lcd_moveto(40);
67 2 while(lcd_checkbusy());
68 2 }
69 1 if(lcdcounter==60)
70 1 {lcd_moveto(60);
71 2 while(lcd_checkbusy());
72 2 }
73 1 if(lcdcounter==80)
74 1 {lcd_moveto(0);
75 2 while(lcd_checkbusy());
76 2 lcdcounter=0;
77 2 }
78 1 lcdcounter++;
79 1 lcdbus=lcddata;
80 1 dc=1;
81 1 rw=0;
82 1 cs=1;
83 1 soft_nop();
84 1 cs=0;
85 1 lcdbus=0xff;
86 1 lcdusing2=0;
87 1 }
88
89
90 void lcd_string(char *strpoint) /*在指定位置显示LCD字符串*/
91 { register i=0;
92 1 while(strpoint[i]!=0){
93 2 lcd_wrdata(strpoint[i]);
94 2 i++;
95 2 }
96 1 }
97
98
99 void lcd_init() /*初始化*/
100 { lcd_wrcmd(0x38); /*设置8位格式,2行,5*7 */
101 1 lcd_wrcmd(0x0c); /*整体显示,关光标,不闪烁*/
102 1 lcd_wrcmd(0x06); /*设定输入方式,增量不移位*/
103 1 lcd_wrcmd(0x01); /*清除显示*/
104 1 lcdcounter=0;
105 1 }
106
107 void lcd_cls() /*清除显示*/
108 { lcd_wrcmd(0x01);
109 1 lcdcounter=0;
110 1 }
111
112
113
114 /**********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V8.08 JHD162 01/16/2008 15:58:53 PAGE 3
CODE SIZE = 274 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 5
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 + -