标题:
编译出错 求大神帮忙看一下如何修改错误
[打印本页]
作者:
丰杰
时间:
2021-6-11 12:31
标题:
编译出错 求大神帮忙看一下如何修改错误
按照教科书上的程序写的,但是测试发现好多错误。不会改,求大神帮忙改一下让程序能用。
#include”reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit naodeng=P2^0;
sbit S1=P3^0;
sbit S2=P3^2;
sbit S3=P3^3;
sbit beep=P2^7;
void shijian( );
void Timer0Init ( );
void DigDisplay( );
void alarm( );
void tiao_nao ( );
void moshi ( );
void delay ( u16 i ) ;
bit nao ;
u8 a =0;
u8 dispiay [] = {0,0,0,0,0,0};
u8 ssec, sec, min, hour, nao_hour=0, nao_min=0;
void delay ( u16 i )
{
while (i--);
}
void Timer0Init ( )
{
TMOD =0x01;
EX0 =1;
IT0 =1;
PX0 =1;
EX1 =1;
IT1 = 0;
TH0= 0xd8;
TL0 = 0xf0;
ET0 = 1;
EA=1;
TR0=1;
}
void DigDisplay ( )
{
u8 i, j, m, temp;
u8 led [] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f };
temp=0x01;
for ( i=0 ; i<6 ; i++)
{
P1=0x00;
j=display [ i ];
P1=led [j];
P0=~temp;
temp<<=1;
for ( m=0 ; m<100; m++);
}
}
void alarm ( )
{
if ( nao_ hour==hour && nao_ min==min && sec>=0 && sec<15 && nao ==1 )
{
beep=1;
delay (5);
beep=0;
delay(5);
}
}
void tiao_ nao ( )
{
IT0=0;
EX1=0;
EX0=0;
delay ( 10 ) ;
while ( S1 )
{
if (S2 = =0)
{delay (10);
if ( S2==0 ) nao_ hour++;
while ( ! S2 ) ; }
if ( nao_ hour>=24 ) nao_ hour=0;
if(S3==0)
{delay ( 10 );
if (S3==0) nao_ min++; while ( ! S3 ) ; }
if(nao_ min>=60) nao_ min=0;
display [5] =0;
display [4] =0;
display [3] =nao_ min%10;
display [2] =nao_ min/10;
display [1] =nao_ hour%10;
display [0] =nao_ hour/10;
DigDisplay ( ) ;
}
IT0=1;
EX1=1;
EX0=1;
nao=1;
}
void moshi ( )
{
if ( S1==0 )
{
delay(100);
if(S1==0)
{
a++;
if ( a>=2 ) a=0;
while( ! S1);
switch (a)
{
case (0) ; nao=~nao; break;
case (1) ; tiao_ nao ( ) ; break;
}
}
}while ( ! S1 );
}
void shijian ( )
{
display [5] =sec%10;
display [4] =sec/10;
display [3] =min%10;
display [2] =min/10;
display [1] =hour%10;
display [0] =hour/10;
DigDisplay ( ) ;
}
void timer0 ( ) interrupt 1
{
TH0=0xd8;
TL0=0xf0;
ssec++;
if ( ssec>=100 )
{
ssec=0;
sec++;
if ( sec>=60 )
{
sec=0;
min++;
if ( min>=60)
{
min=0;
hour++;
if ( hour>=24 )
{
hour=0;
}
}
}
}
}
void int0 ( ) interrupt 0
{
delay (10);
hour++;
if (hour>=24) hour=0;
}
void int1 ( ) interrupt 2
{
min++;
if ( min==60 ) min=0;
while ( ! S3 );
}
void main ( )
{
Timer0Init ( ) ;
while ( 1 )
{
if ( nao==1 ) naodeng=0;
else naodeng =1;
shijian ( );
moshi ( );
alarm ( );
}
}
复制代码
这是一个数字钟的程序,
自动计时,由6位LED显示器显示时、分、秒。 具备校准功能,可以设置当前时间。 具备定时启闹功能,可以设置启闹时间并同时开启闹钟功能,启闹15s后自动关闭闹铃。 在闹钟开启状态或闹铃过程中,可以按键关闭闹钟功能
作者:
名字不是重点
时间:
2021-6-11 14:29
“测试发现好多错误”,你是不是该把错误列出来?不然谁能有这个时间帮你调试?
作者:
sssssda
时间:
2021-6-11 14:39
include""都错了
作者:
Jing_Lan
时间:
2021-6-11 15:25
void DigDisplay ( )
{
u8 i, j, m, temp;
u8 led [] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f };
请问这一段是什么,如果是LED驱动这是段选还是位选呢??????如果是段选请问位选去哪里了呢????????只有段没有位他该怎么显示出来呢??????
temp=0x01;
for ( i=0 ; i<6 ; i++)
{
P1=0x00;
j=display [ i ];
P1=led [j];
P0=~temp;
temp<<=1;
for ( m=0 ; m<100; m++);
}
}
作者:
yzwzfyz
时间:
2021-6-11 17:36
教科书错在哪里呢?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1