菜鸟提问,关于51单片机汇编语言

作者&投稿:堂程 (若有异议请与网页底部的电邮联系)
51单片机中如何用汇编语言编写流水灯~

流水灯就是51单片机控制led灯依次点亮的控制方式。具体程序如下:
ORG 0000H;复位启动AJMP START;ORG 001BH;T1中断AJMP T1INT;
;定义变量========================YSJSEQU 30H;延时计数器LEDEQU 31H;LED控制缓冲器
;主程序==========================START:MOV LED,#0FEH;初始化数据MOV YSJS,#0;MOV TMOD,#10H;定时器1工作于方式1,16位定时器MOV TL1,#0B0H;设置定时初值MOV TH1,#3CH;定时时间=50mSSETB ET1;使能定时器1中断SETB TR1;启动定时器1SETB EA;开总中断
MOV P1,LED;初始化流水灯LOOP:JMP LOOP;循环等待中断T1INT:PUSH PSW;定时器1中断程序PUSH ACC;保护现场MOV TH1,#3CH;定时时间=50mSMOV TL1,#0B0H;INC YSJS;
PUSH ACC;保护ACCMOV A,YSJI;CJNE A,#2,QT1;50mS*2=100mSMOV P1,LED;MOV A,LED;RL A;累加器A的值循环左移1位MOV LED,A;MOV YSJS,#0;QT1:POP ACC;恢复现场POP PSW;RETI;返回主程序END;汇编程序结束
扩展资料:
实现流水灯的三个方法:
第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。
第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。
第三种,库函数实现流水灯。利用左移函数进行。

汇编语言编写时, 开头都是从ORG 0000H开始的, 由于中断向量也在0000H后面排列, 所以一般在
0000H这里放一条长转移指令, 如下面所示:

ORG 0000H
LJMP MAIN ; 转到主程序中去

ORG 0003H
LJMP INT0 ; 转到外部中断0处理程序

51单片机汇编语言, 一般给单个 IO 口赋值, 用 MOV 赋值 会 对其他 位有影响
如给P1.0口一个低电平 MOV P1, #00H 或者 MOV P1, #0FEH
都能 使 P1.0 输出低电平, 但影响 P1.1 ~ P1.7
可以用 位操作指令 如 CLR P1.0 ( SETB P1.0 为输出 高电平)
或者 用 ANL (与) 指令 ORL (或)指令 不会影响其他位 如
ANL P1, #0FEH ; 使 P1.0 输出低电平
ORL P1, #01H ; 使 P1.0 输出高电平

赋值低电平MOV P1,#00H
AND P1,#11111110B
CLR P1.0
赋值高电平MOV P1,#0FFH
OR P1,#00000001B
SETB P1.0
现在明白了没?

clr P1.0

菜鸟刚学51单片机 这句话什么意思呀,最好能详细的解释一下 ,好像是...
答:这是51的定时器1的中断函数 static void 这个不用讲 timer1_isr 函数名,随便定义,因为没有函数能够调用中断函数,这个函数的地址会被编译器放在定时器1中断向量的位置,也就是说程序存储器 001B(定时器1中断向量)存放的指令时 LJMP xxxx(xxxx表示timer1_isr的地址)interrupt TF1_VECTOR 这个...

单片机的菜鸟问题。
答:你新建工程选完芯片之后会出现一个对话框问你要不要把STARTUP.A51这个文件添加到你的工程中,确定或取消都行。确定的结果是:如果你没添加你的C语言代码文件进去的话,直接编译就会出现你说的情况,或者你编的是汇编的程序,编译后也会出现你说的情况。建议是:用汇编的话取消,用C的话确定。

单片机菜鸟级问题,很基础,但是书上讲的真不懂,求教达人,最好通俗易懂...
答:1、关于读/写:单片机中的读写指的是一种操作的动作。读:就是获取相应的引脚状态的操作,如果引脚上是高电平则读到单片机内部就是1,如果是低电平则为0。写是读的逆操作,写1就是使得相应的引脚输出高电平,写0就是输出低电平。2、关于I/O:字面上的理解I:就是input,O:就是output,也就是...

51单片机程序求解
答:估计LZ刚刚开始学单片机,我来解释下这个程序:前面不说了 定义头文件 一个延时子程序从这句开始 unsigned char OutData=0xfe;声明OutData为有符号字符型变量 0xfe是什么意思呢?你只需要看fe是十六进制 你用计算机转换成二进制就是11111110 结合下面的那句 P1=0xfe 就知道了 点亮P1口的第一个灯,...

51单片机菜鸟求助,高手进 共阴极数码管消影问题
答:因为没有程序,所以我只能猜测,你可能是延时问题,你在后边加个延时试试,若具体的话,最好给出程序。

51单片机C程序
答:sfr P0M1 = 0X93; //这些是预定义寄存器的地址的 sfr P0M0 = 0X94; // 在编译过程中会把 POM1之类的东西变成这些地址 sfr P1M1 = 0X91; //mcu在运行中也是对这些地址操作的 sfr P1M0 = 0X92;sfr P2M1 = 0X95;sfr P2M0 = 0X96;uchar CONT_1...

菜鸟求助:请问MSC51单片机是一个类别还是一个单独的芯片啊?
答:Intel公司把这种单片机的内核,即8051内核,以出售或互换专利的方式授权给一些公司,如Atmel、Philips、ADI等。这些公司的这类产品也被称为8051兼容芯片,这些8051兼容芯片在原来的基础上增加了许多特性。本书应用电路中采用了Atmel公司的AT89S51芯片,它与MCS51单片机指令集兼容,同时它的内部包含用作程序存储...

菜鸟问题,关于51单片机的
答:因为软件本身直接连接了 intrins.lib intrins.h申明了 intrins.lib里面的函数

求好的51单片机学习网站
答:推荐51单片机学习网站:菜鸟单片机。菜鸟单片机网站提供了丰富的51单片机学习资源。该网站拥有众多关于51单片机的教程,从基础知识到高级应用,内容全面且易于理解。对于初学者来说,它提供了许多入门教程,通过实例和图解的方式,让读者快速掌握单片机的基本概念和编程方法。对于有一定基础的学员,网站还提供了...

我是单片机设计入门菜鸟,想问高手一个问题!
答:那么,有些时候需要单独对某个管脚操作,怎么办呢?只要对某个管脚对应的那个寄存器的位来进行赋值即可。对于你这里面的情况,估计是51单片机,p1.1引脚的地址就是0x91,(因为p1端口的总起始地址是0x90),所以,只要对0x91来赋值就行了,但程序里总用0x91会比较难看,所以,给他取个代号,p1_1,(...