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

📄 iic.lst

📁 本程式通过4*4键盘的输入控制步进马达的正转和反转,停止转动以及加速和减速.
💻 LST
字号:
     1: 

     2: /* ---------------------GESTIONE BUS I2C--------------------- */

     3: /* Author : toniobr             Date : 11/2003                                            */

     4: /* ---------------------------------------------------------- */

     5: 

     6: #include        <pic.h>

     7: #include        "delay.h"

     8: #define PORTBIT(adr,bit)        ((unsigned)(&adr)*8+(bit))

     9: 

    10: static bit SCL @ PORTBIT(PORTA,0);              //porta per i dati rx e tx

    11: static bit SDA @ PORTBIT(PORTA,1);              //porta per il clock

    12: static bit TRISA_SDA @ PORTBIT(TRISA,1);

    13: 

    14: 

    15: #define TCLOCK 5        // 0-255 uSec (5 uS equivale a una frequenza di 100 Khz)

    16: 

    17: /*Comando start*/

    18: iic_start()

    19: {       

    20:         TRISA_SDA=0;            

    21:         SDA=1;

    22:         SCL=1;

    23:         DelayUs(TCLOCK);

    24:         SDA=0;

    25:         DelayUs(TCLOCK);

    26:         SCL=0;

    27:         DelayUs(TCLOCK);

    28: }

    29: 

    30: /* Comando stop*/

    31: iic_stop()

    32: {               

    33:         TRISA_SDA=0;

    34:         SCL=1;

    35:         DelayUs(TCLOCK);

    36:         SDA=1;

    37: }

    38: 

    39: /* Legge lo stato del bit di acknoveldge*/

    40: char iic_r_ack()

    41: {               

    42:         TRISA_SDA=1;

    43:         SCL=1;

    44:         DelayUs(TCLOCK);

    45:         if(!SDA){

    46:                 SCL=0;

    47:                 DelayUs(TCLOCK);

    48:                 return 0;

    49:         }

    50:         else{

    51:                 SCL=0;

    52:                 DelayUs(TCLOCK);

    53:                 return 1;

    54:         }

    55: }

    56: 

    57: /* Invia il bit di ack */

    58: iic_w_ack(char value)

    59: {               

    60:         TRISA_SDA=0;

    61:         SDA=value;

    62:         SCL=1;

    63:         DelayUs(TCLOCK);

    64:         SCL=0;

    65:         DelayUs(TCLOCK);

    66: }

    67: 

    68: /* Scrive su un device*/

    69: iic_write(char value)

    70: {               

    71:         char i;

    72:         TRISA_SDA=0;

    73:         for(i=1;i<=8;i++)       //invia gli 8 bit

    74:         {

    75:                 //SDA=(bit)(value & 0b10000000);                //msb first  da provare

    76:                 if (value&0b10000000)

    77:                         SDA=1;

    78:                 else

    79:                         SDA=0;

    80:                 value=value<<1;

    81:                 SCL=1;

    82:                 DelayUs(TCLOCK);

    83:                 SCL=0;

    84:                 DelayUs(TCLOCK);

    85:         }       

    86: }

    87: 

    88: /* Legge da un device*/

    89: char iic_read()

    90: {               

    91:         char i;

    92:         char value=0;

    93:         TRISA_SDA=1;

    94:         for(i=1;i<=8;i++)       //riceve gli 8 bit

    95:         {

    96:                 SCL=1;

    97:                 value=value<<1;

    98:                 value|=SDA;             //msb first

    99:                 DelayUs(TCLOCK);

   100:                 SCL=0;

   101:                 DelayUs(TCLOCK);

   102:         }

   103:         return value;

   104: }

⌨️ 快捷键说明

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