导航:首页 > 操作系统 > 51单片机控制led闪烁汇编语言

51单片机控制led闪烁汇编语言

发布时间:2022-06-10 03:39:55

A. 51单片机电子时钟设计怎么更改led灯闪烁频率用汇编语言

你这个程序错误太多了,用汇编时关键的几个程序段都未分清:主程序、定时器T0中断、定时器T1中断等,因MOV IE,#8AH语句说明用的是中断方式,显然漏了 ORG 0000H、ORG 000BH和ORG 001BH伪指令。要改时间可改CJNE R7,#160,JW中的160。

B. 用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!

C语言实现LED灯闪烁控制配套51单片机开发板。

#include //包含单片机寄存器的头文件

/****************************************
函数功能:延时一段时间

*****************************************/

void delay(void) //两个void意思分别为无需返回值,没有参数传递。

{

unsigned int i; //定义无符号整数,最大取值范围65535。

for(i=0;i<20000;i++) //做20000次空循环。

; //什么也不做,等待一个机器周期。

}

/*******************************************************

函数功能:主函数 (C语言规定必须有也只能有1个主函数)。

********************************************************/
void main(void)

{

while(1) //无限循环。

{

P0=0xfe; //P1=1111 1110B, P0.0输出低电平。

delay(); //延时一段时间。

P0=0xff; //P1=1111 1111B, P0.0输出高电平。

delay(); //延时一段时间。

}

}

单片机驱动LED灯的源程序:

#include<reg52.h> //头文件。

#define uint unsigned int

#define uchar unsigned char

sbit LED1=P1^7; //位定义。

void delay_ms(uint);//mS级带参数延时函数。

void main()

{

while(1)

{

LED1=0;

delay_ms(1000);

LED1=1;

delay_ms(1000);

}

}

void delay_ms(uint z) //延时子程序

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

(2)51单片机控制led闪烁汇编语言扩展阅读:

单片机应用分类:

通用型:

这是按单片机(Microcontrollers)适用范围来区分的。例如,80C51式通用型单片机,它不是为某种专门用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制电路。

总线型:

这是按单片机(Microcontrollers)是否提供并行总线来区分的。总线型单片机普遍设置有并行地址总线、 数据总线、控制总线,这些引脚用以扩展并行外围器件都可通过串行口与单片机连接。

另外,许多单片机已把所需要的外围器件及外设接口集成一片内,因此在许多情况下可以不要并行扩展总线,大大减省封装成本和芯片体积,这类单片机称为非总线型单片机。

控制型:

这是按照单片机(Microcontrollers)大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型。

通常是小封装、低价格,外围器件和外设接口集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。

参考资料来源:网络-单片机



C. 51单片机控制LED汇编显示程序

程序思想如下 可以想象成一个整数000每次加1后显示一次知道999后溢出跳回起点继续,程序如下
ORG 0000H
AJMP START
START: MOV 30H,#00H ;数码管显示初值
MOV 31H,#00H
MOV 40H,#00H ;显示增量
MOV 41H,#01H
STL1: ACALL LED ;LED显示
ACALL DELAY0.5S
ACALL BCDADD
MOV A,30H
ANL A,#0F0H
JNZ START ;判断是不是超过999
AJMP STL1
BCDADD: CLR C
MOV A,31H
ADDC A,41H
DA A
MOV 31H,A
MOV A,30H
ADDC A,40H
DA A
MOV 30H,A
RET
LED: MOV A,30H
ANL A,#0FH
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
MOV A,31H
ANL A,#0F0H
SWAP A
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
MOV A,31H
ANL A,#0FH
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P2,A
RET
DELAY0.5S: MOV R6,#200
SL1: MOV R5,#250
SL2: NOP
DJNZ R5,SL2
DJNZ R6,SL1
RET
TAB: DB 0C0H ;0
DB 0F9H ;1
DB 0A4H ;2
DB 0B0H ;3
DB 099H ;4
DB 092H ;5
DB 082H ;6
DB 0F8H ;7
DB 080H ;8
DB 090H ;9
DB 088H ;A
DB 083H ;B
DB 0C6H ;C
DB 0A1H ;D
DB 086H ;E
DB 08EH ;F
END

PS1:延迟0.5秒的晶振是3.57MHZ
PS2:希望我的LED显示代码没写错,我是认为你是0-7接的A-DP
PS3:网络的显示格式真恶心 将就着看吧 程序倒是应该没有什么错误
P4:程序已经修改 重新拷贝一下吧

D. 51单片机LED操作汇编语言程序解释

ORG 0000H //程序的入口
LJMP MAIN //跳到MAIN标号处
ORG 0100H //MAIN入口
MAIN: MOV TMOD, #10H //定义定时器/计数器的工作模式,此为T1方式0,为13位定时器/计数
MOV TL1, #00H //向定时器低位置初值
MOV TH1, #4BH //向定时器高位置初值
MOV R1, #20 //赋值
MOV R0, #00H //赋值
MOV A, #00H //赋值
MOV P3, A //p3口清零(T1口对应p3.5)
MOV DPTR, #TAB //取表中的值
SETB TR1 //开户定时器T1
LOOP: JBC TF1, PTF1 //TF1为1时(TF1为T1的溢出标志位),清零,并跳到标号PTF1;
AJMP LOOP //等待中断
PTF1: MOV TL1, #00H //向定时器低位置初值
MOV TH1, #4BH //向定时器高位置初值;因为方式0不能自动重装初值,所以要软件重装初值
DJNZ R1, LOOP //循环
MOV R1, #20 //赋值
MOV A, R0
ADD A,#01H //加1
DA A //累加器十进制调整
ANL A, #0FH //与操作
MOV R0, A //保存A到R0中
MOVC A, @A+DPTR //取表中的值到A
MOV P1, A //将A送到P1口输出
CPL P3.1 //取反
CPL P3.2 //取反
AJMP LOOP //循环
TAB: //表中的内容
DB 0C0H,0F9H,0A4H,0B0H,99H
DB 92H,82H,0F8H,80H,90H
END

