共2条
1/1 1 跳转至页

问
用的是keil V3的,在编译程序时不知何故总有一些语句会被跳过去。请各位高手指点一
下 答 1: 真的跳过去了吗?你再好好想想 答 2: 单步运行跳过 答 3: 可能是编译软件的问题.我是个初学者,请问我这程序问题出在哪里?它不会中断.
#include<reg2051.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define count 4
uchar buffer[count];
uchar number;
sbit clk=P3^3;
sbit str=P3^4;
sbit dat=P3^5;
void delay(uint k)
{
uint i,j;
for (i=0;i<10;i++)
for (j=k;j>0;j--);
}
void send()
{
uchar i;
for(i=0;i<count;i++)
{
SCON=0x80;
PCON=0x80;
SBUF=buffer[i];
while(1)
{
if(TI)
{
TI=0;
break;
}
}
}
}
void s4094 (uchar k)
{
uchar i;
str=0;
for(i=0;i<8;i++)
{
clk=0;
if(_crol_(k,i)&0x80)
dat=1;
else dat=0;
clk=1;
}
str=1;
}
void display()
{
P1=buffer[1];
buffer[2]&=0x84;
P3=buffer[2];
s4094(buffer[3]);
}
void sdisplay()
{
uchar i;
for(i=0;i<0xff;i++)
{
buffer[1]=0x49;
buffer[2]=0x47;
buffer[3]=0x24;
display();
delay(i);
buffer[1]=0x92;
buffer[2]=0x43;
buffer[3]=0x49;
display();
delay(0xff-i);
}
for(i=0;i<0xff;i++)
{
buffer[1]=0x24;
buffer[2]=0xc3;
buffer[3]=0x92;
display();
delay(i);
buffer[1]=0x49;
buffer[2]=0x47;
buffer[3]=0x24;
display();
delay(0xff-i);
}
for(i=0;i<0xff;i++)
{
buffer[1]=0x92;
buffer[2]=0x43;
buffer[3]=0x49;
display();
delay(i);
buffer[1]=0x24;
buffer[2]=0xc3;
buffer[3]=0x92;
display();
delay(0xff-i);
}
buffer[1]=0x92;
buffer[2]=0x43;
buffer[3]=0x49;
display();
}
void receive()interrupt 4 using 3
{
buffer[number]=SBUF;
number++;
RI=0;
}
void init()
{
buffer[1]=0xff;
buffer[2]=0xff;
buffer[3]=0xff;
display();
number=0;
SCON=0x90;
PCON=0x80;
delay(1000);
}
void main()
{
init();
while(1)
{
EA=1;
ES=1;
REN=1;
if(number>=3)
{
ES=0;
switch(buffer[0])
{
case 0x00:
send();
display();
number=0;
break;
case 0xff:
send();
sdisplay();
number=0;
break;
case 0x01:
display();
number=0;
break;
default:buffer[0]--;
send();
number=0;
break;
}
}
}
}
下 答 1: 真的跳过去了吗?你再好好想想 答 2: 单步运行跳过 答 3: 可能是编译软件的问题.我是个初学者,请问我这程序问题出在哪里?它不会中断.
#include<reg2051.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define count 4
uchar buffer[count];
uchar number;
sbit clk=P3^3;
sbit str=P3^4;
sbit dat=P3^5;
void delay(uint k)
{
uint i,j;
for (i=0;i<10;i++)
for (j=k;j>0;j--);
}
void send()
{
uchar i;
for(i=0;i<count;i++)
{
SCON=0x80;
PCON=0x80;
SBUF=buffer[i];
while(1)
{
if(TI)
{
TI=0;
break;
}
}
}
}
void s4094 (uchar k)
{
uchar i;
str=0;
for(i=0;i<8;i++)
{
clk=0;
if(_crol_(k,i)&0x80)
dat=1;
else dat=0;
clk=1;
}
str=1;
}
void display()
{
P1=buffer[1];
buffer[2]&=0x84;
P3=buffer[2];
s4094(buffer[3]);
}
void sdisplay()
{
uchar i;
for(i=0;i<0xff;i++)
{
buffer[1]=0x49;
buffer[2]=0x47;
buffer[3]=0x24;
display();
delay(i);
buffer[1]=0x92;
buffer[2]=0x43;
buffer[3]=0x49;
display();
delay(0xff-i);
}
for(i=0;i<0xff;i++)
{
buffer[1]=0x24;
buffer[2]=0xc3;
buffer[3]=0x92;
display();
delay(i);
buffer[1]=0x49;
buffer[2]=0x47;
buffer[3]=0x24;
display();
delay(0xff-i);
}
for(i=0;i<0xff;i++)
{
buffer[1]=0x92;
buffer[2]=0x43;
buffer[3]=0x49;
display();
delay(i);
buffer[1]=0x24;
buffer[2]=0xc3;
buffer[3]=0x92;
display();
delay(0xff-i);
}
buffer[1]=0x92;
buffer[2]=0x43;
buffer[3]=0x49;
display();
}
void receive()interrupt 4 using 3
{
buffer[number]=SBUF;
number++;
RI=0;
}
void init()
{
buffer[1]=0xff;
buffer[2]=0xff;
buffer[3]=0xff;
display();
number=0;
SCON=0x90;
PCON=0x80;
delay(1000);
}
void main()
{
init();
while(1)
{
EA=1;
ES=1;
REN=1;
if(number>=3)
{
ES=0;
switch(buffer[0])
{
case 0x00:
send();
display();
number=0;
break;
case 0xff:
send();
sdisplay();
number=0;
break;
case 0x01:
display();
number=0;
break;
default:buffer[0]--;
send();
number=0;
break;
}
}
}
}
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【我踩过的那些坑】结构堵孔导致的喇叭无声问题被打赏50分 | |
【我踩过的那些坑】分享一下调试一款AD芯片的遇到的“坑”被打赏50分 | |
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 |