📄 电压表.lst
字号:
C51 COMPILER V8.12 电压表 08/06/2008 15:58:12 PAGE 1
C51 COMPILER V8.12, COMPILATION OF MODULE 电压表
OBJECT MODULE PLACED IN 电压表.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 电压表.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 sbit rs=P0^0 ;
6 sbit rw= P0^1 ;
7 sbit e=P0^2 ;
8 sbit rd=P3^0;
9 sbit wr=P3^1;
10 uchar count;
11 uchar temp,temp0;
12 float temp1;
13 uchar volt_integer[2];
14 uchar volt_decimal[3];
15 void delay(uint ms)
16 {
17 1 uint i;
18 1 uchar j;
19 1 for(i=0;i<ms;i++)
20 1 for(j=0;j<150;j++)
21 1 {
22 2 _nop_();
23 2 _nop_();
24 2 _nop_();
25 2 _nop_();
26 2 }
27 1
28 1
29 1
30 1 }
31 void write_com(uchar com)
32 {
33 1 rs=0;
34 1 P2=com;
35 1 delay(1);
36 1 e=1;
37 1 delay(1);
38 1 e=0;
39 1
40 1 }
41
42 void write_data(uchar date)
43 {
44 1 rs=1;
45 1 P2=date;
46 1 delay(1);
47 1 e=1;
48 1 delay(1);
49 1 e=0;
50 1
51 1 }
52 void gotoxy(uchar x,uchar y) //光标指针移动到x行y列
53 {
54 1 if(x==0)
55 1 {
C51 COMPILER V8.12 电压表 08/06/2008 15:58:12 PAGE 2
56 2 write_com(0x80+y);
57 2 }
58 1 else
59 1 {
60 2 write_com(0x80+0x40+y);
61 2 }
62 1 }
63 /* ##########################################################################
64 初始化:设置显示模式 ---- 0x38 --设置16x2 显示,5x7点阵,8位数据接口
65 显示开/关及光标设置 -- 0x08 --关显示
66 -- 0x0b --开显示
67 0x0e --显示光标,不闪烁
68 0x0c --不显示光标,不闪烁
69 0x0d --光标闪烁,不显示
70 0x0f --光标显示+闪烁
71 ------ 0x06 --读或写一个字符后地址指针加一,且光标加一,整屏不移动
72 ------ 0x01 --显示清屏:数据指针清零,所有显示清零
73 0x02 --显示回车:数据指针清零
74 ######################################################################### */
75 void init()
76 {
77 1 rw=0; //写状态
78 1 write_com(0x01);
79 1 write_com(0x38);
80 1 write_com(0x0f);
81 1 write_com(0x06);
82 1 // write_com(0x01);
83 1 }
84 void display_string(uchar *str) //显示字符串
85 {
86 1 while(*str)
87 1 {
88 2 write_data(*str);
89 2 str++;
90 2 }
91 1 }
92 void display_number(uchar number)
93 {
94 1 write_data(0x30+number); //转化为ASCII码
95 1 }
96 void init_system()
97 {
98 1 TMOD=0x01;
99 1 TH0=(65536-50000)/256;
100 1 TL0=(65536-50000)%256;
101 1 ET0=1;
102 1 TR0=1;
103 1 IT0=1;
104 1 EX0=1;
105 1 EA=1;
106 1 }
107 void timer0() interrupt 1
108 {
109 1 TH0=(65536-50000)/256;
110 1 TL0=(65536-50000)%256;
111 1 count++;
112 1 }
113 /*void int0() interrupt 0
114 {
115 uchar volt;
116 // P1=0x00;
117 TR0=0;
C51 COMPILER V8.12 电压表 08/06/2008 15:58:12 PAGE 3
118 rd=0;
119 delay(1);
120 rd=1;
121 delay(1);
122 volt=P1;
123 // volt=volt<<1;
124 gotoxy(1,9);
125 display_number(volt);
126 gotoxy(1,9);
127 TR0=1;
128 } */
129 void main()
130 {
131 1 init();
132 1 gotoxy(0,5);
133 1 display_string("hello");
134 1 gotoxy(1,0);
135 1 display_string("volt:");
136 1 write_com(0x0c);
137 1
138 1 init_system();
139 1 while(1)
140 1 {
141 2 if(count==20)
142 2 {
143 3 count=0;
144 3 wr=1; //开始转换
145 3 wr=0;
146 3 wr=1;
147 3 rd=0;
148 3 temp=P1;
149 3 temp0=temp*5/255;
150 3 temp1=(float)(temp*5/255);
151 3 volt_integer[0]=temp0%10+'0';
152 3 volt_integer[1]='\0';
153 3
154 3 temp1=temp1-temp0;
155 3 volt_decimal[0]=temp1*10+'0';
156 3 volt_decimal[1]=temp1*100+'0';
157 3 volt_decimal[2]='\0';
158 3 gotoxy(1,6);
159 3 display_string(volt_integer);
160 3 write_data('.');
161 3 display_string(volt_decimal);
162 3 }
163 2
164 2 }
165 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 438 ----
CONSTANT SIZE = 12 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 3
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 + -