📄 calculator.lst
字号:
C51 COMPILER V8.02 CALCULATOR 11/18/2008 10:19:33 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE CALCULATOR
OBJECT MODULE PLACED IN calculator.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE calculator.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /***********计算器************/
2 #include<reg52.h>
3 #include<intrins.h>
4 #define uchar unsigned char
5 #define uint unsigned int
6
7
8 /*****???????*****/
9 uchar code wordcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
10 0x07,0x7f,0x6f,0x71};
11
12 uchar abs[3][6];
13 uchar art[6];
14 uchar brt[6];
15
16 uchar fullflag,afullflag,bfullflag; //存入数组数的个数
17 uchar abs; //当前操作数标志(0被加数1加数2和)
*** ERROR C231 IN LINE 17 OF CALCULATOR.C: 'abs': redefinition
18 uchar opreat; //加减标志 1加 2减
19 uchar key;
20 uchar point; //小数点的位置
21 uchar
22 float af,bf,cf; //单片机进行数组操作的浮点数
*** ERROR C141 IN LINE 22 OF CALCULATOR.C: syntax error near 'float'
23
24 /******延时函数传入参数要延时毫秒数******/
25 void delay(uchar xms)
26 {
27 1 uint i,j;
28 1 for(i=xms*10;i>0;i--)
29 1 for(j=20;j>0;j--);
30 1 }
31 /********键盘扫描返回键值(0-15)*******/
32 /********若没键按下返回-5通过判断返回****/
33 /********是否大于0判断是否有键按下*******/
34 char keyscan()
35 {
36 1 uchar line,row,P2temp;
37 1 P2=0xf0;
38 1 P2temp=P2;
39 1 if(P2temp!=0xf0)
40 1 {
41 2 delay(10);
42 2 if(P2temp!=0xf0)
43 2 {
44 3 switch(P2temp)
45 3 {
46 4 case 0x70:row=1;break;
47 4 case 0xb0:row=2;break;
48 4 case 0xd0:row=3;break;
49 4 case 0xe0:row=4;break;
50 4 }
51 3 }
52 2 P2=0x0f;
53 2 P2temp=P2;
C51 COMPILER V8.02 CALCULATOR 11/18/2008 10:19:33 PAGE 2
54 2 switch(P2temp)
55 2 {
56 3 case 0x07:line=1;break;
57 3 case 0x0b:line=2;break;
58 3 case 0x0d:line=3;break;
59 3 case 0x0e:line=4;break;
60 3 }
61 2 }
62 1 return((row-1)*4+line-1);
63 1 }
64 /***转换函数将输入的数字整合成一个浮点数用单片机运算****/ ÷
*** ERROR C100 IN LINE 64 OF CALCULATOR.C: unprintable character 0xA1 skipped
*** ERROR C100 IN LINE 64 OF CALCULATOR.C: unprintable character 0xC2 skipped
65 void conv()
66 {
67 1 uchar i;
68 1 for(i=0;i<6;i++)
69 1 {
70 2 art[i]=abs[6-i];
71 2 brt[i]=abs[6-i];
72 2 }
73 1 }
74
75 void opreat()
76 {
*** ERROR C231 IN LINE 76 OF CALCULATOR.C: 'opreat': redefinition
77 1 conv();
78 1
79 1 }
*** ERROR C231 IN LINE 79 OF CALCULATOR.C: 'opreat': redefinition
80
81 /**********显示函数************/
82 /*******传如要显示的数组*******/
83 void display(uchar *disarry,uchar disflag)
84 {
85 1 uchar i,disbit=0xfe; //段选
86 1 for(i=0;i<6;i++)
87 1 {
88 2 P1=(disbit<<1)+1;
89 2 P0=wordcode[*(disarry+6*disflag+i)];
90 2 delay(10);
91 2 }
92 1 }
93
94
95 void main()
96 {
97 1 char key,P2temp;
98 1 while(1)
99 1 {
100 2 key=keyscan();
101 2 do
102 2 {
103 3 P2=0xf0;
104 3 P2temp=P2;
105 3 }
106 2 while((P2temp&0xf0)!=0xf0);
107 2 P0=wordcode[key];
108 2
109 2 if(key<9&&depth<6)
*** ERROR C202 IN LINE 109 OF CALCULATOR.C: 'depth': undefined identifier
110 2 {
C51 COMPILER V8.02 CALCULATOR 11/18/2008 10:19:33 PAGE 3
111 3 abs[abs][depth]=key;
*** ERROR C202 IN LINE 111 OF CALCULATOR.C: 'depth': undefined identifier
112 3 depth++;
*** ERROR C202 IN LINE 112 OF CALCULATOR.C: 'depth': undefined identifier
113 3 }
114 2 else if(key==10) //小数点
115 2 {
116 3 apoint=depth; //记录小数点的位置
*** ERROR C202 IN LINE 116 OF CALCULATOR.C: 'apoint': undefined identifier
117 3 }
118 2 else if(key==11&&abs<2) //加号
119 2 {
120 3 abs++;
*** ERROR C187 IN LINE 120 OF CALCULATOR.C: not an lvalue
121 3 adepth=depth;
*** ERROR C202 IN LINE 121 OF CALCULATOR.C: 'adepth': undefined identifier
122 3 operat=1;
*** ERROR C202 IN LINE 122 OF CALCULATOR.C: 'operat': undefined identifier
123 3 }
124 2 else if(key==15)
125 2 {
126 3 operat();
127 3 }
128 2
129 2 }
130 1 }
131
132
133
C51 COMPILATION COMPLETE. 0 WARNING(S), 13 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -