搜索
bottom↓
回复: 4

本人初学者,做了个用51控制直流电机,程序出错来请教下大家

[复制链接]

出0入0汤圆

发表于 2011-4-18 18:35:46 | 显示全部楼层 |阅读模式
请大家看看这个程序,本人改来改去还是有个错。
错误原因:(1)PWM.C(19): warning C206: 'ledshow': missing function-prototype
           (2)PWM.C(19): error C267: 'ledshow': requires ANSI-style prototype

代码如下:                           #include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f, 0x40,0x00};
/************************主程序*************************/
void main ()
{  
int i;
  TMOD=0x01    ;                                //定时器0设为16位定时
TH0=(65536-40000)/256;//40ms
TL0=(65536-40000)%256;
  EA=1                   ;                        //开CPU中断
  ET0=1                   ;                        //开T0中断
TR0=1                    ;                        //启动定时器T0
while(1)
{
  ledshow(i)             ;                        //数码管显示
  keyscan()             ;                        //键盘扫描
  }
}

/**********************数码管显示程序********************/
void ledshow(unsigned int i)   
{
disdata[0]=i/1000;                           //百位数
disdata[1]=i%1000/100;                          //十位数
disdata[2]=i%100/10;                          //个位数
disdata[3]=i%10;                                   //小数位
P2=0xf7;P0=0x00;
P0=table[ disdata[3]];
  delay(20);
P2=0xfb;P0=0x00;
P0=table1[ disdata[2]];
  delay(20);
P2=0xfd;P0=0x00;
P0=table[ disdata[1]];
delay(20);
P2=0xfe;P0=0x00;
P0=table[ disdata[0]];
  delay(20);
}
void delay_20()                                  //延时20uS
{  uchar bt ;
    for(bt=0;bt<100;bt++);
}
/**********************键值扫描函数*************************/
void keyscan()
{
  enum keydown kdwn;
  P1=0xff;
  If((P1&0xff)!=0x1f)
  {
delay(1000)           ;                         //延时10ms 消抖
   If((P1&0x1f)!=0x1f)
{
  kdwn=P1&0x1f ;
  Switch(kdwn)
  {
    case  clckws:clokwise( );
    break;                                        //正转
    case antclckws: anticlokwise( );
    break;                                        //反转
    case  mstsp: motorstop( );
    break;                                        //急停
    case  spdp:  speedup( );
    break;                                        //加速
    case spdwn:  speeddown( );
    break;                                        //减速
}
}
}
  while((P1&0x1f)!=0x1f);
}


/********************TO中断服务程序****************/
void time0_int(void) interrupt 1
{
        time++;
        TH0 = 0xec;
        TL0 = 0x78;
        if(change == 0)
        {
PWM2 = 1;                                               
                if(time == high)
                 PWM1=0;
                else if(time == period)
                  {
                        PWM1 = 1;
                        time = 0;
                          }
                                                                     }
                         else
                 {            PWM1 = 1;               
                                  if(time == high)
                                       PWM2=0;
                                  else if(time == period)
                                   {
                                   PWM2 = 1;
time = 0;
                               }
}
        }

proteus原理图如附件,数码管用共阴接法,位选端接到P2口(这里有个疑问,直接接到P2口会不会把单片机烧了?)

(原文件名:捕获.PNG)


(原文件名:捕获.PNG)

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2011-4-18 18:37:51 | 显示全部楼层
自己先顶下,自己感觉是不是定义那出了问题?还请各位大虾看看多多指教,谢谢。

出0入0汤圆

发表于 2011-4-19 13:57:56 | 显示全部楼层
子函数在main后面,要在主函数前面加上函数声明,void ledshow(unsigned int i);

出0入0汤圆

发表于 2011-4-19 15:10:42 | 显示全部楼层
要么把ledshow函数放在主函数前定义,要么在主函数前面声明一下,按照楼上的那么写。

出0入0汤圆

发表于 2011-5-20 01:07:18 | 显示全部楼层
引用图片【楼主位】chp3833782
-----------------------------------------------------------------------

(原文件名:捕获.PNG)
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 23:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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