找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2158|回复: 9
打印 上一主题 下一主题
收起左侧

各位大佬能不能指点一下……这个ad程序错在哪了……萌新上路啥也不会QAQxpt2046

[复制链接]
跳转到指定楼层
楼主
ID:260413 发表于 2017-12-13 00:09 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>#include<intrins.h>                        #define   uint unsigned int;          
#define  uchar unsigned char;
sbit A=P2^2;
sbit B1=P2^3;
sbit C=P2^4;
sbit DIN=P3^4;
sbit DCLK=P3^6;
sbit CS=P3^5;
sbit DOUT=P3^7;
uchar shownum,temp,i,j,bb,dat,aa;
uchar disp[4];uchar code num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void temperture_write(uchar dat){      
uchar i;  
DCLK=0;  
for(i=0;i<8;i++)   
  {            DIN=dat >> 7;               
dat  <<=1;               
DCLK=0;       
        DCLK=1;         }  }   
uint temperture_read(void)
{   
uint j,dat=0;  
DCLK=0;
  for(j=0;j<12;j++)
  {      dat<<=1;
  DCLK=1;       
  DCLK=0;          
dat|=DOUT;   }  
return dat;
}
uint C51_read(uchar cmd)
{   uchar aa;   uint AD_value;
   DCLK=0;  
CS=0;  
temperture_write(cmd);   
for(aa=6;aa>0;aa--);   
DCLK=1;   
_nop_();
  _nop_();   
DCLK=0;  
_nop_();  
_nop_();  
AD_value=temperture_read();
  CS=1;   
return AD_value;}
是不是有什么口没开?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2017-12-13 15:30 | 只看该作者
你在哪里抄的程序片段?主程序main()都没有,怎么运行?
回复

使用道具 举报

板凳
ID:260413 发表于 2017-12-19 20:20 | 只看该作者
wulin 发表于 2017-12-13 15:30
你在哪里抄的程序片段?主程序main()都没有,怎么运行?

我我我是抄的....但是不写main函数这个东西啊好像也不能运行.....然后我试图加了main函数,就是一个显示....您能看看吗QAQ耽误大佬时间了

#include<reg52.h>
#include<intrins.h>                       
#define  uint unsigned int;          
#define  uchar unsigned char;
uchar dat,i,cmd,temp,num;
uint AD_Value;
uint x,y,z;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
sbit wela=P2^6;
sbit dula=P2^7;
sbit DOUT = P3 ^ 7;  
sbit CLK  = P3 ^ 6;  
sbit DIN  = P3 ^ 4;   
sbit CS   = P3 ^ 5;   
void delay(uint);
void SPI_Write();
uint SP_Read()         ;
uint Read_AD_Data();
void main()
{        while(1)
    {
        SP_Read();
        SPI_Write(dat);
        Read_AD_Data(cmd);
    temp=0xfe;
    P1=temp;
    dula=1;
        P0=table[AD_Value];
        dula=0;
        wela=1;
        P0=0xc0;
        wela=0;
        num=1;
        delay(10);
        temp=_crol_(temp,1);
        P1=temp;
        delay(100);       
          
        }
}


void delay(uint z)
{  uint x,y;
   for(x=z;x>0;x--){
   for(y=110;y>0;y--){};
   };
}         
void SPI_Write(uchar dat)
{
    uchar i;
    CLK = 0;
    for(i=0; i<8; i++)
    {
        DIN = dat >> 7;     
        dat <<= 1;
        CLK = 0;            

        CLK = 1;
    }
}

uint SP_Read(void)
{
    uint i, dat = 0;
    CLK = 0;
    for(i = 0; i < 12; i++)     
    {
        dat <<= 1;

        CLK = 1;
        CLK = 0;

        dat |= DOUT;
    }
    return dat;
}

uint Read_AD_Data(uchar cmd)
{
    CLK = 0;
    CS  = 0;
    SPI_Write(cmd);
    for(i = 6; i > 0; i--);   
    CLK = 1;      
    _nop_();
    _nop_();
    CLK = 0;
    _nop_();
    _nop_();
    AD_Value = SPI_Read();
    CS = 1;
    return AD_Value;   
}
回复

使用道具 举报

地板
ID:260413 发表于 2017-12-19 20:24 | 只看该作者
wulin 发表于 2017-12-13 15:30
你在哪里抄的程序片段?主程序main()都没有,怎么运行?

他说我
Build target 'Target 1'
compiling 温控2.0.c...
温控2.0.C(19): error C141: syntax error near ';'
温控2.0.C(47): error C141: syntax error near ';'
温控2.0.C(53): error C141: syntax error near ';'
温控2.0.C(83): error C141: syntax error near ';'
Target not created
为什么呢?
回复

使用道具 举报

5#
ID:263980 发表于 2017-12-19 22:07 | 只看该作者
第一个说错误在19行,我看到你的19行是void delay(uint);你试着把里面的uint删掉可那看,下面还有uint SP_Read()        ; 把空格删掉,然后47,53,83这几行,都是直接定义函数的就错了,应该是上面的空格引起的,如果不是,就把下面的子函数全部复制到主函数之前,基本的原因应该就是函数声明的问题了
回复

使用道具 举报

6#
ID:259274 发表于 2017-12-19 22:48 | 只看该作者
函数要先定义,在主函数中一定要申明。  还要注意函数的返回值和变量
回复

使用道具 举报

7#
ID:260413 发表于 2017-12-19 23:10 | 只看该作者
奋斗de小青年 发表于 2017-12-19 22:07
第一个说错误在19行,我看到你的19行是void delay(uint);你试着把里面的uint删掉可那看,下面还有uint SP_R ...

那个....谢谢大佬,但是现在我移了
#include<reg52.h>
#include<intrins.h>                       
#define  uint unsigned int;          
#define  uchar unsigned char;
uchar dat,i,cmd,temp,num;
uint AD_Value;
uint x,y,z;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
sbit wela=P2^6;
sbit dula=P2^7;
sbit DOUT = P3 ^ 7;  
sbit CLK  = P3 ^ 6;  
sbit DIN  = P3 ^ 4;   
sbit CS   = P3 ^ 5;   
void delay(uint z)
{  uint x,y;
   for(x=z;x>0;x--){
   for(y=110;y>0;y--){};
   };
}         
void SPI_Write(uchar dat)
{
    uchar i;
    CLK = 0;
    for(i=0; i<8; i++)
    {
        DIN = dat >> 7;     
        dat <<= 1;
        CLK = 0;            

        CLK = 1;
    }
}

uint SP_Read(void)
{
    uint i, dat = 0;
    CLK = 0;
    for(i = 0; i < 12; i++)     
    {       
        dat <<= 1;

        CLK = 1;
        CLK = 0;

        dat |= DOUT;
    }
    return dat;
}

uint Read_AD_Data(uchar cmd)
{
    CLK = 0;
    CS  = 0;
    SPI_Write(cmd);
    for(i = 6; i > 0; i--);   
    CLK = 1;      
    _nop_();
    _nop_();
    CLK = 0;
    _nop_();
    _nop_();
    AD_Value = SPI_Read();
    CS = 1;
    return AD_Value;   
}
void main()
{        while(1)
    {
        SP_Read();
        Read_AD_Data(0xD4);
    temp=0xfe;
    P1=temp;
    dula=1;
        P0=table[AD_Value];
        dula=0;
        wela=1;
        P0=0xc0;
        wela=0;
        num=1;
        delay(10);
        temp=_crol_(temp,1);
        P1=temp;
        delay(100);       
          
        }
}


然后....Build target 'Target 1'
assembling STARTUP.A51...
compiling 温控2.0.c...
温控2.0.C(19): error C141: syntax error near ';'
温控2.0.C(25): error C141: syntax error near ';'
温控2.0.C(55): error C141: syntax error near ';'
Target not created
回复

使用道具 举报

8#
ID:263980 发表于 2017-12-20 09:19 | 只看该作者
jarryzikaros 发表于 2017-12-19 23:10
那个....谢谢大佬,但是现在我移了
#include
#include                       

你上面的定义里有空格,都删掉先
sbit DOUT = P3^7;  
sbit CLK  = P3^6;  
sbit DIN  = P3^4;   
sbit CS   = P3^5;   
你的延时函数改成这样
void delay(uint z)
{  uint x,y;
   for(x=z;x>0;x--)
   for(y=110;y>0;y--);
}
55行没看出什么问题。你这些问题都是非常基础的C语言编写习惯的问题,没有什么逻辑上的错误,就是复制粘贴的时候一个空格一个分号什么的错误,仔细一点查查基本没有什么大问题
回复

使用道具 举报

9#
ID:155507 发表于 2017-12-20 10:27 | 只看该作者
你的定义改成这样
#define  uint unsigned int         
#define  uchar unsigned char

回复

使用道具 举报

10#
ID:155507 发表于 2017-12-20 10:32 | 只看该作者
你的延时函数改成这样
uint SPI_Read(void)
{
        uint i, dat = 0;
        CLK = 0;
        for(i = 0; i < 12; i++)     
        {        
                dat <<= 1;

                CLK = 1;
                CLK = 0;

                dat |= DOUT;
        }
        return dat;
}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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