本帖最后由 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);
}
}
|