打印
[开发工具]

跪求大神看看keil代码

[复制链接]
612|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lesliexy|  楼主 | 2017-11-29 16:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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++);
}
沙发
antusheng| | 2017-11-29 17:56 | 只看该作者
找错地方了,你这个不是ST的。你可以去侃单片机版块发

使用特权

评论回复
板凳
一路向北lm| | 2017-11-29 21:08 | 只看该作者
这个不是32的吧,这是51的

使用特权

评论回复
地板
mmuuss586| | 2017-11-29 22:05 | 只看该作者
程序跟踪下看看;看看A的值到底是多少;

使用特权

评论回复
5
caijie001| | 2017-11-30 09:09 | 只看该作者
你a是多少啊,

使用特权

评论回复
6
husoffer| | 2017-11-30 09:58 | 只看该作者
你这不是51吗

使用特权

评论回复
7
Ketose| | 2017-11-30 11:44 | 只看该作者
你这是直接抄别人的代码吧。自己都不去理解,就拿上来问。

使用特权

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

本版积分规则

2

主题

11

帖子

0

粉丝