bloodthrons 2022-08-22 23:59 采纳率: 100%
浏览 234
已结题

error C141: syntax error near 'void', expected '__asm'

img

#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();
    }
}

img

  • 写回答

2条回答 默认 最新

  • qllaoda 2022-08-23 00:32
    关注

    void smgdisplay()这个函数的前面那个函数,少了一个后花括号
    if(GPIO_key!=0xF0)这句话对应的后花括号漏掉了。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月31日
  • 已采纳回答 8月23日
  • 创建了问题 8月22日

悬赏问题

  • ¥15 怎么实现输入一个要删除的数后删除后显示剩余数再输入再删除显示剩余数(语言-c语言)
  • ¥35 引用csv数据文件(4列1800行),通过高斯-赛德尔法拟合曲线,在选取(每五十点取1点)数据,求该数据点的曲率中心。
  • ¥20 程序只发送0X01,串口助手显示不正确,配置看了没有问题115200-8-1-no,如何解决?
  • ¥15 Google speech command 数据集获取
  • ¥15 vue3+element-plus页面崩溃
  • ¥15 像这种代码要怎么跑起来?
  • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误