АНМ включати в Keil c51

C

Chetan07

Guest
Шановні всі
Я з коду, написаного для EEPROM (24cxx) на Асемблері для 8051.Я хочу включити його в інші мої програми, яка написана на мові C з використанням languague Keil c51.Я маю на увазі я хочу включити ASM-файл у C, як це зробити?

будь-якої відповідь буде корисно

 
Orange uruchomił w Krakowie pilotaż ultrarszybkiego mobilnego dostępu do internetu w technologii HSPA+ Dual Carrier 42 Mbps. Usługa umożliwia najszybszą na polskim rynku mobilną transmisję danych.

Read more...
 
Ви можете вставляти код в збірці з кодом, як це.
з кодом;
з кодом;
.
.

# Pragma АНМ

Асамблея код
Асамблея код
.
.
# Pragma endasm
з кодом;
з кодом;
Будь ласка, клацніть правою кнопкою миші на файл з показані на джерело групи показали на лівій стороні, і піти на цю сторінку для роботи з файлами xxx.c.Будь ласка, зробіть генерує Асемблер SRC файлів і Зберіть SRC файлу включений (обидва позначені).Додати c51ms.lib у вихідному групи.Я думаю, ви можете додати деякі інші LIB файли also.And ви зробили.

Включити відповідні бібліотеки файлів у вихідному групи.
C51S.LIB:
Маленька модель бібліотеки без плаваючою точкою математики.
C51C.LIB: Компактна модель бібліотеки без плаваючою точкою математики.
C51L.LIB: Великі моделі бібліотеку без плаваючою точкою математики.
C51FPS.LIB:
Маленька модель бібліотеки з плаваючою точкою математики.
C51FPC.LIB: Компактна модель бібліотеки з плаваючою точкою математики.
C51FPL.LIB: Великі моделі бібліотеки з плаваючою точкою математики.
Останній раз редагувався vamanan від 09 травня 2006 22:29;, всього редагувався 1 раз

 
Що Keil C51 легко включати АНМ полягає в тому, щоб створити окремий модуль з з манекенів функція приймає параметри, які ви хотіли б перейти до збирачі код і все, що ви хотіли б повернутися.

Set the compiler option to generate asm source as an output.

Тепер у вас є шаблон в АНМ, в якому ви можете написати ваші АНМ.Просто ввімкніть цей файл, як частина вашого проекту, і це все, що з ним.Просто до речі, Keil робить дуже eficient код, швидше за все, краще, ніж більшість кодіровщіков АНМ можемо зробити.Я використав його для близько 8 років, і вважаю, що ви можете робити все, на С без використання АНМ.

 
Як встановити опцію компілятора?. Вибачте, якщо це нерозумно сопки вопрос к вам.

 
Використання редактора
І включити АНМ коду в цьому з кодом U, якщо хочете, щоб завантажити цей код зі спалахом там немає проблеми, як він піде в шестнадцатірічное файл

привет другу вступні книги по робототехніці
Вибачте, але вам необхідно увійти в акаунт це вкладення

 
встановити параметр залежить, якщо ви запускає її з командного рядка нашого uMicrovision.У компіляції контроль SRC.Ваш командного рядка буде виглядати наступним чином: C51.EXE test.c BROWSE SRC DEBUG OBJECTEXTEND.Якщо ви використовуєте umicrovision ви встановіть її у відповідності з варіантами для вашого проекту, C51 перейти на вкладку Вид і НИЦ "у розділі" Різне управління "змінити вікно

 
Ніцца книги по роботам ..

Привіт,
Partha

 
/*********************定义调节阀结束************************ *****/
/*********************定义24C04开始************************* ****/
# Визначити WR 0xa0
# Визначити РД 0xa1
/ *常,变量定义区* /
uchar Byte_ [8]; / *端口位定义* /
sbit правил дорожнього руху = P1 ^ 3; / *模拟I2C数据传送位* /
sbit SCL = P1 ^ 2; / *模拟I2C时钟控制位* /
розрядних CSI24C021RWBYTE (uchar * Byte_, uchar BCount, uchar Адреса, uchar RW);
/****************************定义24C04结束****************** ************/

