大家帮我看看这个单片机的c语言编程吧,不知道怎么的用keil编译总是说中断服务程序附近有错误,谢谢啦!

#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintucharcodetable_dula[]=... #include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table_dula[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code table_wela[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
sbit dula=P2^6;
sbit wela=P2^7;
uchar shi,fen,miao;
uchar count=0;
void delay(uint z)
{
uint x;
uchar y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void init()
{
dula=1;
P0=table_dula[8];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[1];
wela=0;
delay(5);
dula=1;
P0=table_dula[8];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[2];
wela=0;
delay(5);
dula=1;
P0=table_dula[8];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[3];
wela=0;
delay(5);
dula=1;
P0=table_dula[8];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[4];
wela=0;
delay(5);
dula=1;
P0=table_dula[8];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[5];
wela=0;
delay(5);
dula=1;
P0=table_dula[8];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[6];
wela=0;
delay(5);
}
void disp_shumaguan()
{
dula=1;
P0=table_dula[shi/10];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[1];
wela=0;
delay(5);
dula=1;
P0=table_dula[shi%10];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[2];
wela=0;
delay(5);
dula=1;
P0=table_dula[fen/10];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[3];
wela=0;
delay(5);
dula=1;
P0=table_dula[fen%10];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[4];
wela=0;
delay(5);
dula=1;
P0=table_dula[miao/10];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[5];
wela=0;
delay(5);
dula=1;
P0=table_dula[miao%10];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[6];
wela=0;
delay(5);
}
void algorithm()
{
count++;
if(count == 20)
{
count = 0;
miao++;
if(miao == 60)
{
fen++;
miao = 0;
if(fen == 60)
{
shi++;
fen = 0;
if(shi == 24)
{
shi = 0;
}
}
}
void timer0init()
{
TOMD=0x01;
TH0=(65536-46083)/256;
TL0=(65536-46083)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
timer0init();
while(1)
{
disp_shumaguan();
}
}
void timer0() interrupt 1
{
TH0=(65536-46083)/256;
TL0=(65536-46083)%256;
algorithm();
}
展开
 我来答
意法半导体(中国)投资有限公司 2023-06-12
展开全部
char seg7[10]={0xc0,0xf9,0xa4,0xb0,0x9,0x92,0x82,0xf8,0x80} sbit w1=b2^0; sbit w2=b2^1; sbit k1=b3^0; /=1表示键盘按下 char count; void main(){ char flg=0; count =0; P0=0xf; /P0口接共阳极数码管,则低电平LED亮 w1=0; w2=0; /高电平LED亮 while(1){ P0=seg7[count/10];w1=1;w2=0; /显示十位 if(k1=0 & flg=0) flg=1; /键盘按下 delaymS(20); /延时20mS P0=seg7[count%10];w1=0;w2=1; /显示个位 if(k1=0 & flg=1) flg=2; /键盘按下有效 delaymS(20); /延时20mS if(k1=1 & flg=2) /键盘抬起 { count+; flg=0;} if(count>9)count=0; w1=0; w…
S_nian
2012-01-02
知道答主
回答量:36
采纳率:0%
帮助的人:14.2万
展开全部
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

uchar code table_dula[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code table_wela[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf};

sbit dula=P2^6;
sbit wela=P2^7;

uchar shi,fen,miao;
uchar count=0;
//延时
void delay(uint z)
{
uint x;
uchar y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//初始化
void init()
{
dula=1;
P0=table_dula[8];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[1];
wela=0;
delay(5);
dula=1;
P0=table_dula[8];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[2];
wela=0;
delay(5);
dula=1;
P0=table_dula[8];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[3];
wela=0;
delay(5);
dula=1;
P0=table_dula[8];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[4];
wela=0;
delay(5);
dula=1;
P0=table_dula[8];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[5];
wela=0;
delay(5);
dula=1;
P0=table_dula[8];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[6];
wela=0;
delay(5);
}

void disp_shumaguan()
{
dula=1;
P0=table_dula[shi/10];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[1];
wela=0;
delay(5);
dula=1;
P0=table_dula[shi%10];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[2];
wela=0;
delay(5);
dula=1;
P0=table_dula[fen/10];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[3];
wela=0;
delay(5);
dula=1;
P0=table_dula[fen%10];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[4];
wela=0;
delay(5);
dula=1;
P0=table_dula[miao/10];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[5];
wela=0;
delay(5);
dula=1;
P0=table_dula[miao%10];
dula=0;
P0=0xff;
wela=1;
P0=table_wela[6];
wela=0;
delay(5);
}

void algorithm()
{
count++;
if(count == 20)
{
count = 0;
miao++;
if(miao == 60)
{
fen++;
miao = 0;
if(fen == 60)
{
shi++;
fen = 0;
if(shi == 24)
{
shi = 0;
}
}
}
}
}
//上面漏了两个分号,以后书写注意缩进,就会好了。
void timer0init()
{
//下面的寄存器写错了,以后自己注意
//TOMD=0x01;
TMOD=0x01;
TH0=(65536-46083)/256;
TL0=(65536-46083)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
timer0init();
while(1)
{
disp_shumaguan();
}
}
void timer0() interrupt 1
{
TH0=(65536-46083)/256;
TL0=(65536-46083)%256;
algorithm();
}
我是用的Keil 2,现在是可以的了。你自己在看看吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
上海实邦电子科技
2025-08-04 广告
联系方式:13671592388上海实邦电子科技有限公司是一家专业电子产品开发与ODM/OEM/电子制造服务(EMS)企业,具有多年基于消费电子产品、工业自动化产品、机电控制产品的PCBA开发与生产经验,更有多年的单片机开发及工业控制电路设... 点击进入详情页
本回答由上海实邦电子科技提供
骏驰飞车族
2012-01-01 · TA获得超过2711个赞
知道小有建树答主
回答量:685
采纳率:100%
帮助的人:353万
展开全部
void algorithm() 函数中少了几个 } 结尾符号。 使用keil4软件可以直观的看到 { 符号是红色的。说明缺少对应的 } 结尾符号。

void timer0init() 函数中 TMOD输入错误。你看看你的。是TOMD。这个不对,应修改为TMOD。

这个程序挺强大、、、、
追问
呵呵,谢谢啦,可是我又看了一遍也没看出来时哪个却啦啊。还有,你在帮我看看我传的那张图片吧,显示是在中断服务程序里有错啊!再帮我找找到底是哪里错啦,谢谢啦!
追答
我用的是KEIL 4 。出现的提示是 void timer0init() 函数之前有错误。我看了下发现就是缺少结尾符号。你用的是哪个KEIL?

near xxxxx的意思差不多就是xxxx之前的编程有错误。或者是编写时候的笔误,或者是缺少一些符号。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
想当诸侯的小蚂蚁
2012-01-02 · TA获得超过344个赞
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:156万
展开全部
1.void algorithm()最后缺两个 } }
2.TMOD
和楼上的一样,改了就没错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式