找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2656|回复: 1
收起左侧

error C141: syntax error near '}' keil4报错 简易超市收银机 单片机程序

[复制链接]
ID:204561 发表于 2017-5-25 01:01 | 显示全部楼层 |阅读模式
LEIL4报错:IIC.H(107): error C141: syntax error near '}' (说的是这个         bitcounter--})
请问为什么?

  1. #include<intrins.h>
  2. #define uchar unsigned char
  3. #define sda  P3_6                             //定义SDA口
  4. #define scl  P3_7                                //定义SCL口
  5. //-----------------------------------------------------
  6. void delay(uchar a)                                //24C64和其他一些地方需要的延时函
  7. {
  8.           uchar b,c;
  9.           for(b=0;b<a;b++)
  10.     for(c=0;c<225;c++);
  11. }
  12. //-----------------------------------------------------
  13. void start(void)                                 //开始总线的活动
  14. {
  15.          sda=1;
  16.          scl=1;
  17.         _nop_();_nop_(); _nop_(); _nop_();
  18.          sda=0;
  19.          _nop_();_nop_();_nop_(); _nop_();
  20.          }
  21. //-----------------------------------------------------
  22.          void stop(void)                            //停止总线活动,器件进入低功耗状态
  23. {
  24.          sda=0;
  25.          _nop_();_nop_();_nop_();_nop_();
  26.          scl=1;
  27.          _nop_();_nop_();_nop_();_nop_();
  28.          sda=1;
  29.          _nop_();_nop_();_nop_();_nop_();
  30.    }
  31. //-----------------------------------------------------
  32.   void ack(void)                            //应答信号
  33. {
  34.          sda=0;
  35.          _nop_();_nop_();_nop_();_nop_();
  36.          scl=1;
  37.         _nop_();_nop_();_nop_();_nop_();
  38.          scl=0;                          
  39. //允许从器件改变当前SDA的状态,以便于下一次的读入
  40.   }
  41. //-----------------------------------------------------
  42.   void noack(void)                                //无应答信号
  43. {
  44.          sda=1;
  45.          _nop_();_nop_();_nop_();_nop_();
  46.          scl=1;
  47.          _nop_();_nop_();_nop_();_nop_();
  48.          scl=0;
  49. }
  50. //-----------------------------------------------------
  51. void checkack(void)
  52.   {         
  53.       _nop_();_nop_();_nop_();_nop_();
  54.            scl=1;
  55.           if(sda)
  56.            {
  57.             scl=0;
  58.            }
  59.           else
  60.            {
  61.                    _nop_();_nop_();_nop_();_nop_();
  62.             scl=0;
  63.            }
  64. }
  65. //-----------------------------------------------------
  66. void send(uchar kk)                                                  //写入一个字节
  67.   {
  68.    uchar bitcounter=8;
  69.    uchar temp;
  70.    do
  71.    {
  72.              temp=kk;
  73.                  scl=0;
  74.                  _nop_();_nop_();_nop_();_nop_();
  75.                  if((temp&0x80)==0x80)                 //数据的发送为高位在前,低位在后
  76.                  sda=1;
  77.                  else
  78.                 sda=0;
  79.                  scl=1;
  80.                  temp=kk<<1;
  81.                  kk=temp;
  82.                  bitcounter--;
  83.     }
  84.          while(bitcounter);
  85.          scl=0;
  86. }
  87. uchar read(void)                                                  //读出一个字节
  88. {
  89.                   uchar temp=0;
  90.                   uchar temp1=0;
  91.                   uchar bitcounter=8;
  92.                   sda=1;
  93.                   do
  94. {
  95.              scl=0;
  96.               _nop_();_nop_();_nop_();_nop_();
  97.              scl=1;
  98.               _nop_();_nop_();_nop_();_nop_();
  99.              if(sda)
  100.               temp=temp|0x01;                         //数据的读入为高位在前,低位在后
  101.              else
  102.               temp=temp&0xfe;
  103.              if(bitcounter-1)
  104.               {    temp1=temp<<1;
  105.                            temp=temp1;
  106.                   }
  107.          bitcounter--}
  108.          while(bitcounter);                                         //读入8位
  109.          return temp;
  110. }
  111. //发送命令和操作对象给24c64
  112. void writenbyte(uchar *adata,uchar address)
  113. {
  114.            uchar bb;                                                       //定义'写字节数'变量bb
  115.          for(bb=0;bb<16;bb++)                                  //写入16个字节
  116.          {   start();                                                          //器件地址
  117.                    send(0xa0);
  118.                 checkack();
  119.                    send(0x00);                                          //从器件内部高地址
  120.                   checkack();                                                                                       
  121.                    send(address+bb);                                 //从器件内部地址低位
  122.                    checkack();         
  123.                    send(adata[bb]);
  124.                    checkack();                                                
  125.                    stop();                                                   
  126.                    delay(40);            
  127.           }
  128.   }                                                         
  129. void readnbyte(uchar *adata,uchar address)
  130.   {
  131.           uchar  i;                                           //定义'读字节数'变量i
  132.            for(i=0;i<16;i++)
  133.            {
  134.             start();
  135.                 send(0xa0);
  136.                 ack();
  137.                 send(0x00);                                         //从器件内部高地址
  138.                 ack();
  139.                 send(address+i);                                 //从器件内部地址低位
  140.                 ack();
  141.                 start();
  142.                 send(0xa1);
  143.                 ack();
  144.             adata[i]=read();                                         //读取操作数
  145.                 scl=0;
  146.                 noack();
  147.                 stop();
  148.         }
  149. }
  150. /********************************结束************************************/
复制代码




回复

使用道具 举报

ID:149988 发表于 2017-5-26 17:20 | 显示全部楼层

RE: error C141: syntax error near '}' keil4报错 简易超市收银机 单片机程序

意思是,第110行“}”号附近有错误,具体是语句bitcounter--缺少“;”号。加上‘:’号,该错误即消除。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表