#include <STC89C5xRC.H>//使用线反转扫描法 检测按键按下 按下后在数码管上显示音调 并调动蜂鸣器发声
typedef unsigned char u8;
typedef unsigned int u16;
#define GPIO_key P1
#define GPIO_smg P0
sbit buzzer = P2^0;//蜂鸣器
u8 keyvalue;//存键值
u8 code smgduan[16]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};//显示0-9、A-F。
u16 code buzzerbeep[16]={100,200,300,400,500,600,700,800,900,1000,1100,1200,1300,1400,1500,1600};
//用来产生各频率延时信号
void delay(u16 i) //约10us
{
while(i--);
}
void keypros()//检测是否有按键按下并输出键值
{
u8 i;
GPIO_key=0xF0; //检测行
if(GPIO_key!=0xF0)
{
delay(1000);
if(GPIO_key!=0xF0)
{
switch(GPIO_key)
{
case(0x70):keyvalue=0;break;
case(0xB0):keyvalue=4;break;
case(0xD0):keyvalue=8;break;
case(0xE0):keyvalue=12;break;
default:break;
}
GPIO_key=0x0F; //检测列
switch(GPIO_key)
{
case(0x07):keyvalue=keyvalue;break;
case(0x0B):keyvalue=keyvalue+1;break;
case(0x0D):keyvalue=keyvalue+2;break;
case(0x0E):keyvalue=keyvalue+3;break;
default:break;
}
while((i<50)&&(GPIO_key!=0x0F))
{
i++;
delay(1000);
}
}
}
void smgdisplay()//静态数码管显示0~F表示音调高低
{
GPIO_smg=smgduan[keyvalue];
}
void BEEP()//蜂鸣器发声
{
u8 i=50;
buzzer=1;
while(i--)
{
delay(buzzerbeep[keyvalue]);
buzzer=~buzzer;
}
}
void main()
{
while(1)
{
keypros();
smgdisplay();
BEEP();
}
}
error C141: syntax error near 'void', expected '__asm'
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- qllaoda 2022-08-23 00:32关注
void smgdisplay()这个函数的前面那个函数,少了一个后花括号
if(GPIO_key!=0xF0)这句话对应的后花括号漏掉了。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 4无用
悬赏问题
- ¥15 代写uni代码,app唤醒
- ¥15 全志t113i启动qt应用程序提示internal error
- ¥15 ensp可以看看嘛.
- ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
- ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
- ¥15 minist数字识别
- ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
- ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
- ¥15 网上下载的3DMAX模型,不显示贴图怎么办
- ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下: