生成c51语言代码:通过P1口接键盘选择曲目、切换曲目。
时间: 2023-08-06 10:03:54 浏览: 58
下面是基于 C51 语言的实现代码:
```c
#include <reg52.h> // 引入 8051 单片机头文件
// 音乐曲目的频率,可以根据需要自行更改
unsigned int freqs[] = {440, 494, 523, 587, 659, 698, 784, 880};
void main() {
unsigned char cur = 0; // 当前曲目编号
unsigned char key; // 键盘输入值
unsigned char i; // 循环计数器
while(1) {
key = P1 & 0x0F; // 读取 P1 端口低 4 位,获取键盘输入值
if (key != 0) { // 如果有键盘输入
if (key == 0x0F) { // 如果输入为 0x0F,表示切换曲目
cur = (cur + 1) % 8; // 曲目编号循环加 1
} else if (key <= 8) { // 如果输入为 1~8,表示选中曲目
cur = key - 1; // 获取曲目编号
}
}
// 产生当前曲目的频率方波
for (i = 0; i < 200; i++) {
P1 = 0x10; // P1.4 置 1
TH0 = TL0 = 256 - freqs[cur]; // 设置定时器初值,产生方波
TR0 = 1; // 启动定时器 0
while (!TF0); // 等待定时器 0 溢出
TF0 = 0; // 清除定时器 0 溢出标志
P1 = 0x00; // P1.4 置 0
TH0 = TL0 = 256 - freqs[cur]; // 设置定时器初值,产生方波
TR0 = 1; // 启动定时器 0
while (!TF0); // 等待定时器 0 溢出
TF0 = 0; // 清除定时器 0 溢出标志
}
}
}
```
执行该程序后,通过 P1 端口接键盘进行曲目选择。按下 1~8 中任意一个数字键,将会选中对应编号的曲目;按下 0x0F 键,将切换到下一个曲目。同时,程序会在 P1.4 引脚上产生当前曲目的频率方波。
相关推荐
![text/x-c](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)