共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 跳转至页
回复
有奖活动 | |
---|---|
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
【有奖活动】震撼来袭!这场直播将直击工程师的心灵! | |
“我想要一部加热台”活动,不花钱赢取开发好工具!活动开始了哦 | |
【有奖活动】伙伴们:您的“需求”解决了吗? | |
抽奖了,抽奖了,金升阳医疗电源 |
打赏帖 | |
---|---|
【换取手持数字示波器】+与同事对定时器输出相位可调PWM移相全桥控制分享被打赏50分 | |
【换取手持数字示波器】+LP-MSPM0L1306开发板试用体验+串口被打赏40分 | |
CC-RL编译器相关问题求助被打赏10分 | |
【换取手持数字示波器】+与同事对ESP-12开发调试经验分享被打赏50分 | |
【换取手持数字示波器】+同事tek示波器调试spi解析被打赏50分 | |
【换取手持数字示波器】+2.6寸墨水屏调试经验被打赏50分 | |
换取手持数字示波器+个人开关电源的设计经验被打赏50分 | |
【换取手持数字示波器】+【APT32F173测评】+URAT被打赏20分 | |
【换取手持数字示波器】CH32X035的定时器以及外部中断体验被打赏50分 | |
【换取手持数字示波器】CH32X035搭建开发环境(RISC-V)被打赏50分 |