📄 1602.lst
字号:
C51 COMPILER V8.02 1602 12/24/2008 13:31:28 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN 1602.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1602.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h>
2 #include "1602.h"
3 #define DataPort P2
4
5 sbit RS=P1^3;
6 sbit RW=P1^4;
7 sbit EN=P1^5;
8 uchar i=0;
9 uchar code meun[2][16]={"Frequency is: ","00000000 Hz "};
10 uchar code m[10]="0123456789";
11 unsigned char T0count;
12 unsigned char timecount;
13 bit flag;
14 unsigned int x;
15
16 void delay_ms(uchar t)
17 {
18 1 unsigned char i=0;
19 1 while(t--)for(i=0;i<120;i++);
20 1 }
21
22 void WriteData(uchar dat)
23 {
24 1 EN=0;
25 1 RS=0; //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
26 1 RW=0; //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
27 1 RS=1;
28 1 RW=0;
29 1 EN=1;
30 1 DataPort=dat;
31 1 EN=0;
32 1 RS=0;
33 1 RW=0;
34 1 for (i=0;i<20;i++);
35 1 }
36
37 void WriteCmd(uchar cmd)
38 {
39 1 EN=0;
40 1 RS=0; //********RS寄存器选择输入端,当RS=0;当进行写模块操作,指向指令寄存器。
41 1 RW=0; //********当RS=1,无论是读操作还是写操作,都是指向数据寄存器。
42 1 EN=1;
43 1 DataPort=cmd;
44 1 RS=0;
45 1 RW=0;
46 1 EN=0;
47 1 for (i=0;i<20;i++);
48 1 }
49
50 void DisChar(uchar ps,uchar dat)
51 {
52 1 WriteCmd((0x80+ps));
53 1 WriteData(dat);
54 1 }
55
C51 COMPILER V8.02 1602 12/24/2008 13:31:28 PAGE 2
56 void LcdInit(void)
57 {
58 1 char pp=0;
59 1
60 1 WriteCmd(0x38);
61 1 delay_ms(5);
62 1 WriteCmd(0x38);
63 1 delay_ms(5);
64 1 WriteCmd(0x38);
65 1 delay_ms(5);
66 1
67 1 WriteCmd(0x01);delay_ms(5);
68 1 WriteCmd(0x06);delay_ms(5);
69 1 WriteCmd(0x38);
70 1 WriteCmd(0x0c);
71 1 WriteCmd(0x40);
72 1
73 1 for(pp=0;pp<16;pp++)DisChar(pp,*(meun[0]+pp));
74 1 for(pp=0;pp<16;pp++)DisChar(pp+0x40,*(meun[1]+pp));
75 1 }
76
77 void Display(unsigned int x)
78 {
79 1 DisChar(7+0x40,m[x%10]);x /= 10;
80 1 DisChar(6+0x40,m[x%10]);x /= 10;
81 1 DisChar(5+0x40,m[x%10]);x /= 10;
82 1 DisChar(4+0x40,m[x%10]);x /= 10;
83 1 DisChar(3+0x40,m[x%10]);x /= 10;
84 1 DisChar(2+0x40,m[x%10]);x /= 10;
85 1 DisChar(1+0x40,m[x%10]);x /= 10;
86 1 DisChar(0+0x40,m[x%10]);x /= 10;
87 1 delay_ms(200);
88 1 }
89
90 void main(void)
91 {
92 1 TMOD=0x15;
93 1 TH0=0;
94 1 TL0=0;
95 1 TH1=(65536-49989)/256;
96 1 TL1=(65536-49989)%256;
97 1 TR1=1;
98 1 ET0=1;
99 1 ET1=1;
100 1 EA=1;
101 1 TR0=1;
102 1 LcdInit();
103 1
104 1 while(1)
105 1 {
106 2 if(flag==1)
107 2 {
108 3 flag=0;
109 3 x=(T0count*65536+TH0*256+TL0);
110 3 timecount=0;
111 3 T0count=0;
112 3 TH0=0;
113 3 TL0=0;
114 3 TR0=1;
115 3 Display(x);
116 3 }
117 2 }
C51 COMPILER V8.02 1602 12/24/2008 13:31:28 PAGE 3
118 1 }
119
120 void t0(void) interrupt 1 using 0 //计脉冲个数
121 {
122 1 T0count++;
123 1 }
124
125 void t1(void) interrupt 3 using 0 //定时1s
126 {
127 1 TH1=(65536-50045)/256;
128 1 TL1=(65536-50045)%256;
129 1 timecount++;
130 1 if(timecount==20)
131 1 {
132 2 TR0=0;
133 2 timecount=0;
134 2 flag=1;
135 2 }
136 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 648 ----
CONSTANT SIZE = 42 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -