[应用相关] keil代码

[复制链接]
898|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的值到底是多少;
zwll 发表于 2019-5-9 22:44 | 显示全部楼层

你a是多少啊,
juventus9554 发表于 2019-5-9 22:47 | 显示全部楼层
你这不是51吗
 楼主| xxmmi 发表于 2019-5-9 22:50 | 显示全部楼层
犯了低级错误……结贴啦,多谢各位
yzq13246068880 发表于 2019-5-14 14:41 | 显示全部楼层
磨砂 发表于 2019-6-12 09:05 | 显示全部楼层
估计又是C语言的低级错误
晓伍 发表于 2019-6-12 09:09 | 显示全部楼层
解决问题就好 这个问题本来也不是什么问题
八层楼 发表于 2019-6-12 09:14 | 显示全部楼层
这都不叫事儿  呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则

369

主题

4278

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部