导航:首页 > 操作系统 > 51单片机汇编程序

51单片机汇编程序

发布时间:2022-03-12 01:25:25

A. 51单片机 汇编语言

;P1 IS KEY
;P0 IS LED
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
JB P1.0,MAIN1
MOV A,#0FEH
SJMP MLED
MAIN1:
JB P1.1,MAIN2
MOV A,#0FCH
SJMP MLED
MAIN2:
JB P1.2,MAIN3
MOV A,#0F8H
SJMP MLED
MAIN3:
JB P1.3,MAIN4
MOV A,#0F0H
SJMP MLED
MAIN4:
JB P1.4,MAIN5
MOV A,#0E0H
SJMP MLED
MAIN5:
JB P1.5,MAIN6
MOV A,#0C0H
SJMP MLED
MAIN6:
JB P1.6,MAIN7
MOV A,#80H
SJMP MLED
MAIN7:
JB P1.7,MAIN
MOV A,#0
MLED:
MOV P0,A
LJMP MAIN
END

B. 51单片机汇编程

寄存器压栈和出栈的时候,不能直接写寄存器的名字,比如:PUSH R3
POP R3应该写成PUSH 3和POP 3。还有就是
CCC: DEC R2
JZ BACK;我想你的意思是想做一个当R2=0时的跳转操作。但是JZ和JNZ指令只能判断ACC的值是否=0,你这个JZ在DEC R2后面,根本就没有对ACC的操作,所以是不会有你想象的结果的。

C. 51单片机汇编程序的问题

单片机的程序都是死循环。
区别在于,这个循环内有没有事做,循环做什么事。
你上面的程序,最后死循环在原地。定时器中断10次后也不再中断。

D. C51单片机汇编语言

你用的是跳转指令进入程序段,而不是子程序调用,所以不能用RET返回,只能同样跳回去

用LCALL或者ACALL命令调用子程序时会把当前的程序地址压入堆栈当前点,在遇到RET指令时就会把保存的断点地址弹回PC寄存器,继续调用之前的执行,但是JMP系列指令不会保存断点地址,所以RET时就会把堆栈当前点数据装入PC,上电后RAM中未初始化的单元都是0,所以就会把0装入PC,于是程序就回到0地址了。

E. 关于51单片机汇编语言程序

ORG 0000H
LJMP MAIN
ORG 000BH
LCALL TIMER0
ORG 1000H
MAIN:
LCALL INIT
WAIT :
CJNE R0,#10,WAIT
MOV R0,#0
RRC A
MOV P1,A
SJMP WAIT
INIT
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#B0H
SETB EA
SETB ET0
SETB TR0
MOV A,#01H
MOV P1,A
RET
TIMER0:
MOV TH0,#3CH
MOV TL0,#B0H
INC R0
RETI

F. 51单片机汇编语言

ORG 00H
LJMP MAIN
ORG 30H
MAIN:
MOV R2,#0
MOV R0,#40H
MOV R1,#30H
MOV DPTR,#2000H
LOOP1:
MOVX A,@DPTR
MOV B,#2
MUL AB
ADD A,@R1
DEC A
MOV @R0,A
INC R0
INC R1
INC DPTR
CJNE R2,#10,LOOP1
MOV R2,#0
MOV R1,#40H
MOV DPTR,#3000H
LOOP2:
MOV A,@R1
MOVX @DPTR,A
INC R0
INC R1
INC DPTR
CJNE R2,#10,LOOP2
SJMP $
END(未完)

G. 51单片机汇编自锁程序

也许是按键抖动,外加一个上拉电阻和一个104对地电容试试吧

H. 用汇编语言编写一个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.有问题自己再调试调试

I. 51单片机汇编

0x40的写法,也是正确的。

毛病出在下面:

程序开始,把堆栈设置在40H,再调用子程序,系统就自动把返回地址,存入了堆栈。

但是,在子程序中,却把堆栈内的返回地址,给清零了。

那么,RET指令一执行,就又从0000H开始执行。

J. 51单片机的汇编编程

ORG 0000H
MOV DPTR,#2000H
MOV R0,#2AH ;#2AH * #60H=#1000H
MOV R1,60H
CLR R2
CLR R3

LOOP:CLR A
MOVC A,@A+DPTR
CJNE A,#41H,QUET ;与A的ASCII码#41H比较,不等->转移
MOV A,R2
INC A
MOV A,R2
JC JIAYI ;溢出一次,R3+1
LJMP QUET
JIAYI:INC R3
LJMP QUET

QUET:INC DPTR
DJNZ R0,LOOP
DJNZ R1,LOOP

MOV DPTR,#2010H
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R3
MOVX @DPTR,A
END

阅读全文

与51单片机汇编程序相关的资料

热点内容
源码微信小程序搭建 浏览:278
linux远程桌面连接命令 浏览:859
adams教程pdf 浏览:264
Arm和单片机区别 浏览:559
阿里云服务器绑定主机头 浏览:949
游戏手机什么最好用安卓 浏览:11
江苏程序员怎么样 浏览:510
捉妖股选股公式源码 浏览:541
胜利油田的社保用什么app 浏览:460
lru算法java 浏览:129
数据分析系统源码 浏览:539
论语繁体pdf 浏览:517
直上指标源码 浏览:193
pythongeohash使用 浏览:348
二维热力图python 浏览:553
如何度过程序员菜鸟阶段 浏览:505
python子图标题显示不出来 浏览:538
linux怎么看连接服务器的ip 浏览:709
windows命令行copy 浏览:65
都匀工会卡绑定什么购物App 浏览:274