Ⅰ 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;定时时间=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;汇编程序结束
(1)51单片机汇编学习扩展阅读:
实现流水灯的三个方法:
第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。
第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。
第三种,库函数实现流水灯。利用左移函数进行。
Ⅱ 学51单片机用汇编还是用C语言比较好先学汇编可以吗
绝对可以,我就是先学习的汇编语言,只有学习了汇编才能真正的了解单片机。。 如果不了解单片机的构造及原理,学c很快就会厌倦。不过c就是简单点,容易上手, 我先学的是汇编,也感觉不是很难。
Ⅲ 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 ;汇编程序结束
(3)51单片机汇编学习扩展阅读:
实现流水灯的三个方法:
第一种,总线方法实现流水灯。这是一种比较笨但又最易理解的方法,采用顺序程序结构,用位指令控制P1口的每一个位输出高低电平,加上延时函数,即可控制每个LED灯的亮灭。
第二种,移位方法实现流水灯采用循环程序结构编程。首先在程序开始给P1.0口送一个低电平,其它位为高。然后延时一段时间再让低电平往高位移动,这样就实现“流水”的效果了。
第三种,库函数实现流水灯。利用左移函数进行。
Ⅳ 51单片机汇编语言编写一个跑马灯的程序,初学者做实验用,具体要求如下,好了可以加分
程序1:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
LOOP:
MOV A,P2
MOV B,A
MOV P0,A
MOV P1,#0FFH
LOOP1:
LCALL DELAY
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
MOV A,P2
CJNE A,B,LOOP
SJMP LOOP1
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
程序2:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
JNB P2.0,LOOP1 ;
JNB P2.1,LOOP2 ;
SJMP MAIN
LOOP1:
MOV P0,#0FEH
MOV P1,#0FFH
LOOP11:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.1,LOOP2
SJMP LOOP11
LOOP2:
MOV P0,#0FCH
MOV P1,#0FFH
LOOP21:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.0,LOOP1
SJMP LOOP21
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
Ⅳ 各位高手,自学习51单片机汇编要如何开始丫,不懂英语可以自学会吗
可以。我的英语就是相当烂的。但是我单片机一样运用的很好。其实你学久了一行。相关的英语文档多看一点。很快就会学好的。
我当时相当的讨厌英语。后来慢慢的学单片机。慢慢的查字典。发现挺有趣的。
像你刚开始。最主要是找一个老鸟给你一些好的建议。让你入门的时间缩短一点。有很多人就是因为入门难。所以放弃了。你一定要坚持。加油。
Ⅵ 51单片机汇编编程
1:
KEY1 EQU P2.2
KEY2 EQU P2.1
KEY3 EQU P2.0
RED EQU P1.4
YELLOW EQU P1.5
GREEN EQU P1.6
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
SETB RED
SETB YELLOW
SETB GREEN
LP:
JB KEY1,LP1
CLR RED
SJMP LP
LP1:
JB KEY2,LP2
CLR YELLOW
SJMP LP
LP2:
JB KEY3,MAIN
CLR GREEN
SJMP LP
END
2:
KEY1 EQU P2.2
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV R0,#0
LP:
JB KEY1,DISP
JNB KEY1,$
INC R0
CJNE R0,#10,DISP
MOV R0,#0
DISP:
MOV DPTR,#LEDTAB
MOV A,R0
MOVC A,@A+DPTR
MOV P0,A
SJMP LP
TABLE: ; 共阴极数码管显示代码表
DB 3FH,06H,5BH,4FH,66H ;01234
DB 6DH,7DH,07H,7FH,6fh ;56789
END
Ⅶ 51单片机开始要学汇编吗
我不知道你究竟是问的哪个问题,挨个说一下个人的看法吧! 1.学习51单片机不一定要学汇编,用Keil C足够了,不过如果学习了汇编并对51寄存器组比较熟的话,对调试和查找问题会有很大好处的。 2.如果你是搞硬件的话,可以尽最大能力学就是了,学到可以自己调试板子,就足够了。当然,如果学的能编一个很大系统的话,那你就是宝了。 3.C++和JAVA在单片机中基本上是不会用的,当然手机软件除外,另外学习C++对编一些上位机调试软件还是比较有帮助的,比如一些串口的调试辅助工具或USB工具等通讯工具,也可以用来编上位机测试软件,可以事半功倍。 4.学习PCB和单片机找工作都挺容易的,但如果你能够都比较通的话就更好了。
Ⅷ 51单片机学习板是用来学习C语言的吗,怎么有人说用它可以学习汇编语言
可以的,我用的51就是汇编编程,不过C更加好些。比方说流水灯的汇编:
ORG 00H
START:
MOV A, #0FFH
CLR C
MOV R1, #8
LEFT: ;向左流动
RLC A
MOV P1, A
CALL DELAY
DJNZ R1, LEFT
MOV R2, #7
RIGHT: ;向右流动
RRC A
MOV P1, A
CALL DELAY
DJNZ R2, RIGHT
JMP START
DELAY: ;延时200毫秒
MOV R3, #20
D1:
MOV R4, #20
D2:
MOV R5, #248
DJNZ R5, $
DJNZ R4, D2
DJNZ R3, D1
RET
END
如果用C语言的就是:
**************************************************************
文件名称:flash_led.c
文件说明:流水灯C程序
编写日期:2006年10月5日
程序说明:MCU采用AT89S51,外接12M晶振,P1口输出
*************************************************************/
#include //51系列单片机定义文件
#define uchar unsigned char //定义无符号字符
#define uint unsigned int //定义无符号整数
void delay(uint); //声明延时函数
void main(void)
{
uint i;
uchar temp;
while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8个流水灯逐个闪动
{
P1=~temp;
delay(100); //调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8个流水灯反向逐个闪动
{
P1=~temp;
delay(100); //调用延时函数
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8个流水灯依次全部点亮
{
P1=temp;
delay(100); //调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8个流水灯依次反向全部点亮
{
P1=temp;
delay(100); //调用延时函数
temp>>=1;
}
}
}
void delay(uint t) //定义延时函数
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
建议楼主如果初学就用C语言吧。汇编检查错误比较麻烦的。鄙人就常常为这个问题担忧。
51单片机是初学者学习的,到后来可以用MSP430单片机,性能相当强大,而且超低功耗,ROM和RAM比51大十几倍至少。这款单片机也可以用C和汇编,但建议用C。呵呵,加油楼主,学习单片机学进去了是快乐的。
Ⅸ 51单片机汇编程序
ORG 0
CALL KEY_1
CALL KEY_1
CALL KEY_1
CPL P1.0
SJMP 0000
KEY_1:
JB P3.2, $
CALL DL10MS
JB P3.2, KEY_1
JNB P3.2, $
RET
DL10MS:
...;软件延时,自己编写吧
RET
Ⅹ 51单片机汇编语言怎么学容易上手
动手就容易上手!在动手中去理解你会比看什么都快数倍。最好先淘宝花上几十元(小钱吧,不定还不够你一顿饭钱)购一串口直可下载的开发板套件(先和老板说好会配你一堆堆现成的程序),你就挂在你这计算机上,看到那不懂的了就开机打进去试试!哈!我保你一月就小有成效。交流资料,视屏这网上多的是!嘿!再有解决不了的问题这来找我!