1. c51單片機中如何用匯編語言編寫流水燈
51單片機用匯編語言編寫流水燈程序,就是控制多個LED ,使其在特定時間間隔內,只有一個LED 發光,其他熄滅,用這種方式順序移動點亮LED的位置,就形成了流水燈的效果。以下是程序:
;假設晶振12MHZ,P1控制8個LED低電平亮
;啟動入口========================
ORG 0000H ;復位啟動
AJMP START ;
ORG 001BH ;T1中斷
AJMP T1INT ;
;定義變數========================
YSJS EQU 30H;延時計數器
LED EQU 31H;LED控制緩沖器
;主程序==========================
START: MOV LED,#0FEH ;初始化數據
MOV YSJS,#0 ;
;
MOV TMOD,#10H ;定時器1工作於方式1,16位定時器
MOV TL1,#0B0H ;設置定時初值
MOV TH1,#3CH ;定時時間=50mS
SETB ET1 ;使能定時器1中斷
SETB TR1 ;啟動定時器1
SETB EA ;開總中斷
MOV P1,LED ;初始化流水燈
;
LOOP: JMP LOOP ;循環等待中斷
;
;
T1INT: PUSH PSW ;定時器1中斷程序
PUSH ACC ;保護現場
;
MOV TH1,#3CH ;定時時間=50mS
MOV TL1,#0B0H ;
INC YSJS ;
PUSH ACC ;保護ACC
MOV A,YSJI ;
CJNE A,#2,QT1 ;50mS*2=100mS
MOV P1,LED ;
MOV A,LED ;
RL A ;累加器A的值循環左移1位
MOV LED,A ;
MOV YSJS,#0 ;
;
QT1: POP ACC ;恢復現場
POP PSW ;
RETI ;返回主程序
END ;匯編程序結束
2. C51單片機匯編語言
DEL,DLYRAM是標記號,後面跟有:(冒號)
$是本匯編行的地址,舉個例子:
SJMP $
這一句,就相當於
Loop:
AJMP Loop
3. 如何在C51語言程序中調用匯編語言程序
把匯編中的函數也在頭文件中進行函數申明,引用這個頭文件後,C語言就能調用這個函數了,跟調用C函數是一樣的。
4. 單片機,c51匯編語言編寫程序
SUBDATA:
CLRC
MOVA,41H
SUBBA,43H
MOVA,40H
SUBBA,42H
JCSUBD1
MOV44H,40H
MOV45H,41H
MOV46H,42H
MOV47H,43H
RET
SUBD1:
MOV44H,42H
MOV45H,43H
MOV46H,40H
MOV47H,41H
RET
5. 單片機C51匯編語言 怎麼區分 匯編語言中出現的 數 和 地址
1、(R1)=20H 不是一條指令,而只是一種說明,表明R1寄存器中的內容是20H。這個20H是地址還是數據,與這個說明無關。
2、在指令 MOV @R1,#40H 中,@R1 是間接定址方式,表明R1中的內容是地址,指令的功能表明是將立即數40H傳送到R1指定的地址中。
3、在指令中容易混淆的是立即數與直接地址,立即數的特徵是有一個前綴#,直接地址沒有這個前綴。
6. 51單片機匯編教程
在網路搜索《mcs-51、96系列單片機原理及應用》,孫涵方著,32開本大小,北京航空航天大學出版社1988年出版。書雖老,但很經典,對匯編部份講的最細致、最完整,還有許多常用子程序。
如果買不著,也可以在網路文庫中下載PDF格式的電子版。
7. 匯編語言怎麼寫入單片機
利用編譯軟體,業界最常用功能最強大的是KEIL uv2/3,將你的源程序編譯生成為.hex格式的文件。具體用法你可以先下載一個keil c51的軟體。找一個教程看一下。keil c51可以編譯C語言,也可以編譯匯編語言,也可以把兩者混合匯編。但是只有將他們轉換成.hex格式(十六進制格式文件)的文件(或者二進制的文件,這種情況一般很少),單片機才能識別。
程序編譯好後,剩下的工作就是將生成的.hex燒錄到單片機中去啦。使用編程器將文件傳到單片機中就行啦。
編程器(也即程序燒錄器)現在網上有很多賣的(很便宜的,四五十就行了。我前一段時間在淘寶上買了一個。當然,也可以自己做一個,算了下自己做的話,單個的成本也在三十六塊錢左右。單個做不合算,批量才有的賺),很多可以通過計算機串口直接將單片機燒錄好。然後再將燒錄好的單片機取下來,安裝在你的MCU系統中。上電....
搞定收工!O(∩_∩)O~
8. 在C51語言中如何嵌入匯編語言
keil C 語言中嵌入匯編語言進行混合編程,方法如下:
1、在C 文件中要嵌入匯編代碼片以如下方式加入匯編代碼
#pragma ASM
; Assembler Code Here
#pragma ENDASM
2、在Project 窗口中包含匯編代碼的C 文件上右鍵,選擇「Options for ...」
4、編譯,即可生成目標代碼
實例:
#include<reg52.h>
#define uchar unsigned char
sbit LED1=P1^0;
//C 嵌入匯編常式
void delay_ms(void)
{
#pragma asm
MOV R0,#0FFH
MOV R1,#0FFH
D_LOOP1:
DJNZ R0,D_LOOP1
MOV R0,#0FFH
DJNZ R1,D_LOOP1
#pragma endasm
}
void main(void)
{
uchar i;
P1 = 0xFF;
while(1)
{
i++;
delay_ms();
if(i>=7)
{
LED1 =~LED1;
i=0;
}
}
}
9. 用keil C51怎麼把C源程序轉換成匯編代碼
在編譯時就可以自動生成asm文件,但需要在設置菜單中設置。
工程——選項——Listing——該選的選中(asm……)
如此將產生lst文件,打開.lst文件下拉到後面,可見到ASM部分代碼,復制到editer,刪除沒有用的部分,留下ASM部分,把它編輯為asm 文件即可。
10. 在C51中,怎樣嵌入匯編語言程序
voidfunc()
{
C語言代碼……
#pragmaasm
MOVR6,#23
DELAY2:
MOVR7,#191
DELAY1:
DJNZR7,DELAY1
DJNZR6,DELAY2
RET
#pragmaendasm
C語言代碼……
}