addsub.lst
来自「单片机开发板源码 适合初学者 第四部分 字符型LCD显示1-2」· LST 代码 · 共 151 行
LST
151 行
C51 COMPILER V7.06 ADDSUB 09/13/2007 02:07:09 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE ADDSUB
OBJECT MODULE PLACED IN ADDSUB.OBJ
COMPILER INVOKED BY: C:\tools\Keil\C51\BIN\C51.EXE ADDSUB.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*实验名称:按加减键实现内部加减 0.01
2 功能:数码显示0.20---2.00
3 作者:http://www.mcuprog.com
4 05-02-01
5 */
6 #include <reg51.h>
7 //LCD的口线
8 sbit E=P2^2;
9 sbit RW=P2^1;
10 sbit RS=P2^0;
11 unsigned char dpbl,ledbai,ledshi,ledge,keytime;
12 unsigned char bdata myflag;
13 sbit keybit = myflag^0;
14
15 void time0(void);
16 void keyscan(void);
17 void Delay(unsigned int t);
18 void SendCommandByte(unsigned char ch);
19 void SendDataByte(unsigned char ch);
20 void InitLcd(void);
21 void dispdpbl(void);
22
23 void main(void)
24 {
25 1 InitLcd();
26 1 myflag=0x00;
27 1 dpbl=20;
28 1 keytime=4; //20MS扫一次按键
29 1 SendCommandByte(0x80);
30 1 Delay(2);
31 1 SendDataByte('S');
32 1 SendDataByte('U');
33 1 SendDataByte('M');
34 1 SendDataByte(':');
35 1 TH0=0xee; //定时5MS
36 1 TL0=0x00;
37 1 TMOD=0x01;
38 1 TR0=1;
39 1 IE=0x82;
40 1 while(1)
41 1 {}
42 1 }
43
44 void time0(void) interrupt 1
45 {
46 1 TH0=0xee;
47 1 TL0=0x00;
48 1 if(keytime--==0)
49 1 {keytime=0x04;P1=0xff;keyscan();
50 2 ledbai=(dpbl/100)|0x30;
51 2 ledshi=((dpbl%100)/10)|0x30;
52 2 ledge=(dpbl%10)|0x30;
53 2 dispdpbl();
54 2 }
55 1 }
C51 COMPILER V7.06 ADDSUB 09/13/2007 02:07:09 PAGE 2
56
57 void keyscan(void)
58 {
59 1 if(P1==0xfe)
60 1 {
61 2 if(keybit==0)
62 2 {keybit=1;dpbl++;if(dpbl>200){dpbl=20;}}
63 2 }
64 1 else
65 1 {
66 2 if(P1==0xfd)
67 2 {
68 3 if(keybit==0)
69 3 {keybit=1;dpbl--;if(dpbl<20){dpbl=200;}}
70 3 }
71 2 else
72 2 {
73 3 if(P1==0xff){keybit=0;}
74 3 }
75 2 }
76 1 P1=0xff;
77 1 }
78
79 void Delay(unsigned int t) // delay 40us
80 {
81 1 for(;t!=0;t--) ;
82 1 }
83 //=============================================
84 void SendCommandByte(unsigned char ch)
85 {
86 1 RS=0;
87 1 RW=0;
88 1 P0=ch;
89 1 E=1;
90 1 Delay(1);
91 1 E=0;
92 1 Delay(100); //delay 40us
93 1 }
94 //-------------------------------------------------------
95 void SendDataByte(unsigned char ch)
96 { RS=1;
97 1 RW=0;
98 1 P0=ch;
99 1 E=1;
100 1 Delay(1);
101 1 E=0;
102 1 Delay(100); //delay 40us
103 1 }
104 //-------------------------------------------------
105 void InitLcd(void)
106 {SendCommandByte(0x30);
107 1 SendCommandByte(0x30);
108 1 SendCommandByte(0x30);
109 1 SendCommandByte(0x38); //设置工作方式
110 1 SendCommandByte(0x0c); //显示状态设置
111 1 SendCommandByte(0x01); //清屏
112 1 SendCommandByte(0x06); //输入方式设置
113 1 }
114
115 void dispdpbl(void)
116 {
117 1 SendCommandByte(0x85);
C51 COMPILER V7.06 ADDSUB 09/13/2007 02:07:09 PAGE 3
118 1 SendDataByte(ledbai);
119 1 SendDataByte('.');
120 1 SendDataByte(ledshi);
121 1 SendDataByte(ledge);
122 1
123 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 348 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?