1457|7

9

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求助,检查程序没有问题但是这个错误怎么改!! [复制链接]

#include#include#define uchar unsigned char#define uint unsigned intunsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90x0xff};unsigned char dis_buf[4];uint int0_cnt=0;void update_disbuf();void delayms(unit j);void main(void){IE=0X81;IT0=1;P0=0xff;P1=0;dis_buf[0]=dis_code[0];dis_buf[1]=dis_code[0];dis_buf[2]=dis_code[0];dis_buf[3]=dis_code[0];while(1){P0=dis_buf[3];P1=0x01;delayms(5);P0=0xff;P0=dis_buf[2];P1=0x02;delayms(5);P0=0xff;P0=dis_buf[1];P1=0x04;delayms(5);P0=0xff;P0=dis_buf[0];P1=0x08;delayms(5);P0=0xff;}}void ex_inx()interrupt0{EX0=0;int_cnt++;if(int0_cnt>9999)int0_cnt=0;dis_buf[3]=dis_code[int0_cnt/1000];dis_buf[2]=dis_code[int0_cnt%1000/100];dis_buf[1]=dis_code[int0_cnt%100/10];dis_buf[0]=dis_code[int0_cnt%10];EX0 =1;void delayms(uint j){uchar i;for (;j>0;j--){i=250;while(--i);i=249;while(--i);}}

SJOF}MDOX26FP05MW2L$2H8(1).png (0 Bytes, 下载次数: 0)

SJOF}MDOX26FP05MW2L$2H8(1).png

16552798852014798596524942677546.jpg (0 Bytes, 下载次数: 0)

16552798852014798596524942677546.jpg

16552799302165860828957851439816.jpg (0 Bytes, 下载次数: 0)

16552799302165860828957851439816.jpg
此帖出自51单片机论坛

最新回复

C,C++都是区分大小写的,另外程序编码设置也有关系。   详情 回复 发表于 2022-10-8 08:49
点赞 关注
 

回复
举报

9

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

显示说的是for(;j>0;j--)这个语句有问题

此帖出自51单片机论坛
 
 
 

回复

1798

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 

void delayms(uint j);前面的uint拼写错误

此帖出自51单片机论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(初级)

4
 
sint27 发表于 2022-6-15 17:16 void delayms(uint j);前面的uint拼写错误

嗯嗯那里改了但是还是这样

16552882290242495092513280105668.jpg (0 Bytes, 下载次数: 0)

16552882290242495092513280105668.jpg
此帖出自51单片机论坛
 
 
 

回复

1798

帖子

0

TA的资源

五彩晶圆(初级)

5
 

中断函数少了一个大括号 } 吧

我看你有不少需要优化的,包括编码格式,空格,路径最好不要有中文

还是要多学习例程

此帖出自51单片机论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

6
 

重新编程序呗……

此帖出自51单片机论坛
 
 
 

回复

210

帖子

17

TA的资源

一粒金砂(高级)

7
 
本帖最后由 suncat 于 2022-8-25 14:03 编辑

你的代码多处错误

void update_disbuf();这个函数在哪里实例化了?虽然这行代码不会出错。

void delayms(unit j);中unit是什么东西?不应该是uint吗?

int_cnt++;中int_cnt在哪里声明了?不应该是int0_cnt吗?

 

另外作为初学者,最好养成良好习惯,给代码加注释。

 

写代码太不仔细了。以下是给你修改了的代码,逻辑是否正确没看。

#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
unsigned char dis_buf[4];
uint int0_cnt=0;

void update_disbuf();
void delayms(uint j);

void main(void){
    IE=0X81;
    IT0=1;
    P0=0xff;
    P1=0;
    dis_buf[0]=dis_code[0];
    dis_buf[1]=dis_code[0];
    dis_buf[2]=dis_code[0];
    dis_buf[3]=dis_code[0];
    while(1){
        P0=dis_buf[3];
        P1=0x01;
        delayms(5);
        P0=0xff;
        P0=dis_buf[2];
        P1=0x02;
        delayms(5);
        P0=0xff;
        P0=dis_buf[1];
        P1=0x04;
        delayms(5);
        P0=0xff;
        P0=dis_buf[0];
        P1=0x08;
        delayms(5);
        P0=0xff;
    }
}

void ex_inx() interrupt 0 {
    EX0=0;
    int0_cnt++;
    if(int0_cnt>9999)
        int0_cnt=0;
    dis_buf[3]=dis_code[int0_cnt/1000];
    dis_buf[2]=dis_code[int0_cnt%1000/100];
    dis_buf[1]=dis_code[int0_cnt%100/10];
    dis_buf[0]=dis_code[int0_cnt%10];
    EX0 =1;
}

void delayms(uint j){
    uchar i;
    for (;j>0;j--){
        i=250;
        while(--i);
        i=249;
        while(--i);
    }
}

此帖出自51单片机论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

8
 

C,C++都是区分大小写的,另外程序编码设置也有关系。

此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表