當前位置:首頁 » 編程語言 » c語言asm

c語言asm

發布時間: 2024-10-20 12:36:16

㈠ 怎麼用c語言寫可以調節的延時程序,請大俠幫忙

延時程序(包括asm和C程序,都是我在學單片機的過程中用到的),在單片機延時程序中應考慮所使用的晶振的頻率,在51系列的單片機中我們常用的是11.0592MHz和12.0000MHz的晶振,而在AVR單片機上常用的有8.000MHz和4.000MH的晶振所以在網上查找程序時如果涉及到精確延時則應該注意晶振的頻率是多大。

軟體延時:(asm)

晶振12MHZ,延時1秒
程序如下:
DELAY:MOV 72H,#100
LOOP3:MOV 71H,#100
LOOP1:MOV 70H,#47
LOOP0:DJNZ 70H,LOOP0
NOP
DJNZ 71H,LOOP1
MOV 70H,#46
LOOP2:DJNZ 70H,LOOP2
NOP
DJNZ 72H,LOOP3
MOV 70H,#48
LOOP4:DJNZ 70H,LOOP4

定時器延時:

晶振12MHZ,延時1s,定時器0工作方式為方式1

DELAY1:MOV R7,#0AH ;;晶振12MHZ,延時0.5秒
AJMP DELAY
DELAY2:MOV R7,#14H ;;晶振12MHZ,延時1秒
DELAY:CLR EX0
MOV TMOD,#01H ;設置定時器的工作方式為方式1
MOV TL0,#0B0H ;給定時器設置計數初始值
MOV TH0,#3CH
SETB TR0 ;開啟定時器
HERE:JBC TF0,NEXT1
SJMP HERE
NEXT1:MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ R7,HERE
CLR TR0 ;定時器要軟體清零
SETB EX0
RET

C語言延時程序:

10ms延時子程序(12MHZ)

void delay10ms(void)

{

unsigned char i,j,k;

for(i=5;i>0;i--)

for(j=4;j>0;j--)

for(k=248;k>0;k--);

}

1s延時子程序(12MHZ)

void delay1s(void)

{

unsigned char h,i,j,k;

for(h=5;h>0;h--)

for(i=4;i>0;i--)

for(j=116;j>0;j--)

for(k=214;k>0;k--);

}

200ms延時子程序(12MHZ)

void delay200ms(void)

{

unsigned char i,j,k;

for(i=5;i>0;i--)

for(j=132;j>0;j--)

for(k=150;k>0;k--);

}

500ms延時子程序程序: (12MHZ)
void delay500ms(void)
{
unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
}

下面是用了8.0000MHZ的晶振的幾個延時程序(用定時0的工作模式1):

(1)延時0.9MS

void delay_0_9ms(void)
{
TMOD=0x01; /*定時器0工作在模式1下(16位計數器)*/
TH0=0xfd;
TL0=0xa8;
TR0=1; /*啟動定時器*/
while(TF0==0);
TR0=0;
}

(2)延時1MS

void delay_1ms(void)
{
TMOD=0x01; /*定時器0工作在模式1下(16位計數器)*/
TH0=0xfd;
TL0=0x65;
TR0=1; /*啟動定時器*/
while(TF0==0);
TR0=0;
}

(3)延時4.5ms

void delay_4_5ms(void)
{
TMOD=0x01; /*定時器0工作在模式1下(16位計數器)*/
TH0=0xf4;
TL0=0x48;
TR0=1; /*啟動定時器*/
while(TF0==0);
TR0=0;
}

㈡ C語言內嵌匯編,__asm("")和__asm{}和__asm有啥區別

不同的編譯、開發環境下用法格式有差別。
__asm("") 引號內部是匯編指令。
__asm 可以跟匯編指令。

㈢ c語言中asm怎麼用使其在TC2.0中編譯通過。

Turbo C 2.0 中,可以用asm關鍵字實現在源程序中嵌入匯編語句。
在TC2中,使用asm關鍵字的格式為:
asm {
編程序語句塊
}
注意這個是在一個段以內的程序,就是總程序在64K以內

㈣ 怎樣理解c語言中for和asm中的冒號

在 C 語言中 for 沒有冒號,而是分號,如果寫成冒號,那就是語法錯誤了。其語法例如:
int i ;
for( i = 0 ; i < 50 ; i += 2 ) /* for 循環體,i=0 是初始條件,i<50 是終止條件,i+= 2 是每一次執行循環體後的步長為 2 */
printf("i = %d\n", i ) ;
至於說 asm 是代表在 C 語言中嵌入簡單代碼的匯編指令,在 C 語言中調用匯編語言指令。其後面以冒號結尾。
......
asm:
......

㈤ C語言關鍵字asm有什麼用途和在什麼地方使用麻煩大家了!首先表示感謝!

ASM(Assembly Language)是匯編語言源程序的擴展名,匯編程序員也稱匯編為ASM
當你要在程序中插入一段匯編語言代碼的時候,使用
_asm { (匯編代碼)} 注意前面有個下劃線。
當你要插入一句匯編語言代碼的時候,也可以這么寫如
_asm MOV AL, 2

㈥ C中如何使用.asm文件

asm文件是宏匯編文件,在c中調用方法如下:
1、編寫匯編程序:

#include <xc.inc>
GLOBAL _add ; 聲明全局可用的函數add
SIGNAT _add,4217 ; 告訴編譯器調用方式
;
PSECT mytext,local,class=CODE,delta=2
; our routine to add to ints and return the result
_add:
; W is loaded by the calling function;
BANKSEL (PORTB) ; select the bank of this object
ADDWF BANKMASK(PORTB),w ; add parameter to port
; the result is already in the required location (W)so we can ; just return immediately
RETURN
2、編寫c語言程序
//聲明調用外部的匯編程序
extern unsigned char add(unsigned char a);
void main(void) {
volatile unsigned char result;
result = add(5); // 開始調用上面聲明的匯編函數
}

㈦ C語言中的asm怎麼用

_asm mov ax,0;
_asm{
mov ax,0
mov bx,0
}
兩種寫法都行,VC++6.0編譯通過

熱點內容
緩存直通 發布:2024-11-24 03:12:46 瀏覽:641
手機如何從安卓10升級安卓11 發布:2024-11-24 03:01:40 瀏覽:852
phpmvc開發框架 發布:2024-11-24 02:57:44 瀏覽:944
編程腦子疼 發布:2024-11-24 02:31:23 瀏覽:169
c語言狀態機 發布:2024-11-24 02:26:56 瀏覽:281
用友加密狗破解 發布:2024-11-24 02:23:16 瀏覽:707
鴻蒙系統如何變回安卓桌面 發布:2024-11-24 02:18:26 瀏覽:412
c語言填充 發布:2024-11-24 02:10:48 瀏覽:822
命名空間存儲 發布:2024-11-24 02:10:45 瀏覽:472
java重載與重寫 發布:2024-11-24 01:59:05 瀏覽:699