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灯交替闪烁(要求:蓝灯连续闪两下停,接着红灯闪一下,然后蓝灯再闪两次这样交替循环)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)