การแทรก assembly ในภาษา C

การแทรก assembly ในภาษา C

มีคำถาม คำถามนึงที่ถามบ่อยมากว่าจะใส่คำสั่ง assembly ลงไปในภาษา C ยังไง จริงๆแล้วมันก็มีวิธีอยู่ แต่ตั้งแต่ผมเขียนโปรแกรมมาผมก็ไม่เคยใช้เหมือนกัน คือภาษา C ผมว่ามันก็ cover ดีแล้ว แต่รู้ไว้ก็ไม่เสียหายครับ

  • เริ่มจากการสร้าง Project ตามปกติ Keil จะถามเราว่า ต้องการจะ copy ตัว Start up code เข้าไปใน Project ไหม ให้กด No

รูปที่ 1

  • จากนั้นก็ทำการสร้าง File.C ขึ้นมาแล้ว Add เข้าไปใน Project
//************************************************************************//
//Project : insertasm
//Description : Inline assembly
//Device : 89S52
//XTAL : 11.0592 MHz
//By : ThaiEmbedded 2007
//************************************************************************//
#include <REGX51.H>//————————————————————————//
// Delay (mSec)
//————————————————————————//
void dmsec(unsigned int cnt)
{
?????unsigned char i;
?????while(cnt)
?????{
??????????for (i=1;i<=228;i++);
??????????cnt–;
?????}
}
//————————————————————————//
// Main
//————————————————————————//
void main (void)
{?????while(1)
?????{
??????????#pragma ASM
??????????MOV P0,#0FH
??????????#pragma ENDASM
??????????dmsec(300);??????????#pragma ASM
??????????MOV P0,#0F0H
??????????#pragma ENDASM
??????????dmsec(300);
?????}
}
  • ที่ Project Window Tab แรกเราจะเห็น File.C ที่เรา add เพิ่มเข้ามา ให้คลิกขวา
  • เลืือก Option for

รูปที่ 2

  • ติ๊ก Generate Assembler SRC file
  • ติ๊ก Enable Assemble SRC file.
  • ทำการ compile เราจะได้ HEX file ออกมา

เมื่อนำไปต่อกับ hardware จริงเราจะเห็น LED ติดสลับกันที่ละ 4 ดวง

null

รูปที่ 3 วงจรที่ใช้ในการทดลอง

Download Code การแทรก assembly ในภาษา C