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

求51单片机定时LED闪烁程序代码,第1张

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

#define uchar unsigned char

/主函数/

void timer0();

void main() // 主程序

{

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

EA=1;

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

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

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

while(1);  //程序循环

}

/定时器0中断/

void timer0() interrupt 1

{

uchar t;//定义变量

TF0=0;//定时器清0

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

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

{

t=0;

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

}

}

//

#include<reg51h>

sbit led=P2^7;

sbit key=P3^2;

void delayms(int a)

{

unsigned char i;

while(a--)for(i=0;i<120;i++);

}

void ext0() interrupt 0

{

led=0;

while(key==0);

}

main()

{

EX0=1;

IT0=1;

EA=1;

while(1)

{

led=0;

delay(1000);

led=1;

delay(1000);

}

}

查询方式:

ORG 0000H

AJMP MAIN

MAIN:

MOV P1,#01H

MOV R0,#8

MOV A,P1

XU: RL A

MOV P1,A

ACALL DELAY

DJNZ R0,XU

AJMP MAIN

DELAY:

MOV R0,#0FFH

ONE:MOV R1,#0FFH

TWO:MOV R2,#02H

THE:DJNZ R2,THE

DJNZ R1,TWO

DJNZ R0,ONE(将近1S)

RET

END

中断方式:

org 0000h ;程序从0000开始运行

jmp init;跳到主程序

init:

mov ie,#10000001b ;中断使能

mov ip,#00000001b ;中断优先

mov tcon,#0000000b ;中断为电平触发

main: ;主程序循环点亮

mov p1,#00h ;全亮

lcall delay ;延时一段时间

mov a,#0feh ;每次只亮一个灯。

loop: mov p1,a ;输出到p1

lcall delay ; 延时

rl a ;循环左移。

ajmp loop ; 跳转main继续循环

delay: mov r5,#20 ;延时子程序1闪烁灯调用

d1:mov r6,#20

d2: mov r7,#250

djnz r7,$

djnz r6,d2

djnz r5,d1(时间此处可自行设置)

led_table = LED_0F + LED[2]; //这个 LED_0F是数据表的首地址,,+LED[2] 变成数组的第三个数的地址。

i = led_table; 这里获取值。。。 不过我想太麻烦了

改为

i = LED_0F [ LED[2] ] 就可以了。

以上就是关于求51单片机定时LED闪烁程序代码全部的内容,包括:求51单片机定时LED闪烁程序代码、LED接p2.7,按键接p3.2,要求主程序中led每隔一秒闪一次,采用软件延迟。、求个89c51单片机 汇编语言设计的LED跑马灯的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9414979.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存