设计使用keil软件C语言使STC89C52单片机实现一个包含加、减、乘、除功能的简易计算器
时间: 2023-10-15 19:04:07 浏览: 49
可以按照以下步骤实现:
1. 首先需要定义各种功能所需要的变量,包括两个操作数和结果等。
```c
unsigned char op, a, b, result;
```
2. 在主函数中初始化串口通信模块,并且定义按键所对应的端口。
```c
void main() {
// 初始化串口通信模块
UART_Init();
// 定义按键所对应的端口
P0 = 0xff;
P1 = 0x00;
}
```
3. 然后需要定义一个函数用来从串口接收数据。该函数需要等待接收到数据才能返回。
```c
unsigned char UART_Receive() {
while (!RI);
RI = 0;
return SBUF;
}
```
4. 接下来需要编写一个函数用来向串口发送数据。
```c
void UART_Send(unsigned char dat) {
SBUF = dat;
while (!TI);
TI = 0;
}
```
5. 然后需要编写一个函数用来获取按键输入,并且根据不同的按键返回不同的操作符。
```c
unsigned char Get_Operator() {
unsigned char key;
do {
key = P0;
} while (key == 0xff);
switch (key) {
case 0xfe:
return '+';
case 0xfd:
return '-';
case 0xfb:
return '*';
case 0xf7:
return '/';
default:
return 0;
}
}
```
6. 接下来需要编写一个函数用来计算两个操作数的和、差、积、商,并且将结果返回。
```c
unsigned char Calculate(unsigned char a, unsigned char b, unsigned char op) {
switch (op) {
case '+':
return a + b;
case '-':
return a - b;
case '*':
return a * b;
case '/':
return a / b;
default:
return 0;
}
}
```
7. 最后在主函数中调用以上函数,实现计算器的基本功能。
```c
void main() {
unsigned char ch;
UART_Init();
P0 = 0xff;
P1 = 0x00;
while (1) {
op = Get_Operator();
UART_Send(op);
a = UART_Receive();
UART_Send(a);
b = UART_Receive();
UART_Send(b);
result = Calculate(a, b, op);
UART_Send(result);
}
}
```
以上就是一个简单的计算器的实现过程。需要注意的是,此实现只是为了提供一种思路,具体实现需要按照具体需求进行调整。