⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tm24cl02.lst

📁 首先pic和铁电24c02通讯
💻 LST
字号:
     1: #include"lcd.h"

     2: #include"pic18fxx2.h"

     3: 

     4: //#define uchar unsigned char

     5: //#define uint unsigned int

     6: //#define ulong unsigned long

     7: //void delay2(uchar delay_temp);   //长延时

     8: //void delaym(uchar delaym_temp);  //短延时

     9: //void sta(void);//启动IIC总线

    10: //void stop(void);//停止IIC总线数据传送

    11: //void mack(void);//发送应答位

    12: //void mnack(void);//发送非应答位

    13: //uchar cack(void);//应答位检查

    14: //void wrbyt(uchar date_24c02);//向SDA线上发送一个数据字节

    15: //uchar rdbyt(void);//从SDA线上读取一个数据字节

    16: unsigned int ii;

    17: 

    18: void delay2(uchar delay_temp)//延时子程序

    19: {

    20:         uchar i,j;

    21:         for(i=0;i<delay_temp;i++)

    22:         {

    23:                 for(j=0;j<200;j++);

    24:         }

    25: }

    26: 

    27: void delaym(uchar delaym_temp)//延时子程序

    28: {

    29:         uchar i;

    30:         for(i=0;i<delaym_temp;i++);

    31: }

    32: 

    33: void sta(void)//启动IIC总线

    34: {

    35:         slk=0;

    36:     sda=1;

    37:         slk=1;

    38:         delaym(1);

    39:         sda=0;

    40:         delaym(1);

    41:         slk=0;

    42: }

    43: 

    44: void stop(void)//停止IIC总线数据传送

    45: {

    46:         slk=0;

    47:     sda=0;

    48:         slk=1;

    49:         delaym(1);

    50:         sda=1;

    51:         delaym(1);

    52:         slk=0;

    53: }

    54: 

    55: /*

    56: void mack(void)//发送应答位

    57: {

    58:         at24c02_sda=0;

    59:         at24c02_scl=1;

    60:         delaym(1);

    61:         at24c02_scl=0;

    62:         at24c02_sda=1;

    63: }

    64: */

    65: 

    66: uchar cack(void)//应答位检查

    67: {

    68:         uchar i;

    69:         i=0x00;

    70:         sda=1;

    71:         slk=1;

    72:         if(sda==1)i=0xff;

    73:         slk=0;

    74:         return i;

    75: }

    76: 

    77: void mnack(void)//发送非应答位

    78: {

    79:         sda=1;

    80:         slk=1;

    81:         delaym(1);

    82:         slk=0;

    83:         sda=0;

    84: }

    85: 

    86: void wrbyt(uchar w24)//向SDA线上发送一个数据字节

    87: {

    88:         uchar i,j;

    89:         j=0x80;

    90:         for(i=0;i<8;i++)

    91:         {

    92:                 if((w24&j)==0)

    93:                 {

    94:                         sda=0;

    95:                         slk=1;

    96:                         delaym(1);

    97:                         slk=0;

    98:                 }

    99:                 else

   100:                 {

   101:                         sda=1;

   102:                         slk=1;

   103:                         delaym(1);

   104:                         slk=0;

   105:                         sda=0;

   106:                 }

   107:                 j=j>>1;

   108:         }

   109: }

   110: 

   111: unsigned char  rd()    //从SDA线上读取一个数据字节

   112: {

   113: uchar i,j;

   114:         j=0x00;

   115:         for(i=0;i<8;i++)

   116:         {

   117:                 sda=1;

   118:                 slk=1;

   119:                 if(sda==0)

   120:                 {

   121:                         j=j&0xfe;

   122:                 }

   123:                 else

   124:                 {

   125:                         j=j|0x01;

   126:                 }

   127:                 if(i!=7)j=j<<1;

   128:                 slk=0;

   129:         }

   130:         return j;

   131: }

   132: 

   133: uchar wr(unsigned char dd)

   134: {

   135: uchar    m;

   136:     for(ii=0;ii<2;ii++)//写入0x55

   137:         {

   138:                 sta();

   139:                 wrbyt(0xa0);//写24C02

   140:         if(cack()!=0)break;

   141:                 wrbyt((uchar)ii);//地址

   142:          //wrbyt(0x00);

   143:             if(cack()!=0)break;

   144:                 wrbyt(dd);//写数据

   145:                 if(cack()!=0)break;

   146:                 stop();

   147:                 delay2(20);//停止到启动信号之间需要延时

   148:         }

   149:         for(ii=0;ii<2;ii++)//读出并校验0x55

   150:         {

   151:                 sta();

   152:                 wrbyt(0xa0);

   153:                 if(cack()!=0)break;

   154:                 wrbyt((uchar)ii);//地址

   155:         //wrbyt(0x00);

   156:                 if(cack()!=0)break;

   157:                 sta();

   158:                 wrbyt(0xa1);//读24C02

   159:                 if(cack()!=0)break;

   160:         m=rd();

   161:         if(m==dd)break;

   162:                 //delaym(1);//  if(temp_1!=dd)break;

   163:         mnack();

   164:                 stop();

   165:                 delay2(20);

   166:         }

   167: return m;

   168: }

   169: 

   170: 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -