打印

求教。16f1823 iic读写程序出错

[复制链接]
2439|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
胡同那有鬼|  楼主 | 2012-7-26 13:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是我参照16f877a写的16f1823 iic主模式程序。在proteus仿真时候发现错误,但是不知道怎么办?请大家看看我是不是从一开始就写错了!!求指点!!谢谢。。
#include<pic.h>
__CONFIG(0X3B31);
#define uchar unsigned char
#define uint unsigned int
#define addr 0xaa
const uchar data[4]={0b11100001,0b11010010,0b10110100,0b01111000};
uchar read_data[4];
void delay(uchar x)
{
        char i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);
}
void init()
{
        TRISC=0x03;
        PORTC=0x00;
        SSP1CON1=0X38;
        SSP1CON2=0;
        SSP1CON3=0X60;;
        SSP1STAT=0X80;
        SSP1MSK=0;
        SSP1ADD=9;
       
}
void write()
{
        SSP1IF=0;
        SEN=1;
        while(!SSP1IF);
                SSP1IF=0;
        SSP1BUF=0XA0;
        while(!SSP1IF);
                SSP1IF=0;
        SSP1BUF=addr;
        while(!SSP1IF);
                SSP1IF=0;

                SSP1BUF=0b00111100;
                while(!SSP1IF);
                        SSP1IF=0;

        PEN=1;
        while(!SSP1IF);
                SSP1IF=0;
}
void read()
{


        SSP1IF=0;
        SEN=1;     
        while(!SSP1IF);
                SSP1IF=0;
        SSP1BUF=0XA0;
        while(!SSP1IF);
                SSP1IF=0;
        SSP1BUF=addr;
        while(!SSP1IF);
                SSP1IF=0;
                RSEN=1;
        while(!SSP1IF);
                SSP1IF=0;
        SSP1BUF=0XA1;
        while(!SSP1IF);
                SSP1IF=0;

                RCEN=1;
                  while(!SSP1IF);   

                read_data[0]=SSP1BUF;
                while(!SSP1IF);
                        SSP1IF=0;

                        ACKDT=1;

                ACKEN=1;
                while(!SSP1IF);
                        SSP1IF=0;

        PEN=1;
        while(!SSP1IF);
                SSP1IF=0;
}
void disp()
{
        uint i=0;
        for(i=0;i<4;i++)
        {
                PORTC=read_data[i];
                delay(100);
        }
}
void main()
{
        init();

        write();

        delay(100);
        read();       


        while(1)
        {
                PORTC=read_data[0];//disp();
        }
}
沙发
yesterday1998| | 2012-7-26 13:53 | 只看该作者
为了攒够要下载东西的积分,回帖。

使用特权

评论回复
板凳
胡同那有鬼|  楼主 | 2012-7-26 14:04 | 只看该作者
···

使用特权

评论回复
地板
longjun3121| | 2012-7-26 16:13 | 只看该作者
程序怎么这么写呢?应该可以写个子程序吧!

使用特权

评论回复
5
胡同那有鬼|  楼主 | 2012-7-26 16:19 | 只看该作者
4# longjun3121 关键是它写的好像出错了啊!proteus的IIC调试界面出现的是“s  sr  ? ? ?p”之类的

使用特权

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

本版积分规则

0

主题

7

帖子

0

粉丝