❶ 匯編能不能寫單片機
沒有問題,只要指令集和存儲器,外設的頭文件正確包含即可。
❷ C51單片機編程中C語言如何嵌套匯編語言
#include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int sbit DS=P3^3; //定義DS18B20介面 int temp; uchar flag1; void display(unsigned char *lp,unsigned char lc);//數字的顯示函數;lp為指向數組的地址,lc為顯示的個數 void delay();//延時子函數,5個空指令 code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0x40,0x39,0x00};//共陰數碼管顯示數的組成是 "0-9""0-9有小數點的" "-" "C" "空表" unsigned char l_tmpdate[8]={0,0,10,0,0,0,0,0};//定義數組變數,並賦值1,2,3,4,5,6,7,8,就是本程序顯示的八個數 int tmp(void); void tmpchange(void); void tmpwritebyte(uchar dat); uchar tmpread(void); bit tmpreadbit(void); void dsreset(void); void delayb(uint count); void main() //主函數 { uchar i; int l_tmp; while(1) { tmpchange(); //溫度轉換 l_tmp=tmp(); //讀取溫度值 if(l_tmp<0) l_tmpdate[0]=20; //判斷溫度為負溫度,前面加"-" else { l_tmpdate[0]=l_tmp/1000; //顯示百位,這里用1000,是因為我們之前乖以10了 if(l_tmpdate[0]==0) l_tmpdate[0]=22;//判斷溫度為正溫度且沒有上百,前面不顯示,查表第12是空 } l_tmp=l_tmp%1000; l_tmpdate[1]=l_tmp/100;//獲取十位 l_tmp=l_tmp%100; l_tmpdate[2]=l_tmp/10;//獲取個位再 l_tmpdate[2]+=10;//加入小數點,查表可得出有小數點的排在後10位,所以加10 l_tmpdate[3]=l_tmp%10;//獲取小數第一位 l_tmpdate[4]=21; for(i=0;i<10;i++){ //循環輸出10次,提高亮度 display(l_tmpdate,5); } } } void display(unsigned char *lp,unsigned char lc)//顯示 { unsigned char i; //定義變數 P2=0; //埠2為輸出 P1=P1&0xF8; //將P1口的前3位輸出0,對應138譯門輸入腳,全0為第一位數碼管 for(i=0;i<lc;i++){ //循環顯示 P2=table[lp[i]]; //查表法得到要顯示數字的數碼段 delay(); //延時5個空指令 if(i==7) //檢測顯示完8位否,完成直接退出,不讓P1口再加1,否則進位影響到第四位數據 break; P2=0; //清0埠,准備顯示下位 P1++; //下一位數碼管 } } void delay(void) //空5個指令 { _nop_();_nop_();_nop_();_nop_();_nop_(); } void delayb(uint count) //delay { uint i; while(count) { i=200; while(i>0) i--; count--; }
❸ 單片機中c語言中如何加入匯編
1、在 C 文件中要嵌入匯編代碼片以如下方式加入匯編代碼:
2、在 Project 窗口中包含匯編代碼的 C 文件上右鍵,選擇「Options for ...」,點擊右邊的「Generate Assembler SRC File」
和「Assemble SRC File」,使檢查框由灰色變成黑色(有效)狀態;
3、根據選擇的編譯模式,把相應的庫文件(如 Small 模式時,是 Keil\C51\Lib\C51S.Lib)加入工程中, 該文件必須作為工程的最
後文件;
4、編譯,即可生成目標代碼。
❹ 關於8051單片機中的c語言嵌入匯編
你現在看到的是什麼結果?
編譯通過的話,應該沒有問題.實在不行,進入debug模式,看看匯編程序.
❺ C51寫單片機程序如何插入匯編指令.
C51些單片機程序插入匯編指令的方法如下:
1、以#pragma asm開始,以#pragma endasm結束,
用pragma asm和#pragma endasm這兩個偽指令將匯編代碼包起來。
比如:
3、如果勾選橢圓圈中的兩項,這樣就可以了。
❻ PIC單片機c語言中如何嵌套匯編
3樓的方法是用keil開發51單片機時候潛入匯編的 方法,對於pic單片機來說,不能這楊編譯。因為KEIL不能編譯pic單片機的C語言和匯編語言,必須用MPLAB+PICC或者MPLAB+ mc編譯器 。
一般pic12、16系列的8位中低端單片機的編譯器潛入匯編是用 _asm(" 匯編單句語句 ");
如果要輸入一大段匯編語句,則用:
#asm
N條匯編語句
#endasm
❼ PIC單片機c語言中如何嵌套匯編
3樓的方法是用keil開發51單片機時候潛入匯編的
方法,對於pic單片機來說,不能這楊編譯。因為KEIL不能編譯pic單片機的C語言和匯編語言,必須用MPLAB+PICC或者MPLAB+
mc編譯器
。
一般pic12、16系列的8位中低端單片機的編譯器潛入匯編是用
_asm("
匯編單句語句
");
如果要輸入一大段匯編語句,則用:
#asm
N條匯編語句
#endasm
❽ 8051單片機c語言編程 如何嵌入匯編語言呢
這和的你的的編譯器是有關的
還有樓上說的根本不對 那是 上位機嵌入匯編的方式
根本不是 51 的·
如果在51 KEIL 中
方法是這樣的
#pragma ASM
; Assembler Code Here
#pragma ENDASM
不過你還得在 Project 窗口中包含匯編代碼的 C 文件上右鍵,選擇「Options for ...」,點擊右邊的「Generate Assembler SRC File」
和「Assemble SRC File」,使檢查框由灰色變成黑色(有效)狀態;
嵌入匯編好嵌入不過我現在一直都鬧不懂的就是 如何在嵌入的匯編中 調用 c 中的 變數 ,,希望有知道的分享一下!!
希望不是用 用宏匯編那樣的話太麻煩了!!
❾ 51單片機C程序語言怎麼嵌入匯編中斷
void
touch_INT0()
interrupt
0
{
#pragma
asm
...匯編
語句
#pragma
endasm
}
需要打開SRC:
一、
右鍵
單擊
源程序
文件,選擇「Options
for
...」
二、選擇「Properties」選項卡
三、在右側,選中這兩個選項「Generate
Assembler
SRC
File」和「Assemble
SRC
File」。如果這兩個選項前面的復選框是灰色的,重新選擇一下就可以了。
還可能要添加相應的
庫文件
。
❿ 51單片機中,C語言中怎麼加入匯編語言
C語言的執行效率比匯編高很多,為什麼要加匯編呢,C語言中不直接加入匯編,少數的匯編指令你可以在開頭宏定義一下,比如#define _NOP()_ nop();