5615|11

1673

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

大虾们帮我用KEIL编译下吧 [复制链接]

各位大虾:
        我编译的时候老提示错误,但是我又找不到,麻烦各位帮我看看到底是怎么回事?
ERROR: requires ANSI-style prototype

89s52脉冲计数.rar

1.97 KB, 下载次数: 3

此帖出自单片机论坛

最新回复

随便说几个问题:   一,变量的名字居然可以用关键字data?    二,uchar和unchar是什么意思? 三,uchar是8位的,怎么变成16位了? 四,被调用的子程序怎么放在后面?也没有申明函数原型。 五,怎么有2个Delay?一个在前,一个在后。 六,程式的板书和结构,变量的命名等等,都比较混乱。  详情 回复 发表于 2010-3-11 11:10
点赞 关注
个人签名要把目标订的实现起来辛苦一点!
 

回复
举报

2131

帖子

0

TA的资源

至上芯片

沙发
 

回复 楼主 simonprince 的帖子

我帮你编译一下!
此帖出自单片机论坛
 
个人签名处处留心皆学问!
 

回复

2131

帖子

0

TA的资源

至上芯片

板凳
 

回复 楼主 simonprince 的帖子

怎么没有把整个工程发一下啊,我还得建一个工程,呵呵!
此帖出自单片机论坛
 
个人签名处处留心皆学问!
 
 

回复

1673

帖子

0

TA的资源

五彩晶圆(中级)

4
 
给忘记了,补上
O(∩_∩)O谢谢

程序调试.rar

12 KB, 下载次数: 3

此帖出自单片机论坛
 
个人签名要把目标订的实现起来辛苦一点!
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

5
 
requires ANSI-style prototype

需要ANSI格式原型。
可能你变量或函数在使用前没有声明
此帖出自单片机论坛
 
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

6
 
刚才下载了程序,本来帮你改的,结果错了一大堆啊,
给你改了不下30个地方。。。
此帖出自单片机论坛
 
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

7
 

终于好的,你自己检查下逻辑

#include
#define uchar unsigned char
#define uint unsigned int
sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit P0_4 = P0^4;//RST引脚
sbit P1_0 = P1^0;
sbit P1_1 = P1^1;
sbit P1_2 = P1^2;
sbit P1_3 = P1^3;
sbit P1_4 = P1^4;
sbit P1_5 = P1^5;
sbit P1_6 = P1^6;
sbit P1_7 = P1^7;//低电平使系统上电
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
sbit   CS = P2^4;//片选
sbit  SCK = P2^5;
sbit   DI = P2^6;//串行数据入   
sbit   DO = P2^7;
sbit P3_2 = P3^2;//外部中断0
sbit P3_3 = P3^3;//外部中断1
sbit P3_4 = P3^4;//计数器0外部输入
sbit P3_5 = P3^5;//计数器1外部输入
sbit P3_6 = P3^6;
sbit P3_7 = P3^7;
bit flag1; bit flag5; bit flag9;  bit flag13;
bit flag2; bit flag6; bit flag10; bit flag14;
bit flag3; bit flag7; bit flag11; bit flag15;
bit flag4; bit flag8; bit flag12;
bit timerout; bit keypress;
uchar scankey;       
uint count;uint count1; uint count2;
uint count3; uint count4;
uint i1; uint i2;
void delay(uint delaytime)
{
  uint j=0;
  for(;delaytime>0;delaytime--)
     {for(j=0;j<100;j++)//0.1ms延时
         {;}
      }
}
void int1() interrupt 2
{

}
void time0() interrupt 1//计数器T0
{
  TH0=(256-255)/16;
  TL0=(256-255)%16;
  if(flag3==1){ count2++;}
  if(flag4==1){ count2--;}
  if(flag5==1){ count3++;}
  if(flag6==1){ count3--;}
  if(flag7==1){ if(count2<5){count2++;}else{P1_0=0;P1_2=1;}}
  if(flag8==1){ count2--;}
  if(flag9==1){ count3--;}
  if(flag10==1){ count3++;}
  if(flag14==1){ if(count2<10){count2++;}else{P1_0=0;P1_2=1;}}
  if(flag15==1){ if(count2>0){count2--;}else{P1_1=0;}}
  if(flag11==1){ if(count2   if(flag12==1){ if(count2   if(flag13==1){ if(count2 }
WriCmd(uchar OpAddH,OpAddL)
{
  uchar i,m;
  CS=1;delay(1);
  m=OpAddH;
  for(i=0;i<8;i++)
     {
      DI=m & 0x80;
      delay(1);SCK=1;
      delay(1);SCK=0;
      m=m<<1;
     }
  m=OpAddL;
  for(i=0;i<8;i++)
     {
      DI=m & 0x80;
      delay(1);SCK=1;
      delay(1);SCK=0;
      m=m<<1;
     }
  CS=0;
}
WriData(uchar cmd,uchar add,uchar mydata)
{
  uchar i,m;
  CS=1;delay(1);
  m=cmd;
  for(i=0;i<8;i++)      
     {
     DI=m & 0x80;     
      delay(1);SCK=1;
      delay(1);SCK=0;
      m=m<<1;
     }
  m=add;
  for(i=0;i<6;i++)      
     {
      DI=m & 0x20;  
      delay(1);SCK=1;
      delay(1);SCK=0;
      m=m<<1;
     }
m=mydata;
  for(i=0;i<16;i++)      
     {
      DI=m & 0x8000;      
      delay(1);SCK=1;
      delay(1);SCK=0;
      m=m<<1;
     }
  DO=0;
  while(DO==0);         
}
Read9346(uchar add)
{
  uchar i,m, dump;
  CS=1;delay(1);
  m=0x06;
  for(i=0;i<8;i++)      
     {
      DI=m & 0x80;   
      delay(1);SCK=1;
      delay(1);SCK=0;
      m=m<<1;
     }   
  m=add;
  for(i=0;i<6;i++)      
     {
      DI=m & 0x20;     
      delay(1);SCK=1;
      delay(1);SCK=0;
      m=m<<1;
     }
  dump=0;
  DO=1;
  for(i=0;i<16;i++)   
     {
      dump =dump<<1;
      delay(1);SCK=1;
      delay(1);SCK=0;
      delay(1);
      dump|=(bit)DO;
     }
   CS=0;
   return(dump);  
}
Writ9346(uchar add,mydata)
{  
  DI=DO=0;CS=0;
  WriCmd(0x04,0xc0);        
  WriData(0x05,add,mydata);
  WriCmd(0x04,0x00);  
}
void time1() interrupt 3//计数器T1
{
  TH1=(256-255)/16;
  TL1=(256-255)%16;
  if(flag1==1){ count1++;}
  if(flag2==1){ count1--;}
  if(flag5==1){ count4++;}
  if(flag6==1){ count4--;}
  if(flag7==1){ count1++;}
  if(flag8==1){ if(count1>0){count1--;}else{P1_2=0;P1_1=1;}}
  if(flag9==1){ count4++;}
  if(flag10==1){ count4--;}
  if(flag15==1){ if(count1>0){count1--;}else{P1_2=0;P1_1=1;}}
  if(flag14==1){ if(count1<20){count1++;}else{P1_2=0;}}
  if(flag11==1){ if(count1   if(flag12==1){ if(count1   if(flag13==1){ if(count1 }  
void time2() interrupt 4//定时器中断time2,每10ms运行一次
{
    TH2=(65536-10000)/256;
    TL2=(65536-10000)%256;//定时器2初始,10ms
    TF2=0;
    timerout=1;//定时器中断标志
    scankey=~(P2<<4);
    if(scankey&0xf0)  {keypress=1;}//按键按下标志
          else        {keypress=0;}
}
void main(void)
{
  uchar key_new;
  uint key_val;
  uchar key_cur;
  uchar line;
  uchar temp;
  count=0;
  P0=0x00;
  P0=0x0C;
  P1=0x00;
  P2=0x0f;
  TMOD=0x66;//计数器工作方式2
  T2CON=0x00;
  TR2=1;
  EA=1;
  ET2=1;//开定时器T2中断
  while(1)
    {
     if(P3_7==0|P3_6==0){P1=0x80;}//检测电压过大关闭Q1电源供应(红灯亮)P1_7=1
     if(timerout)
       {   
           timerout=0;
           count++;
           P0_4=1;
           if(count==10)
             {
                 P0_4=0;//100ms喂狗
                 count=0;
              }
           if(keypress==0)
           {  P1=0x00; P2=0x0f;key_val=0; }//
           if(keypress==1)
           {
              key_new=0;
              line=11100100;
              while(line!=0)
                  {
                     P0=(line&0x03)|(P0&0xfc);
                     key_new<<=4;
                     key_new/=(~P2&0x0f);
                     line>>=2;
                  }//P1低2位循环置00,01,10,11使按键矩阵逐行置零
                     if(key_cur==key_new) {key_val=key_new;}
                              else        {key_cur=key_new;}
              switch(key_val)
                  {
                     case 0x1000:    flag12=1;P1_0=1;i1=Read9346(0x02);i2=Read9346(0x03);break;//B功能键
                     case 0x2000:    flag3=1;P1_0=1;break;  
                     case 0x4000:    flag4=1;P1_4=1;delay(50);P1_1=1;break;  
                     case 0x8000:    flag13=1;P1_0=1;i1=Read9346(0x04);i2=Read9346(0x05);break;//C功能键
                     case 0x0100:    flag15=1;P1_5=1;P1_4=1;delay(50);P1_3=1;break;
                     case 0x0200:    flag7=1;P1_0=1;break;
                     case 0x0400:    flag8=1;P1_5=1;P1_4=1;delay(50);P1_3=1;break;
                     case 0x0800:    flag14=1;P1_0=1;break;
                     case 0x0010:    flag10=1;P1_6=1;P1_4=1;delay(50);P1_1=1;P1_2=1;break;
                     case 0x0020:    flag5=1;P1_6=1;delay(50);P1_0=1;P1_2=1; break;
                     case 0x0040:    flag6=1;P1_5=1;P1_4=1;P1_6=1;delay(50);P1_1=1;P1_3=1; break;
                     case 0x0080:    flag9=1;P1_6=1;P1_5=1;delay(50);P1_0=1;P1_3=1; break;
                     case 0x0001:    flag11=1;P1_0=1;i1=Read9346(0x00);i2=Read9346(0x01);break;//A功能键
                     case 0x0002:    flag1=1;P1_2=1;break;
                     case 0x0004:    flag2=1;P1_5=1;delay(50);P1_3=1; break;
                     case 0x0008:    //S键做组合键使用无功能定义
                     case 0x0009:    Writ9346(0x00,count1);Writ9346(0x01,count2);break;//A功能键与S键组合使用S+A 记忆功能A
                     case 0x1008:    Writ9346(0x02,count1);Writ9346(0x03,count2);break;//B功能键与S键组合使用S+B 记忆功能B
                     case 0x8008:    Writ9346(0x04,count1);Writ9346(0x05,count2);break;//C功能键与S键组合使用S+C 记忆功能C                 
                   }
               temp=key_val;
               while(temp!=0){temp=key_val;}
             }
        }
    }
}
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

8
 

OK了

PLEASE SEE ENCLOSED FILE!!

程序调试.rar

24.54 KB, 下载次数: 2

此帖出自单片机论坛
 
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

9
 
随便说几个问题:


  一,变量的名字居然可以用关键字data?
   二,uchar和unchar是什么意思?
三,uchar是8位的,怎么变成16位了?
四,被调用的子程序怎么放在后面?也没有申明函数原型。
五,怎么有2个Delay?一个在前,一个在后。
六,程式的板书和结构,变量的命名等等,都比较混乱。
此帖出自单片机论坛

赞赏

2

查看全部赞赏

 
 
 

回复

1673

帖子

0

TA的资源

五彩晶圆(中级)

10
 
;P
:D
O(∩_∩)O谢谢
您的RP=10000000000000000000000000000000000000000MOP
此帖出自单片机论坛
 
个人签名要把目标订的实现起来辛苦一点!
 
 

回复

1673

帖子

0

TA的资源

五彩晶圆(中级)

11
 
刚看了一下,经LS指点总结一下犯错误的原因,新手引以为戒
1.移植过来的程序,不能草草的改了下酒OK了,必须仔细的核对有没错误
2.改呢,要改对了,不能改完了还是错误的,比如uchar和unchar
3.学习写程序的规范
再次感谢jxb01033016
我再仔细看看~~~~
此帖出自单片机论坛
 
个人签名要把目标订的实现起来辛苦一点!
 
 

回复

1673

帖子

0

TA的资源

五彩晶圆(中级)

12
 
那为什么9346读写程序要放在2个计数器程序之间呢?
谢谢
此帖出自单片机论坛
 
个人签名要把目标订的实现起来辛苦一点!
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表