/ / START I2C
/ *
调用方式: I2CWait недійсним (недійсними)
函数说明:私有函数, I2C专用2002-08-15
* /
I2CWait недійсним (недійсними)
(
_nop_ (); _nop_ (); _nop_ (); _nop_ (); _nop_ ();
)
/ *
方式: I2CStart недійсним (недійсними)
函数说明:私有函数, I2C专用2002-08-15
* /
I2CStart недійсним (недійсними)
(
ПДР = 1; SCL = 1; I2CWait ();
ПДР = 0; I2CWait ();
SCL = 0;
)
/ *
调用方式: I2CStop недійсним (недійсними)
函数说明:私有函数, I2C专用2002-08-15
* /
I2CStop недійсним (недійсними)
(
SCL = 0; ПДР = 0; I2CWait ();// INT
SCL = 1; I2CWait (); ПДР = 1; / / STOP
)
/ *
调用方式: бітних WaitAck (вакууму)
函数说明:私有函数, I2C专用,等待从器件接收方的应答2002-08-15
* /
розрядних WaitAck (вакууму)
(
uchar errtime = 255; / /因故障接收方无ACK,超时值为255.
ПДР = 1; I2CWait ();
SCL = 1; I2CWait ();
а (ПДД) (errtime - якщо (! errtime) (I2CStop (); повернутися помилковим;))
SCL = 0;
повернутися вірно;
)
/ *
调用方式: SendAck недійсним (недійсними) 2002-08-15
函数说明:私有函数, I2C专用,主器件为接收方,从器件为发送方时,应答信号
* /
SendAck недійсним (недійсними)
(
ПДР = 0; I2CWait ();
SCL = 1; I2CWait ();
SCL = 0;
)
/ *
调用方式: SendNoAck недійсним (недійсними) 2002-08-15
函数说明:私有函数, I2C专用,主器件为接收方,从器件为发送方时,非应答信号
* /
SendNoAck недійсним (недійсними)
(
ПДР = 1; I2CWait ();
SCL = 1; I2CWait ();
SCL = 0;
)
/ *
调用方式: недійсним I2CSend (uchar CH, uchar H_L)
函数说明:私有函数, I2C专用
* /
недійсним I2CSendByte (uchar CH, uchar H_L)
(
uchar I = 8;
в той час як (I -)
(
SCL = 0; _nop_ ();
якщо (H_L == 1)
(= Правила дорожнього руху (біт) (CH
І 0x80); CH <<= 1;) / /从高到低MSB-> LSB
ще
(= Правила дорожнього руху (біт) (CH
І 0x01); CH>> = 1 ;};//从低到高LSB-> MSB
I2CWait ();
SCL = 1; I2CWait ();
)
SCL = 0;
)
/ *
调用方式: недійсним I2CReceive (uchar H_L)
函数说明:私有函数, I2C专用
* /
uchar I2CReceiveByte (uchar H_L)
(
uchar I; / / = 8;
uchar ddata = 0;
uchar ddata1 = 0;
ПДР = 1;
для (i = 0; I <= 7; I )
(
якщо (H_L == 1) (ddata <<= 1;);
SCL = 0; I2CWait ();
SCL = 1; I2CWait ();
ddata1 = 0;
ddata1 | = правил дорожнього руху;
якщо (H_L! = 1) (ddata1 <<= I;);
ddata | = ddata1;
)
SCL = 0;
повернутися ddata;
)
розрядних CSI24C021RWBYTE (uchar * Byte_, uchar BCount, uchar Адреса, uchar RW) / /读写csi24c021
(
uchar I;
I = 0x0A0;
I2CStart ();
I2CSendByte (I, 1); / /写入控制字(SLAVE地址)
якщо (! WaitAck ()) повернення 1; / /写入控制字失败重来
I2CSendByte (адреса, 1); / /地址低8位
якщо (! WaitAck ()) повернення 1;
перемикач (RW)
(
Випадок 1: / / WRITE
для (i = 0; I <BCount; I )
(
I2CSendByte (Byte_ , 1);
якщо (! WaitAck ()) повернення 1;
)
брейк;
випадку 0: / / READ
I2CStart (); / /再次启动I2C
I2CSendByte (I 1,1); / /写入控制字,传送OxA1的地址,即读出的SLAVE地址
якщо (! WaitAck ()) повернення 1;
для (i = 0; I <BCount; I )
(
Byte_ = I2CReceiveByte (1);
якщо (I! = BCount-1) (SendAck ();)
)
SendNoAck ();
)
I2CStop ();
I2CWait ();
повернення 0;
)

 
Привіт люди ........
Я написання програм на мові C. У цієї заявки я включати деякі інструкції (для manupulating стека). Я спробував цей включаючи АНМ код між # Pragma директив.
# Pragma АНМ

АНМ код
# Pragma endasm
Коли я компіляції цього коду (компілятор Keil u2), її збір і отримання генерації шістнадцятковий фото успішно без будь-яких помилок і warnings.But При цьому через тренажер (Keil simultor) з контролем передачі NOP місце (я маю на увазі не працює чи працює).
Я включив
C51S.LIB:
Маленька модель бібліотеки без плаваючою точкою математики.
C51C.LIB: Компактна модель бібліотеки без плаваючою точкою математики.
C51L.LIB: Великі моделі бібліотеку без плаваючою точкою математики.
C51FPS.LIB:
Маленька модель бібліотеки з плаваючою точкою математики.
C51FPC.LIB: Компактна модель бібліотеки з плаваючою точкою математики.
C51FPL.LIB: Великі моделі бібліотеки з плаваючою точкою математики.
до джерела групи і генерує Асемблер SRC файлів і Зберіть SRC файлу включений (обидва позначені).
Тому,
будь ласка, запропонувати something.Because з Я нахиляє strucking і здійснити мої ідеї далі.

 

Welcome to EDABoard.com

Sponsor

Back
Top