找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2428|回复: 4
打印 上一主题 下一主题
收起左侧

IIC总线的程序问题,求大神指教!RT

[复制链接]
跳转到指定楼层
楼主
ID:68777 发表于 2014-11-14 10:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用的是DY-mini 80avr转接51的板子写了一段IIC总线的程序,但是下载过后开发板没有显示,求指导,程序如下,求大神解决,不胜感激
#include<reg52.h>
#define uchar unsigned char
sbit scl=P2^0;
sbit sda=P2^1;
void delay()
{ ; ;}
void init()
{
         sda=1;
         delay();
         scl=1;
         delay();
}
void start()
{
         sda=1;
         delay();
         scl=1;
         delay();
         sda=0;
         delay();
}
void stop()
{
         sda=0;
         delay();
         scl=1;
         delay();
         sda=1;
         delay();
}
void respons()
{
         uchar i;
         scl=1;
         delay();
         while((sda==1)&&(i<255))
         i++;
         scl=0;
         delay();
}
void write_byte(uchar date)
{
         uchar i,temp;
         temp=date;
         for(i=0;i<8;i++)
         {
                 temp=temp<<1;
                 scl=0;
                 delay();
                 sda=CY;
                 delay();
                 scl=1;
                 delay();
         }
         scl=0;
         delay();
         sda=1;
         delay();
}
uchar read_byte()
{
         uchar x,y;
         scl=0;
         delay();
         sda=1;
         delay();
         for(x=0;x<8;x++)
         {
                 scl=1;
                 delay();
                 y=(y<<1)|sda;
                 scl=0;
                 delay();
         }
         return y;
}
void delay1(uchar z)
{
         uchar x,y;
         for(x=z;x>0;x--)
                 for(y=100;y<0;y--);
}
void write_add(uchar address,uchar date)
{
         start();
         write_byte(0xa0);
         respons();
         write_byte(address);
         respons();
         write_byte(date);
         respons();
         stop();
}
uchar read_add(uchar address)
{
         uchar date;
         start();
         write_byte(0xa0);
         respons();
         write_byte(address);
         respons();
         start();
         write_byte(0xa1);
         respons();
         date=read_byte();
         stop();
         return date;
}
void main()
{
         init();
         write_add(23,0xaa);
         delay1(100);
         P1=read_add(23);
         while(1);
}
想把灯点亮,可是没显示
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:64047 发表于 2014-11-14 22:52 | 只看该作者
和我差不多,我也感觉没问题,你程序我感觉就是郭天祥视频的那个
回复

使用道具 举报

板凳
ID:68777 发表于 2014-11-15 22:17 | 只看该作者
狼的救赎 发表于 2014-11-14 22:52
和我差不多,我也感觉没问题,你程序我感觉就是郭天祥视频的那个

我看的就是那个视频,不过我是自己对照芯片资料编的,只可惜。。。。。
回复

使用道具 举报

地板
ID:67992 发表于 2014-11-19 11:21 | 只看该作者
程序没问题。请查时钟和数据接口有无搞错,是否挂接其它芯片。
回复

使用道具 举报

5#
ID:51088 发表于 2014-11-19 12:42 来自手机 | 只看该作者
是的,建议做成最小系统来控制。这样会比较稳定一点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表