
c51单片机error C267: 'delayms': requires ANSI-style prototype
#include<reg51.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint//数...
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//数码管
sbit LE1=P1^0;
sbit LE2=P1^1;
unsigned char dis0=0xf9;
unsigned char dis1=0xa4;
unsigned char dis2=0xb0;
unsigned char dis3=0x99;
//点阵屏
sbit DAT_LDQA=P1^2;
sbit CLK=P1^3;
sbit OE=P1^4;
sbit STR=P1^5;
sbit DAT_LD1=P1^6;
uchar XX[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
uchar YY[3][8]={0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,
0xe7,0xdb,0xbd,0x7e,0x7e,0xbd,0xdb,0xe7,
0xe7,0xdb,0xbd,0xbd,0xbd,0xbd,0xbd,0xc3};
//独立开关
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
//延时函数1
void delay(void)
{
unsigned int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<121;j++);
}
}
//点阵屏程序
void HC595_send_char(uchar dat_ldqa,dat_ld1)
{
uchar i;
for(i=0;i<8;i++)
{
DAT_LDQA=dat_ldqa&1<<i;
DAT_LD1=dat_ld1&1<<i;
CLK=1;
CLK=0;
}
STR=1;
STR=0;
}
void dzp()
{
uchar i,j,k;
uint numb;
OE=0;
while(1)
{
for(i=0;i<3;i++)
{
for(numb=0;numb<200;numb++)
{
for(j=0;j<8;j++)
{
HC595_send_char(YY[i][j],XX[j]);
for(k=0;k<20;k++);
}
}
}
}
}
//数码管程序
void smg()
{
while(1)
{
P0=0x01;
LE1=1;
LE1=0;
P0=dis0;
LE2=1;
LE2=0;
delay();
P0=0x02;
LE1=1; LE1=0;
P0=dis1;
LE2=1; LE2=0;
delay();
P0=0x04;
LE1=1; LE1=0;
P0=dis2;
LE2=1; LE2=0;
delay();
P0=0x08;
LE1=1; LE1=0;
P0=dis3;
LE2=1; LE2=0;
delay();
}
}
//LED
void led()
{
uchar i;
P1=0Xfe;
for(i=0;i<8;i++)
{
delayms(10);
P1<<=1;
P1=P1|0x01;
}
}
//主函数
void main()
{
while(1)
{
int num;
num = keyscan();
if(num==1)
{
dzp();
}
else if(num==2)
{
smg();
}
else if(num==3)
{
led();
}
}
//循环定义
uchar keyscan()
{
uchar key;
if(key1==0)
{
delayms(10);
if(key1==0)
{
key=1;
while(!key 1);
return 1;
}
}
if(key2==0)
{
delayms(10);
if(key 2==0)
{
key=2;
while(!key2);
return 2;
}
}
if(key3==0)
{
delayms(10);
if(key3==0)
{
key=3;
while(!key3);
return 3;
}
}
/* if(key 4==0)
{
delayms(10);
if(key 4==0)
{
key=4;
while(!key4);
return 4;
}
}*/
}
} 展开
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//数码管
sbit LE1=P1^0;
sbit LE2=P1^1;
unsigned char dis0=0xf9;
unsigned char dis1=0xa4;
unsigned char dis2=0xb0;
unsigned char dis3=0x99;
//点阵屏
sbit DAT_LDQA=P1^2;
sbit CLK=P1^3;
sbit OE=P1^4;
sbit STR=P1^5;
sbit DAT_LD1=P1^6;
uchar XX[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
uchar YY[3][8]={0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,
0xe7,0xdb,0xbd,0x7e,0x7e,0xbd,0xdb,0xe7,
0xe7,0xdb,0xbd,0xbd,0xbd,0xbd,0xbd,0xc3};
//独立开关
sbit key1=P3^0;
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
//延时函数1
void delay(void)
{
unsigned int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<121;j++);
}
}
//点阵屏程序
void HC595_send_char(uchar dat_ldqa,dat_ld1)
{
uchar i;
for(i=0;i<8;i++)
{
DAT_LDQA=dat_ldqa&1<<i;
DAT_LD1=dat_ld1&1<<i;
CLK=1;
CLK=0;
}
STR=1;
STR=0;
}
void dzp()
{
uchar i,j,k;
uint numb;
OE=0;
while(1)
{
for(i=0;i<3;i++)
{
for(numb=0;numb<200;numb++)
{
for(j=0;j<8;j++)
{
HC595_send_char(YY[i][j],XX[j]);
for(k=0;k<20;k++);
}
}
}
}
}
//数码管程序
void smg()
{
while(1)
{
P0=0x01;
LE1=1;
LE1=0;
P0=dis0;
LE2=1;
LE2=0;
delay();
P0=0x02;
LE1=1; LE1=0;
P0=dis1;
LE2=1; LE2=0;
delay();
P0=0x04;
LE1=1; LE1=0;
P0=dis2;
LE2=1; LE2=0;
delay();
P0=0x08;
LE1=1; LE1=0;
P0=dis3;
LE2=1; LE2=0;
delay();
}
}
//LED
void led()
{
uchar i;
P1=0Xfe;
for(i=0;i<8;i++)
{
delayms(10);
P1<<=1;
P1=P1|0x01;
}
}
//主函数
void main()
{
while(1)
{
int num;
num = keyscan();
if(num==1)
{
dzp();
}
else if(num==2)
{
smg();
}
else if(num==3)
{
led();
}
}
//循环定义
uchar keyscan()
{
uchar key;
if(key1==0)
{
delayms(10);
if(key1==0)
{
key=1;
while(!key 1);
return 1;
}
}
if(key2==0)
{
delayms(10);
if(key 2==0)
{
key=2;
while(!key2);
return 2;
}
}
if(key3==0)
{
delayms(10);
if(key3==0)
{
key=3;
while(!key3);
return 3;
}
}
/* if(key 4==0)
{
delayms(10);
if(key 4==0)
{
key=4;
while(!key4);
return 4;
}
}*/
}
} 展开
4个回答
展开全部
delayms()函数你定义了么?我只看到delay()函数。
更多追问追答
追问
我C51学渣啊。。。。大神救我。。怎么改
追答
这么丑的程序,谁写的啊?
加一个函数,
//延时函数1
void delay(void)
{
unsigned int i,j;
for(i=0;i<2;i++)
{
for(j=0;j<121;j++);
}
}
// *********************加着这里:
void delayms(unsigned int dt)
{
while(dt--)
delay();
}
//点阵屏程序
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?

2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
delayms这个函数你没有申明。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
发给我看看
工程
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-12-24
展开全部
亲,你从哪拷贝的程序,被人坑了吧。delayms()没定义声明
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询