📄 led.lst
字号:
35 =1 extern char *gets (char *, int n);
36 =1 extern int scanf (const char *, ...);
37 =1 extern int sscanf (char *, const char *, ...);
38 =1 extern int puts (const char *);
39 =1
40 =1 #pragma RESTORE
41 =1
42 =1 #endif
43 =1
4 #include <intrins.h>
1 =1 /*--------------------------------------------------------------------------
2 =1 INTRINS.H
3 =1
4 =1 Intrinsic functions for C51.
5 =1 Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
6 =1 All rights reserved.
7 =1 --------------------------------------------------------------------------*/
8 =1
9 =1 #ifndef __INTRINS_H__
10 =1 #define __INTRINS_H__
11 =1
12 =1 extern void _nop_ (void);
13 =1 extern bit _testbit_ (bit);
14 =1 extern unsigned char _cror_ (unsigned char, unsigned char);
15 =1 extern unsigned int _iror_ (unsigned int, unsigned char);
16 =1 extern unsigned long _lror_ (unsigned long, unsigned char);
17 =1 extern unsigned char _crol_ (unsigned char, unsigned char);
18 =1 extern unsigned int _irol_ (unsigned int, unsigned char);
19 =1 extern unsigned long _lrol_ (unsigned long, unsigned char);
20 =1 extern unsigned char _chkfloat_(float);
21 =1
22 =1 #endif
23 =1
5
6
7
8 sbit rs = P3^5; //显示数据
9 sbit rw = P3^6; //读写数据
10 sbit ep = P3^7; //使能端
11 #define uchar unsigned char
12 #define uint unsigned int
13
14
15 uchar code welcomedata1[]={"应聘者 :陈耿平"};
16 uchar code welcomedata2[]={"电话:13822442590"};
C51 COMPILER V7.06 LED 11/27/2007 10:08:50 PAGE 6
17 uchar code welcomedata3[]={"QQ:286830627"};
18
19 //--------------------------------------------------------------------------------------------------
20 //函数:延时子程序,实现(16*N+24)us的延时
21 void delay(unsigned int N)
22 {
23 1 unsigned int i;
24 1 for(i=0;i<N;i++);
25 1
26 1 }
27
28 //-------------------------------------------------------------------------------------------------
29 //函数:LCD处理函数
30 //-------------------------------------------------------------------------------------------------
31 uchar lcd_bz()
32 { // 测试LCD忙碌状态
33 1 uchar result;
34 1 rs = 0;
35 1 rw = 1;
36 1 ep = 1;
37 1 _nop_();
38 1 _nop_();
39 1 _nop_();
40 1 _nop_();
41 1 result = P0_7;
42 1 ep = 0;
43 1 return result;
44 1 }
45 void lcd_wcmd(uchar cmd)
46 { // 写入指令数据到LCD
47 1 while(lcd_bz());
48 1 rs = 0;
49 1 rw = 0;
50 1 ep = 0;
51 1 _nop_();
52 1 _nop_();
53 1 P0 = cmd;
54 1 _nop_();
55 1 _nop_();
56 1 _nop_();
57 1 _nop_();
58 1 ep = 1;
59 1 _nop_();
60 1 _nop_();
61 1 _nop_();
62 1 _nop_();
63 1 ep = 0;
64 1 }
65
66 void lcd_pos(uchar pos)
67 { //设定显示位置
68 1 lcd_bz();
69 1 rs = 0;
70 1 rw = 0;
71 1 P0 = pos;
72 1 ep = 1;
73 1 _nop_();
74 1 _nop_();
75 1 ep = 0;
76 1 }
77
78 void lcd_wdat(uchar dat)
C51 COMPILER V7.06 LED 11/27/2007 10:08:50 PAGE 7
79 { //写入字符显示数据到LCD
80 1 while(lcd_bz());
81 1 rs = 1;
82 1 rw = 0;
83 1 ep = 0;
84 1 P0 = dat;
85 1 _nop_();
86 1 _nop_();
87 1 _nop_();
88 1 _nop_();
89 1 ep = 1;
90 1 _nop_();
91 1 _nop_();
92 1 _nop_();
93 1 _nop_();
94 1 ep = 0;
95 1 }
96
97
98 void lcd_init()
99 { //LCD初始化设定
100 1 lcd_wcmd(0x38); //
101 1 delay(1);
102 1 lcd_wcmd(0x0c); //
103 1 delay(1);
104 1 lcd_wcmd(0x06); //
105 1 delay(1);
106 1 lcd_wcmd(0x01); //清除LCD的显示内容
107 1 delay(1);
108 1 }
109
110
111 void main()
112 {
113 1 uchar i;
114 1 lcd_init(); // 初始化LCD
115 1 delay(100);
116 1 lcd_pos(0x90); // 设置显示位置为第一行的第5个字符
117 1 i = 0;
118 1 while(welcomedata1[i] != '\0')
119 1 { // 显示字?
120 2 lcd_wdat(welcomedata1[i]);
121 2 i++;
122 2 delay(200);
123 2 }
124 1 delay(1000);
125 1
126 1
127 1 lcd_pos(0x88); // 设置显示位置为第一行的第5个字符
128 1 i = 0;
129 1 while(welcomedata2[i] != '\0')
130 1 { // 显示字?
131 2 lcd_wdat(welcomedata2[i]);
132 2 i++;
133 2 delay(200);
134 2 }
135 1 delay(1000);
136 1
137 1
138 1 lcd_pos(0x98); // 设置显示位置为第一行的第5个字符
139 1 i = 0;
140 1 while(welcomedata3[i] != '\0')
C51 COMPILER V7.06 LED 11/27/2007 10:08:50 PAGE 8
141 1 { // 显示字?
142 2 lcd_wdat(welcomedata3[i]);
143 2 i++;
144 2 delay(200);
145 2 }
146 1 delay(1000);
147 1
148 1
149 1
150 1 while(1);
151 1
152 1 }
153
154 //-------------------------------------------------------------------------------------------------
155
C51 COMPILER V7.06 LED 11/27/2007 10:08:50 PAGE 9
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION L?0024 (BEGIN)
0000 L?0025:
0000 120000 R LCALL _lcd_wdat
0003 0B INC R3
0004 7FC8 MOV R7,#0C8H
0006 7E00 MOV R6,#00H
; FUNCTION _delay (BEGIN)
; SOURCE LINE # 21
;---- Variable 'N' assigned to Register 'R6/R7' ----
; SOURCE LINE # 22
; SOURCE LINE # 24
;---- Variable 'i' assigned to Register 'R4/R5' ----
0008 E4 CLR A
0009 FD MOV R5,A
000A FC MOV R4,A
000B ?C0001:
000B C3 CLR C
000C ED MOV A,R5
000D 9F SUBB A,R7
000E EC MOV A,R4
000F 9E SUBB A,R6
0010 5007 JNC ?C0004
0012 0D INC R5
0013 BD0001 CJNE R5,#00H,?C0023
0016 0C INC R4
0017 ?C0023:
0017 80F2 SJMP ?C0001
; SOURCE LINE # 26
0019 ?C0004:
0019 22 RET
; FUNCTION _delay (END)
; FUNCTION lcd_bz (BEGIN)
; SOURCE LINE # 31
; SOURCE LINE # 32
; SOURCE LINE # 34
0000 C2B5 CLR rs
; SOURCE LINE # 35
0002 D2B6 SETB rw
; SOURCE LINE # 36
0004 D2B7 SETB ep
; SOURCE LINE # 37
0006 00 NOP
; SOURCE LINE # 38
0007 00 NOP
; SOURCE LINE # 39
0008 00 NOP
; SOURCE LINE # 40
0009 00 NOP
; SOURCE LINE # 41
000A A287 MOV C,P0_7
000C E4 CLR A
000D 33 RLC A
000E FF MOV R7,A
;---- Variable 'result' assigned to Register 'R7' ----
; SOURCE LINE # 42
000F C2B7 CLR ep
; SOURCE LINE # 43
; SOURCE LINE # 44
C51 COMPILER V7.06 LED 11/27/2007 10:08:50 PAGE 10
0011 ?C0005:
0011 22 RET
; FUNCTION lcd_bz (END)
; FUNCTION _lcd_wcmd (BEGIN)
; SOURCE LINE # 45
;---- Variable 'cmd' assigned to Register 'R6' ----
0000 AE07 MOV R6,AR7
; SOURCE LINE # 46
0002 ?C0006:
; SOURCE LINE # 47
0002 120000 R LCALL lcd_bz
0005 EF MOV A,R7
0006 70FA JNZ ?C0006
0008 ?C0007:
; SOURCE LINE # 48
0008 C2B5 CLR rs
; SOURCE LINE # 49
000A C2B6 CLR rw
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -