
#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跑马灯的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)