打印
[应用相关]

keil代码

[复制链接]
677|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xxmmi|  楼主 | 2019-5-9 22:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC开发板上的一段程序一直出错,正常情况下是P1口的第一个LED亮,但是执行时什么都不亮。
代码如下:#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit sda=P2^0;
sbit scl=P2^1;

uchar a;


//define 函数
void delay();
void start();
void response();
uchar read_byte();
void write_byte(uchar dat);
void init();
void stop();
void delay1(uint z);

void delay()
{
        uint i,j;
        for(i=0;i<1;i++)
  for(j=0;j<1;j++);
}

void start()
{
        sda=1;
        delay();
        scl=1;
        delay();        
        sda=0;
        delay();
        
}

void stop()
{
        sda=0;
        delay();
        scl=1;
        delay();
        sda=1;
        delay();
}

void response()
{
        uchar i;
        scl=1;
        delay();
        while((sda==1)&&(i<255))i++;
        scl=0;//destroy the condition of response, to avoid response.
        delay();
        
}

uchar read_byte()
{
        uchar i,j,k;
        scl=0;
        delay();
        sda=1;
        delay();
        for(i=0;i<8;i++)
        {
                scl=1;delay();
                k=((k<<1)|sda);
                scl=0;delay();
        }
        return k;
}

void write_byte(uchar date)
{
        uchar i,temp;
        temp=date;
        for(i=0;i<8;i++)
        {
                temp=temp<<1;
                scl=0;//写byte时把时钟拉低
                delay();
                sda=CY;// spill registor
                delay();
                scl=1;
                delay();
                        
        }
        scl=0;
        delay();
        sda=1;
        delay();
}

void init()//bus initation                  
{
        scl=1;
        delay();
        sda=1;
        delay();
}

void main()
{
init();
start();
write_byte(0xa0);
response();
write_byte(3);
response();
write_byte(0xfe);
response();
stop();

delay1(100);

start();
write_byte(0xa0);
response();
write_byte(3);
response();
start();
write_byte(0xa1);
response();
a=read_byte();
P1=a;
response();
stop();
while(1);
        
}

void delay1(uint z){
uint i,j;
for(i=0;i<z;i++)
for(j=0;j<100;j++);
}

使用特权

评论回复
沙发
bqyj| | 2019-5-9 22:33 | 只看该作者
找错地方了,你这个不是ST的。你可以去侃单片机版块发

使用特权

评论回复
板凳
wenfen| | 2019-5-9 22:38 | 只看该作者
这个不是32的吧,这是51的

使用特权

评论回复
地板
chenho| | 2019-5-9 22:42 | 只看该作者
程序跟踪下看看;看看A的值到底是多少;

使用特权

评论回复
5
zwll| | 2019-5-9 22:44 | 只看该作者

你a是多少啊,

使用特权

评论回复
6
juventus9554| | 2019-5-9 22:47 | 只看该作者
你这不是51吗

使用特权

评论回复
7
xxmmi|  楼主 | 2019-5-9 22:50 | 只看该作者
犯了低级错误……结贴啦,多谢各位

使用特权

评论回复
8
yzq13246068880| | 2019-5-14 14:41 | 只看该作者

使用特权

评论回复
9
磨砂| | 2019-6-12 09:05 | 只看该作者
估计又是C语言的低级错误

使用特权

评论回复
10
晓伍| | 2019-6-12 09:09 | 只看该作者
解决问题就好 这个问题本来也不是什么问题

使用特权

评论回复
11
八层楼| | 2019-6-12 09:14 | 只看该作者
这都不叫事儿  呵呵

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

369

主题

4278

帖子

2

粉丝