ребят..ну что за детский сад? тяжело скачать кодевижн?
вот заголовочный файл
Код: Выделить всё
/*
CodeVisionAVR C Compiler
(C) 1998-2000 Pavel Haiduc, HP InfoTech S.R.L.
Prototypes for I2C bus master functions
BEFORE #include -ING THIS FILE YOU
MUST DECLARE THE I/O ADDRESS OF THE
DATA REGISTER OF THE PORT AT WHICH
THE I2C BUS IS CONNECTED AND
THE DATA BITS USED FOR SDA & SCL
EXAMPLE FOR PORTB:
#asm
.equ __i2c_port=0x18
.equ __sda_bit=3
.equ __scl_bit=4
#endasm
#include <i2c.h>
*/
#ifndef _I2C_INCLUDED_
#define _I2C_INCLUDED_
#pragma used+
void i2c_init(void);
unsigned char i2c_start(void);
void i2c_stop(void);
unsigned char i2c_read(unsigned char ack);
unsigned char i2c_write(unsigned char data);
#pragma used-
#endif
из которого видно что это сугубо внутренняя реализация библиотеки и что он будет генерить знает только он сам
хотя вот например тини 13 и i2c
вот какие функции оно генерит
Код: Выделить всё
_i2c_init:
cbi __i2c_port,__scl_bit
cbi __i2c_port,__sda_bit
sbi __i2c_dir,__scl_bit
cbi __i2c_dir,__sda_bit
rjmp __i2c_delay2
_i2c_start:
cbi __i2c_dir,__sda_bit
cbi __i2c_dir,__scl_bit
clr r30
nop
sbis __i2c_pin,__sda_bit
ret
sbis __i2c_pin,__scl_bit
ret
rcall __i2c_delay1
sbi __i2c_dir,__sda_bit
rcall __i2c_delay1
sbi __i2c_dir,__scl_bit
ldi r30,1
__i2c_delay1:
ldi r22,13
rjmp __i2c_delay2l
_i2c_stop:
sbi __i2c_dir,__sda_bit
sbi __i2c_dir,__scl_bit
rcall __i2c_delay2
cbi __i2c_dir,__scl_bit
rcall __i2c_delay1
cbi __i2c_dir,__sda_bit
__i2c_delay2:
ldi r22,27
__i2c_delay2l:
dec r22
brne __i2c_delay2l
ret
_i2c_read:
ldi r23,8
__i2c_read0:
cbi __i2c_dir,__scl_bit
rcall __i2c_delay1
__i2c_read3:
sbis __i2c_pin,__scl_bit
rjmp __i2c_read3
rcall __i2c_delay1
clc
sbic __i2c_pin,__sda_bit
sec
sbi __i2c_dir,__scl_bit
rcall __i2c_delay2
rol r30
dec r23
brne __i2c_read0
ld r23,y+
tst r23
brne __i2c_read1
cbi __i2c_dir,__sda_bit
rjmp __i2c_read2
__i2c_read1:
sbi __i2c_dir,__sda_bit
__i2c_read2:
rcall __i2c_delay1
cbi __i2c_dir,__scl_bit
rcall __i2c_delay2
sbi __i2c_dir,__scl_bit
rcall __i2c_delay1
cbi __i2c_dir,__sda_bit
rjmp __i2c_delay1
_i2c_write:
ld r30,y+
ldi r23,8
__i2c_write0:
lsl r30
brcc __i2c_write1
cbi __i2c_dir,__sda_bit
rjmp __i2c_write2
__i2c_write1:
sbi __i2c_dir,__sda_bit
__i2c_write2:
rcall __i2c_delay2
cbi __i2c_dir,__scl_bit
rcall __i2c_delay1
__i2c_write3:
sbis __i2c_pin,__scl_bit
rjmp __i2c_write3
rcall __i2c_delay1
sbi __i2c_dir,__scl_bit
dec r23
brne __i2c_write0
cbi __i2c_dir,__sda_bit
rcall __i2c_delay1
cbi __i2c_dir,__scl_bit
rcall __i2c_delay2
ldi r30,1
sbic __i2c_pin,__sda_bit
clr r30
sbi __i2c_dir,__scl_bit
rjmp __i2c_delay1
отсюда можно сделать вывод что как-то таки это можно было бы и обозвать переменной...типа задекларировать какой-то чар в определенный регистр ...и при обращении через этот чар указывать номер порта или битов....Но помоему операнд sbi вторым параметром принимает номер бита а не регистр откуда нужно этот номер прочитать....следовательно....это не сделать....