📄 jhd162.lst
字号:
C51 COMPILER V8.09 JHD162 11/29/2008 09:47:18 PAGE 1
C51 COMPILER V8.09, COMPILATION OF MODULE JHD162
OBJECT MODULE PLACED IN jhd162.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\KC51.EXE jhd162.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<intrins.h>
3
4 #define uchar unsigned char
5 #define uint unsigned int
6
7 sbit dc=0xc4; /*P4.4 LCD的RS*/
8 sbit rw=0xc5; /*P4.5 LCD的R/W*/
9 sbit cs=0xc6; /*P4.6 LCD的E*/
10 #define lcdbus P0 /*P0LCD 数据D0=P0.0*/
11
12 void soft_nop(){}
13
14
15 uchar lcd_checkbusy() /*检查LCD忙*/
16 {
17 1 register lcdstate;
18 1 dc=0;
19 1 rw=1;
20 1 cs=1;
21 1 soft_nop();
22 1 lcdstate=lcdbus;
23 1 cs=0;
24 1 return((lcdstate&0x80));
25 1 }
26
27 void lcd_wrcmd(uchar lcdcmd) /*写LCD命令*/
28 {
29 1 while(lcd_checkbusy());
30 1 lcdbus=lcdcmd;
31 1 dc=0;
32 1 rw=0;
33 1 cs=1;
34 1 soft_nop();
35 1 cs=0;
36 1 lcdbus=0xff;
37 1 }
38
39
40 void lcd_moveto(uchar position) /*移动光标到:0-79*/
41 {
42 1 register cmd=0x80;
43 1 //lcdcounter=position;
44 1 if(position>59)
45 1 position+=0x18;
46 1 else
47 1 {
48 2 if(position>39)
49 2 position-=0x14;
50 2 else
51 2 {
52 3 if(position>19)
53 3 position+=0x2c;
54 3 }
55 2 }
C51 COMPILER V8.09 JHD162 11/29/2008 09:47:18 PAGE 2
56 1 cmd=cmd|position;
57 1 lcd_wrcmd(cmd);
58 1 }
59
60
61 void lcd_wrdata(uchar lcddata)/*在当前显示位置显示数据*/
62 {
63 1 while(lcd_checkbusy());
64 1 /*if(lcdcounter==20)
65 1 {
66 1 lcd_moveto(20);
67 1 while(lcd_checkbusy());
68 1 }
69 1 if(lcdcounter==40)
70 1 {
71 1 lcd_moveto(40);
72 1 while(lcd_checkbusy());
73 1 }
74 1 if(lcdcounter==60)
75 1 {
76 1 lcd_moveto(60);
77 1 while(lcd_checkbusy());
78 1 }
79 1 if(lcdcounter==80)
80 1 {
81 1 lcd_moveto(0);
82 1 while(lcd_checkbusy());
83 1 lcdcounter=0;
84 1 }*/
85 1 //lcdcounter++;
86 1 lcdbus=lcddata;
87 1 dc=1;
88 1 rw=0;
89 1 cs=1;
90 1 soft_nop();
91 1 cs=0;
92 1 lcdbus=0xff;
93 1 }
94 // position 显示地址
95 // count 显示字符个数(包括空格)
96 // *strpoint 字符串
97 void lcd_string(uchar position,uchar count,uchar *strpoint) /*在指定位置显示LCD字符串*/
98 {
99 1 uchar i;
100 1 lcd_moveto(position);
101 1 for(i=0;i<count;i++)
102 1 {
103 2 lcd_wrdata(strpoint[i]);
104 2 }
105 1 }
106
107
108 void lcd_init() /*初始化*/
109 {
110 1 lcd_wrcmd(0x38); /*设置8位格式,2行,5*7 */
111 1 lcd_wrcmd(0x0c); /*整体显示,关光标,不闪烁*/
112 1 lcd_wrcmd(0x06); /*设定输入方式,增量不移位*/
113 1 lcd_wrcmd(0x01); /*清除显示*/
114 1 //lcdcounter=0;
115 1 }
116
117
C51 COMPILER V8.09 JHD162 11/29/2008 09:47:18 PAGE 3
118 void lcd_cls() /*清除显示*/
119 {
120 1 lcd_wrcmd(0x01);
121 1 // lcdcounter=0;
122 1 }
123
124
125
126 /**********************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 181 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
PA51 中文汇编系统
Version 8.2 (C) Copyright 2007.7
登陆 http://pa51.cn 了解更多咨询
技术论坛 http://bbs.pa51.cn
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -