找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机程序编译错误求大神帮助!新手上路!

[复制链接]
跳转到指定楼层
楼主
ID:423279 发表于 2018-11-8 21:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神帮助!新手上路!
#include <reg52.h>   
#define uchar unsigned char  
#define uint  unsigned int  
#include <intrins.h>
sbit CS=P1^4;  
sbit SCL=P1^5;
sbit DO=P1^6;  
sbit beep = P1^3;  
sbit rs=P1^0;  
sbit rw=P1^1;
sbit e =P1^2;  
sbit c_send   = P3^2;  
sbit c_recive = P3^3;  
uchar flag_hc_value;      
long distance;            
uint set_d;               
bit flag_csb_juli;         
uint  flag_time0;         
bit flag_200ms = 1 ;
uchar guangxian;           
uchar qiang_gx;      
uchar ruo_gx;      
uchar value;
uchar flag_alarm;      
uchar miao = 0,fen = 0,shi;
uchar s_miao = 55,s_fen = 44,s_shi=0;
bit xuexi_start;  
uchar menu_1;   
uchar i;
uchar flag_gx  ;   
uchar flag_juli ;  
uchar flag_time = 0;
void delay_1ms(uint q)
{
uint i,j;
for(i=0;i<q;i++)
  for(j=0;j<120;j++);
}
void write_eeprom()
{
SectorErase(0x2000);
byte_write(0x2000, set_d % 256);
byte_write(0x2001, set_d / 256);
byte_write(0x2002, qiang_gx);
byte_write(0x2003, ruo_gx);
byte_write(0x2004, s_miao);
byte_write(0x2005, s_fen);
byte_write(0x2006, s_shi);
byte_write(0x2057, a_a);
}
void read_eeprom()
{
set_d = byte_read(0x2001);
set_d  = set_d * 256 + byte_read(0x2000);  
qiang_gx = byte_read(0x2002);
ruo_gx   = byte_read(0x2003);
s_miao   = byte_read(0x2004);
s_fen   = byte_read(0x2005);
s_shi   = byte_read(0x2006);
a_a    = byte_read(0x2057);
}
void init_eeprom()
{
read_eeprom();  
if(a_a != 2)  
{
  set_d = 40;
  a_a = 2;
  qiang_gx = 80;
  ruo_gx = 20;
  s_miao = 0,s_fen = 45,s_shi=0;
  write_eeprom();
}
}
void delay_uint(uint q)
{
while(q--);
}
void write_com(uchar com)
{
e=0;
rs=0;
rw=0;
P0=com;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}
void write_data(uchar dat)
{
e=0;
rs=1;
rw=0;
P0=dat;
delay_uint(3);
e=1;
delay_uint(25);
e=0;
}
部分程序
万分感谢!!!!!!

3NJ`[}93V0Q633_(P}UIF2K.jpg (46.61 KB, 下载次数: 50)

是原型未声明吗 不会啊 求大神!

是原型未声明吗 不会啊 求大神!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:246251 发表于 2018-11-9 14:42 | 只看该作者
SectorErase();这个函数在哪写的
回复

使用道具 举报

板凳
ID:423279 发表于 2018-11-9 20:32 | 只看该作者
求帮助 NKYproteus 仿真.rar (70.57 KB, 下载次数: 7)



回复

使用道具 举报

地板
ID:280876 发表于 2018-11-12 16:55 | 只看该作者
你还是贴代码上来吧,别人哪有那么多时间下载来看
回复

使用道具 举报

5#
ID:213173 发表于 2018-11-12 20:53 | 只看该作者

没有发现编译错误,下载程序如下:
#define uint unsigned int
#define uchar unsigned char
#define DUAN P0          
#include <reg52.h>

unsigned char code tab[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28,0xff};          
unsigned char code tab_dian[]={0x80,0x9b,0x42,0x0a,0x19,0x0c,0x04,0x9a,0x00,0x08,0xdf};  
uchar pdata tt[51];                 
uchar scale=20,rsd_sec;               
char min,sec;                               

bit bdata flag_auto,ss,flag_bs,flag_rsd,flag_jiejin=1;          
uchar flag_set=0;                       
uchar lum;                                       
void delay(uchar i);   
sbit LED = P3^4;       
sbit change= P2^3;          
sbit set = P2^2;         
sbit add = P2^1;       
sbit sub = P2^0;       
sbit rsd = P3^6;   
sbit jiejin=P3^5;  
sbit buzz=P3^7;          

sbit W0=P2^7;
sbit W1=P2^6;
sbit W2=P2^5;
sbit W3=P2^4;          
void display()
{
        if(flag_set==0)                         
        {
                DUAN=tab[min/10];          
                W0=0;                                  
                delay(1);                          
                W0=1;                                  
                DUAN=tab_dian[min%10];
                W1=0;
                delay(1);
                W1=1;
                DUAN=tab[sec/10];
                W2=0;
                delay(1);
                W2=1;
                DUAN=tab[sec%10];
                W3=0;
                delay(1);
                W3=1;
        }
        else if(flag_set==1)                 
        {
                if(ss==1)                       
                {
                        DUAN=~tab[min/10];
                        W0=0;
                        delay(1);
                        W0=1;
                        DUAN=~tab_dian[min%10];
                        W1=0;
                        delay(1);
                        W1=1;
                }
                else                                          
                {
                        DUAN=~tab[10];
                        W0=0;
                        delay(1);
                        W0=1;
                        DUAN=~tab_dian[10];
                        W1=0;
                        delay(1);
                        W1=1;
                }
                DUAN=~tab[sec/10];
                W2=0;
                delay(1);
                W2=1;
                DUAN=~tab[sec%10];
                W3=0;
                delay(1);
                W3=1;
        }
        else
        {
               
                DUAN=~tab[min/10];
                W0=0;
                delay(1);
                W0=1;
                DUAN=~tab_dian[min%10];
                W1=0;
                delay(1);
                W1=1;
                if(ss==1)
                {
                        DUAN=~tab[sec/10];
                        W2=0;
                        delay(1);
                        W2=1;
                        DUAN=~tab[sec%10];
                        W3=0;
                        delay(1);
                        W3=1;
                }
                else
                {
                        DUAN=~tab[10];
                        W2=0;
                        delay(1);
                        W2=1;
                        DUAN=~tab[10];
                        W3=0;
                        delay(1);
                        W3=1;
                }
        }
}
void KEY()
{
        uint lum_mean,lum_all;
        uchar b,c;
        if(change==0)                                 
        {
                delay(10);                               
                if(change==0)                         
                {
                        buzz=0;                                 
                        flag_auto=!flag_auto;
                        if(flag_auto==1)         
                        scale=20;
                       
                }
                while(!change) display();buzz=1;
        }
        if(jiejin==0&&flag_jiejin==1)         
        {
                buzz=0;
                flag_jiejin=0;
        }
        if(jiejin!=flag_jiejin)                          
        {
                buzz=1;
                flag_jiejin=1;
        }
        if(set==0)                                               
        {
                delay(10);
                if(set==0)
                {
                        buzz=0;
                        flag_set++;                                  
                        if(flag_set==3)                         
                        flag_set=0;
                        flag_bs=0;                                 
                }
                while(!set) display(); buzz=1;       
        }
        if(flag_set==1)                                         
        {                                                                  
                if(add==0)                                         
                {
                        delay(10);
                        if(add==0)
                        {
                                buzz=0;
                                min++;                                 
                                if(min>=60)
                                min=0;
                        }
                        while(!add) display(); buzz=1;
                }
                if(sub==0)                                         
                {
                        delay(10);
                        if(sub==0)
                        {
                                buzz=0;
                                min--;                                  
                                if(min>0)
                                min=59;
                        }
                        while(!sub) display(); buzz=1;
                }
        }
        if(flag_set==2)
        {                                                               
                if(add==0)                                       
                {
                        delay(10);
                        if(add==0)
                        {
                                buzz=0;
                                sec++;                                 
                                if(sec>=60)
                                sec=0;                               
                        }
                        while(!add) display(); buzz=1;
                }
                if(sub==0)                                       
                {
                        delay(10);
                        if(sub==0)
                        {
                                buzz=0;
                                sec--;                                 
                                if(sec<0)
                                sec=59;                               
                        }
                        while(!sub) display();        buzz=1;
                }
                while(!sub);
        }
               
        if(flag_auto==0)                                       
        {
                if(flag_rsd==1)                                       
                {
                        for(b=0;b<49;b++)                        
                        {
                                tt=tt[b+1];                       
                        }               
                        for(c=0;c<50;c++)                       
                        {
                                lum_all=lum_all+tt[c];
                        }
                        lum_mean=lum_all/50;                       
                        if(lum_mean<=30) scale=1;                          
                        else if(lum_mean>=150) scale=41;          
                        else scale=((lum_mean-30)/3)+1;                  
                }
                else
                scale=1;                                         
        }
        else                                               
        {
                if(flag_set==0)                               
                {
                        if(add==0)                       
                        {
                                delay(10);
                                if(add==0)
                                {
                                //        buzz=0;
                                        scale++;                 
                                        if(scale>=41)
                                        scale=41;
                                        display();
                                }
                        }
                        if(sub==0)                                  
                        {
                                delay(10);
                                if(sub==0)
                                {
                                        scale--;                  
                                        if(scale>1)
                                        scale=1;
                                        display();
                                }
                        }
                }
        }
}
void init()
{
        TMOD=0x11;          
        TH1=0x3c;
        TL1=0xb0;          
        TH0=0xff;
        TL0=0xe7;                 
        ET0=1;
        ET1=1;                  
        EA=1;                  
        TR0=1;
        TR1=0;                  
}
void main()
{
        init();                  
        flag_auto=1;  
        rsd=0;                  
        delay(500);       
        while(1)                  
        {
                KEY();                 
                display();       
        }
}
void delay(uchar i)
{
  uchar j,k;
  for(j=i;j>0;j--)
    for(k=125;k>0;k--);
}
void time0() interrupt 1
{
        uchar n;
        TH0=0xff;
        TL0=0xe7;                 
        n++;                         
        if(n>scale)
        {
                LED=1;
        }
        else if(n<=scale)
        {
                LED=0;
        }
        if(n==40)               
        {
                n=0;                 
        }
        else ;       
}
void time1() interrupt 3
{
        uchar m;
        TH1=0x3c;
        TL1=0xb0;               
        m++;                         
        if((m==10||m==20)&&flag_set!=0)          
        {
                ss=!ss;                                               
        }
        if(m==20)                                               
        {
                m=0;                                                  
                if(rsd==0)                                       
                rsd_sec++;                                          
                if(rsd_sec<=30&&rsd==1)                  
                {
                        rsd_sec=0;                               
                        flag_rsd=1;                               
                }
                else if(rsd_sec>30&&rsd==0)          
                {
                        flag_rsd=0;                                  
                        rsd_sec=0;                                 
                }
                if(flag_set==0&&flag_bs==0&&((min+sec)!=0))               
                {
                        sec--;
                        if(sec<0)
                        {
                                sec=59;                                                                       
                                min--;                                                                         
                        }
                        if(min<=0&&sec==0)                                                         
                        {
                                min=0;
                                flag_bs=1;
                                buzz=0;                                                                         
                        }
                }       
        }       
}
回复

使用道具 举报

6#
ID:111339 发表于 2018-11-13 11:51 | 只看该作者
函数声明要放在调用之前
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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