i2cs.inc Author:
Jonathan Weaver, jonw0224@netscape.net Date:
7/10/2003 Version:
1.0 Filename:
i2cs.inc Description:
Software immulated I2C Slave Device. I2CPort sets I/O port for I2C. CLK sets clock pin. SDA sets data pin.
External Variable List
;external CLK |
CLK is a literal which determines which pin will be the clock signal |
;external CLK |
SDA is a literal which determines which pin will be the data signal |
;external cntr |
Temporary Counter, declare as register in main program |
;external I2CPORT |
I2CPORT is a literal which determines which port will be used as the I2C port. Example setup for CLK = RB6 and SDA = RB7.
CLK equ 0x06 SDA equ 0x07 I2CPORT equ PORTB |
;external i2csdata |
I2C Data byte, declare as register in main program
|
Procedure Heading List
Procedure Descriptions
I2CSGetAck |
Description: |
Detects if the master sent an acknowledge. Expects: to be called when clock is low |
Returns: |
0x00 in WREG if Ack detected. 0xFF in WREG if Ack not detected |
I2CSGetByte |
Description: |
Recieves a byte and sends an acknowledge. Recieved byte appears in i2csdata |
Returns: |
0x00 in WREG |
I2CSGetStop |
Description: |
Tests if the next clock cycle is stop, start, or continued transmission. |
Returns: |
If Stop detected, returns hFF in WREG. If Start detected, returns hFE in WREG. If continued transmission, recieves next byte and returns h00 in WREG. Next byte appears in i2csdata |
I2CSPutAck |
Description: |
Send an acknowledge. |
Returns: |
0x00 in WREG |
I2CSPutByte |
Description: |
Sends a byte. Expects: the byte to send to be in i2csdata. |
Returns: |
0x00 in WREG if Ack detected. 0xFF in WREG if Ack not detected |
I2CSWaitStart |
Description: |
Waits for a start condition. Never returns unless Start detected and byte recieved. |
Returns: |
0x00 in WREG. Byte returned in i2csdata |
|