📄 addsub.lst
字号:
C51 COMPILER V8.06 ADDSUB 04/10/2008 09:39:19 PAGE 1
C51 COMPILER V8.06, COMPILATION OF MODULE ADDSUB
OBJECT MODULE PLACED IN ADDSUB.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ADDSUB.C BROWSE DEBUG OBJECTEXTEND
line 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
12 unsigned char dpbl,ledbai,ledshi,ledge,keytime;
13 unsigned char bdata myflag;
14 sbit keybit = myflag^0;
15
16 void time0(void);
17 void keyscan(void);
18 void Delay(unsigned int t);
19 void SendCommandByte(unsigned char ch);
20 void SendDataByte(unsigned char ch);
21 void InitLcd(void);
22 void dispdpbl(void);
23
24 void main(void)
25 {
26 1 InitLcd();
27 1 myflag=0x00;
28 1 dpbl=0;
29 1 keytime=4; //20MS扫一次按键
30 1 SendCommandByte(0x80);
31 1 Delay(2);
32 1 SendDataByte('S');
33 1 SendDataByte('U');
34 1 SendDataByte('M');
35 1 SendDataByte(':');
36 1 TH0=0xee; //定时5MS
37 1 TL0=0x00;
38 1 TMOD=0x01;
39 1 TR0=1;
40 1 IT0=1;
41 1 IE=0x83;
42 1 while(1)
43 1 {}
44 1 }
45
46 void int0_1(void) interrupt 0
47 {
48 1 dpbl++; //每进一次下降沿中断,变量计数加1
49 1 }
50 void time0(void) interrupt 1
51 {
52 1 TH0=0xee;
53 1 TL0=0x00;
54 1 if(keytime--==0)
55 1 {keytime=0x04;P1=0xff;keyscan();
C51 COMPILER V8.06 ADDSUB 04/10/2008 09:39:19 PAGE 2
56 2 ledbai=(dpbl/100)|0x30;
57 2 ledshi=((dpbl%100)/10)|0x30;
58 2 ledge=(dpbl%10)|0x30;
59 2 dispdpbl();
60 2 }
61 1 }
62
63 void keyscan(void)
64 {
65 1 if(P1==0xfe)
66 1 {
67 2 if(keybit==0)
68 2 {keybit=1;dpbl=0;}
69 2 }
70 1 else
71 1 {
72 2 keybit=0;
73 2 }
74 1 P1=0xff;
75 1 }
76
77 void Delay(unsigned int t) // delay 40us
78 {
79 1 for(;t!=0;t--) ;
80 1 }
81 //=============================================
82 void SendCommandByte(unsigned char ch)
83 {
84 1 RS=0;
85 1 RW=0;
86 1 P0=ch;
87 1 E=1;
88 1 Delay(1);
89 1 E=0;
90 1 Delay(100); //delay 40us
91 1 }
92 //-------------------------------------------------------
93 void SendDataByte(unsigned char ch)
94 { RS=1;
95 1 RW=0;
96 1 P0=ch;
97 1 E=1;
98 1 Delay(1);
99 1 E=0;
100 1 Delay(100); //delay 40us
101 1 }
102 //-------------------------------------------------
103 void InitLcd(void)
104 {SendCommandByte(0x30);
105 1 SendCommandByte(0x30);
106 1 SendCommandByte(0x30);
107 1 SendCommandByte(0x38); //设置工作方式
108 1 SendCommandByte(0x0c); //显示状态设置
109 1 SendCommandByte(0x01); //清屏
110 1 SendCommandByte(0x06); //输入方式设置
111 1 }
112
113 void dispdpbl(void)
114 {
115 1 SendCommandByte(0x85);
116 1 SendDataByte(ledbai);
117 1 SendDataByte(ledshi);
C51 COMPILER V8.06 ADDSUB 04/10/2008 09:39:19 PAGE 3
118 1 SendDataByte(ledge);
119 1
120 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 309 ----
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -