|
请大家看看这个程序,本人改来改去还是有个错。
错误原因:(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口会不会把单片机烧了?)
![](http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_631823YH0XG3.PNG)
(原文件名:捕获.PNG)
![](http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_631822JM3EZZ.PNG)
(原文件名:捕获.PNG) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|