生成基于普中51-单核-A2制作一个简易计算器程序的C语言代码,并用中文解释
时间: 2024-02-15 22:03:45 浏览: 76
好的,以下是基于普中51-单核-A2制作一个简易计算器程序的C语言代码,附有中文解释:
```c
#include <reg51.h>
//定义变量
unsigned char num1, num2, op, result;
//中断服务程序
//这里使用外部中断0来读取按键输入
void int0_handler() interrupt 0 {
num1 = P1 & 0x0F; //读取P1口状态,屏蔽高4位
}
void main() {
//初始化串口
TMOD = 0x20; //设定为定时器1工作方式2
TH1 = 0xFD; //设定波特率为9600
SCON = 0x50; //启用串口
//等待用户输入第一个数值
num1 = '1'; //默认为1
num2 = '0';
op = '+';
//循环读取用户输入
while(1) {
//显示当前输入状态
SBUF = num1;
while(!TI);
TI = 0;
SBUF = ' ';
while(!TI);
TI = 0;
SBUF = op;
while(!TI);
TI = 0;
SBUF = ' ';
while(!TI);
TI = 0;
SBUF = num2;
while(!TI);
TI = 0;
SBUF = ' ';
while(!TI);
TI = 0;
//等待按键输入
EX0 = 1; //开启外部中断0
delay(); //等待一段时间,防止重复输入
EX0 = 0; //关闭外部中断0
//判断按键输入
if(num1 == '1') {
if(num2 != '0') {
if(op == '+') {
result = num1 + num2 - '0';
} else if(op == '-') {
result = num1 - num2 + '0';
} else if(op == '*') {
result = (unsigned char)((num1 - '0') * (num2 - '0'));
} else if(op == '/') {
if(num2 == '0') {
SBUF = 'E';
while(!TI);
TI = 0;
SBUF = 'r';
while(!TI);
TI = 0;
SBUF = 'r';
while(!TI);
TI = 0;
continue;
} else {
result = (unsigned char)((num1 - '0') / (num2 - '0'));
}
} else {
SBUF = 'E';
while(!TI);
TI = 0;
SBUF = 'r';
while(!TI);
TI = 0;
SBUF = 'r';
while(!TI);
TI = 0;
continue;
}
SBUF = result + '0';
while(!TI);
TI = 0;
SBUF = ' ';
while(!TI);
TI = 0;
} else {
num2 = num1;
}
} else {
if(op == 0) {
op = num1;
} else {
num2 = num1;
}
}
}
}
//延时函数
void delay() {
unsigned char i, j;
for(i = 0; i < 20; i++) {
for(j = 0; j < 255; j++);
}
}
```
这个代码实现了一个简单的计算器程序,可以通过按键输入数值和运算符,然后计算并显示结果。程序通过外部中断0来读取按键输入,然后根据输入的数值和运算符执行相应的运算,并将结果显示在串口上。
在主函数中,程序首先初始化串口,然后等待用户输入第一个数值。接着进入循环,循环读取用户输入,并在串口上显示当前输入状态。当用户按下按键后,程序会进入中断服务程序中,读取按键输入,并将输入的数值和运算符存储到相应的变量中。然后根据输入的数值和运算符执行相应的运算,并将结果显示在串口上。
这个计算器程序可以帮助用户进行简单的数学计算,方便实用。
阅读全文