导航:首页 > 操作系统 > 51单片机中如何用汇编语

51单片机中如何用汇编语

发布时间:2022-07-19 21:28:10

‘壹’ 51单片机,这个函数用汇编语言应该怎么写

SPI_WRITE:
MOV R2,#8
CLR CLK
LOP:
RRC A
MOV DIN,C
CLR CLK
SETB CLK
DJNZ R2,LOP
RET

‘贰’ 51单片机中,C语言中怎么加入汇编语言

C语言的执行效率比汇编高很多,为什么要加汇编呢,C语言中不直接加入汇编,少数的汇编指令你可以在开头宏定义一下,比如#define _NOP()_ nop();

‘叁’ 在89C5151单片机中怎么编写汇编语言

单片机中当然不能编写汇编程序了啊,先应该在编译环境中编译,常用的是伟幅编译软件,把编译生成的HEX文件再烧到单片机中去,就可以实现控制了。学单片机汇编需要两个重要软件,一个是编程软件WAVE(伟幅)另还要仿真软件Proteus 7 Professional。

‘肆’ 51单片机中如何用汇编语言编写流水灯

流水灯就是51单片机控制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 ;汇编程序结束

(4)51单片机中如何用汇编语扩展阅读:

实现流水灯的三个方法:

第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。

第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。

第三种,库函数实现流水灯。利用左移函数进行。

‘伍’ 用汇编语言编写一个51单片机的程序

首先搞清LED管是高电平导通还是低电平导通。
如果是低电平导通,P1赋0x00时,发光管全亮,0xff时,全灭。
具体程序:
#define uint unsigned int
#define uchar unsigned char
void delay(uint time_out)
{
uint i,j;
for(i=0;i<time_out;i++)
{
for(j=0;j<110;j++)
{;}
}
}

void main(){
while(1)
{
P1=0xfe; //第1个管亮
delay(500);
P1=0xfd; //第2个管亮
delay(500);
P1=0xfb; //依次类推
delay(500);
P1=0xf7;
delay(500);
P1=0xef;
delay(500);

P1=0xdf;
delay(500);

P1=0xbf;
delay(500);

P1=0x7f;
delay(500);
}
}

程序大致如此,delay函数负责延迟500ms.有问题自己再调试调试

‘陆’ 51单片机编程题,用汇编语言怎么做

在8051单片机的时钟频率为6MHz,那么定时器的计数脉冲周期就是 2uS;

sbit CP=P1^0;

void Timer0_init()

{

TMOD |=0x01; //T0定时器,方式1,采用16位定时器

TH0 = (65536-500)/256; //定时器装初值500, 即 1000uS 中断一次

TL0 = (65536-500)%256;

EA=1; ET0=1; TR0=1;

}


void timer0() interrupt 1

{

TH0 = (65536-500)/256; //定时器装初值500, 1mS 中断一次

TL0 = (65536-500)%256;

CP=~CP; //改变脉冲信号的输出状态

}


void main()

{

Timer0_init();

CP=0;

while(1) { }

}


汇编语言,才看到,算了,你别人的回答吧

‘柒’ 在51单片机中,使用汇编语言,如何将十六进制数转换成十进制。

程序经过仿真调试通过,如下所示:

MOV R0, TL0
MOV R1, TH0
CLR A
MOV R2, A, ;先清零
MOV R3, A,
MOV R4, A,
MOV R5, #16 ;共转换十六位数
LOOP:
CLR C
MOV A, R0 ;从待转换数的高端移出一位到Cy
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
MOV A, R4 ;送到BCD码的低端
ADDC A, R4 ;带进位加。自身相加,相当于左移一位
DA A ;十进制调整,变成BCD码
MOV R4, A
MOV A, R3
ADDC A, R3
DA A
MOV R3, A
MOV A, R2
ADDC A, R2
MOV R2, A
DJNZ R5, LOOP ;共转换十六位数
;-------至此,已经把TH1 TL1中的数字,转换成BCD码,送到了R2 R3 R4。
;-------下面,分别存入R4 R3 R2 R1 R0。
MOV A, R4
MOV B, #16
DIV AB
MOV R1, A
MOV R0, B

MOV A, R2
MOV R4, A

MOV A, R3
MOV B, #16
DIV AB
MOV R3, A
MOV R2, B
RET
;完

‘捌’ 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
;汇编程序结束

‘玖’ 在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;

}

}

}

阅读全文

与51单片机中如何用汇编语相关的资料

热点内容
客户端框架源码 浏览:206
python自动办公能干嘛 浏览:873
程序员追爱 浏览:252
程序员逻辑故事 浏览:768
加密icsot23i2c 浏览:713
你们有什么好的解压软件 浏览:607
常州空气压缩机厂家 浏览:241
安卓如何关闭app内弹出的更新提示 浏览:409
e4a写的app怎么装苹果手机 浏览:201
海立压缩机海信系 浏览:210
社保如何在app上合并 浏览:220
小米加密照片后缀 浏览:236
我的世界网易手机怎么创服务器 浏览:978
载入单页源码 浏览:930
阿里云服务器seo 浏览:777
海洋斗什么时候上线安卓 浏览:86
中行app如何查每日汇款限额 浏览:840
输入服务器sn是什么意思 浏览:725
sha1算法java 浏览:90
asp代码压缩 浏览:851