求用89C51单片机做的奇偶交替闪烁的单片机程序

求用89C51单片机做的奇偶交替闪烁的单片机程序,第1张

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN:

    MOV P0,#55H

    LCALL DELAY

    MOV P0,#0AAH

    LCALL DELAY:

    SJMP MAIN

DELAY:

    MOV R2,#200

DLY:

    MOV R3,#250

    DJNZ R3,$

    DJNZ R2,DLY

    RET

    END

该功能如果用纯硬件,困难不小。给个51的吧,用1051或2051,体积非常小。

有个51的源程序,你看看能用吗。仿真测试过了(附图)

/

名称:定时器0产生4ms脉冲

论坛:>

编写:Liang yun feng

日期:

修改:无

内容:

/

#include<reg52h>

#include <intrinsh>

#include<stdioh>

#include <absacch>

#define f_osc  12 //晶振频率

#define time0  20000 //定时20000μs(20ms)

unsigned char data time0_h,time0_l; //无符号8位字符

unsigned int idata time0_times; //有符号8位数据

unsigned char data out_kz = 0; //无符号8位字符

sbit mcout_z = P1^0;

sbit mcout_f = P1^1;

unsigned char sec=0,min=0,hour=0,count=0,hc_switch=0;

unsigned char TimeString[9];

/

函 数 名:定时器0初始化 void time0_init()

功    能:设定定时器0的初始参数

说    明:

调    用:

入口参数:

返 回 值:无

/

void time0_init()

{

TMOD=0x21; //定时器0方式1

time0_times=65536-time0f_osc/12;

time0_h=(time0_times/256);

time0_l=(time0_times%256);

TH0=time0_h;

TL0=time0_l;

EA=1;            //总中断打开

ET0=1;           //定时器中断打开

//TR0=1;           //定时器开关打开

}

/

函 数 名:定时器0中断函数 void time0_isr()

功    能:设定定时器0的初始参数

说    明:

调    用:

入口参数:

返 回 值:无

/

void Timer0_isr(void) interrupt 1

{

TR0=0;

TH0=time0_h;   //重新赋值

TL0=time0_l;

count++;

if(count==5)  //20ms×5=100ms(01s),这是最小时间间隔

{count=0;

 out_kz++;

 if(out_kz==2)

   {mcout_z=1;}

 if(out_kz==3)

   {mcout_z=0;}

 if(out_kz==5)

   {mcout_z=1;}

 if(out_kz==10)

   {mcout_f=0;}

 if(out_kz==15)

   {mcout_f=1;}

 if(out_kz==20)

   {mcout_z=0;

    out_kz=0;}

}

TR0=1;

}

//主程序

main()

{

time0_init(); //初始化定时器

TR0=1;    //启动定时器

while(1); //进入死循环,等待中断

}

以上就是关于求用89C51单片机做的奇偶交替闪烁的单片机程序全部的内容,包括:求用89C51单片机做的奇偶交替闪烁的单片机程序、如何实现两个LED灯交替闪烁(要求:蓝灯连续闪两下停,接着红灯闪一下,然后蓝灯再闪两次这样交替循环)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10081679.html

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

发表评论

登录后才能评论

评论列表(0条)

保存