E. 用汇编语言编写51单片机程序让LED灯亮0.5秒,灭2秒无限循环

ORG 0000H
MOV SP,#60H
E: CLR P1.0 ; P1.0 LED亮
ACALL DEL_1S ; 0.5 秒
SETB P1.0 ; P1.0 LED灭
ACALL DEL_2S ;2秒
SJMP E ; 循环
DEL_1S: MOV R2,#10 ; 0.5秒

JMP DEL_2S+2
DEL_2S: MOV R2,#40 ; 2秒
SETB TR1
LOOP: JNB TF1,$
MOV TL1,#0B0H
MOV TH1,#3CH
CLR TF1
DJNZ R2,LOOP
CLR TR1
RET
END

F. 求51单片机定时LED闪烁程序代码

#include<reg52.h>//包括一个52标准内核的头文件

#defineucharunsignedchar

/******************************主函数*****************************/

voidtimer0();

voidmain()//主程序

{

TMOD=0x01;//定时器0工作方式1

EA=1;

ET0=1;//定时器0中断

TR0=1;//启动定时器0

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

while(1);//程序循环

}

/*****************************定时器0中断*************************/

voidtimer0()interrupt1

{

uchart;//定义变量

TF0=0;//定时器清0

t++;//中断一次累加1

if(t==20)//预置值,溢出20次就是1秒钟,晶振12MHZ

{

t=0;

P3=~P3;//反转LED灯的亮灭

}

}

/*****************************************************************/

G. 51单片机用汇编语言实现八个LED的全亮全灭

;以89c51单片机为例,假定用P1控制LED:IO_LED EQU P1;led_0 BIT P1.0;led_1 BIT P1.1;led_2 BIT P1.2;led_3 BIT P1.3;led_4 BIT P1.4;led_5 BIT P1.5;led_6 BIT P1.6;led_7 BIT P1.7; ;定义开关LED的数据,假定LED正极一端接电源,另一端通过限流电阻接I/O端口: DATA_CloseLED EQU 11111111B;DATA_OpenLED EQU 00000000B;ORG 0000HAJMP MAINORG 0030H;-----------------------;延时0.5秒程序(注:此延时函数摘自STC-ISP)DELAY500MS:;@12.000MHzPUSH 30HPUSH 31HPUSH 32HMOV 30H,#4MOV 31H,#205MOV 32H,#180NEXT:DJNZ 32H,NEXTDJNZ 31H,NEXTDJNZ 30H,NEXTPOP 32HPOP 31HPOP 30HRET;-----------------------;下面是主程序MAIN:MOV IO_LED,#DATA_CloseLED;同时关闭8个LEDLCALLDELAY500MS;延时0.5秒MOV IO_LED,#DATA_OpenLED;同时打开8个LEDLCALLDELAY500MS;延时0.5秒LJMP MAIN;循环END;上面程序演示了8个LED间隔0.5秒同时亮和灭的变化。51单片机用汇编语言实现八个LED的全亮全灭

H. 51单片机 通过串口发送控制LED灯 闪烁频率 c代码 跪求!!

下面的程序我已经调试过了,你可以直接使用,但是一秒闪烁次数t的最大为2000,如果要大于这个数,你必须改小dalay1ms ()内的j值,就可以改大t
#include <reg52.h>
sbit LED0=P1^0;
unsigned int t=0,k;
void dalay1ms (unsigned int i) //晶振选用11.0592
{
unsigned int j;
for(i;i>0;i--)
for(j=922;j>0;j--);
}

void main ()
{

EA=1;
ES=1;
TMOD=0x20; //定时器T1方式为2
TH1=0xfa; //波特率设定为9600
TL1=0xfa;

while(1)
{
if(t!=0)
{
k=2000/t;
dalay1ms (k) ;
LED0=!LED0;
}
if(t==0)
LED0=0;
}
}
void counter4(void) interrupt 4
{
while(RI==0);
RI = 0;
t= SBUF;
}

I. 51系列单片机控制LED的发光(汇编语言编写)

硬件做好了吗

可以看看原理图

我做单片机的

阅读全文

与51单片机控制led闪烁汇编语言相关的资料

热点内容
同花顺上传到服务器地址 浏览:927
电脑加密安卓版 浏览:824
手机程序加密有什么作用 浏览:178
求黑马程序员python教程 浏览:528
androidmvvm优缺点 浏览:894
unix下编译库文件 浏览:633
程序员的u盘 浏览:237
android根据经纬度获取城市 浏览:564
python使用解释器还是编译器 浏览:358
以下关于有加密算法及密钥描述 浏览:220
linuxgethostname 浏览:416
程序员多数有对象 浏览:131
单片机延时程序计算 浏览:444
编译原理语法翻译 浏览:504
pr编译出错渲染存在偏移 浏览:262
如何制作自家的app 浏览:199
推荐一个解压软件rar解压帮手 浏览:212
wd文档加密器 浏览:748
服务器上传压缩包一般是什么格式 浏览:333
发送加密文件密码几位数 浏览:160