立即注册 登录
返回首页

uid:203025的个人空间

日志

单片机延时程序

已有 617 次阅读2017-5-24 19:28 | 单片机, 程序

程序名: 占用CPU延时程序应用实例

硬件支持: 12MHz

接口说明: P1接口8个LED

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

说明:本程序可使单片机P1.0接口上的LED灯以4秒为周期闪烁。

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

#include <AT89X52.h> //头文件定义

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

* IO定义 *

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

sbit LED = P1 ^ 0; //定义P1.7为LED控制口,低电平使能

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

* 毫秒级延时函数 *

调用函数必须给延时函数一个0~65535的延时值对应0MS到65535MS

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

void Delay (unsigned int a){ //需要输入变量值0~65535

unsigned int i;

while( --a != 0){ //i 从0加到600,CPU大概就耗时1毫秒

for(i = 0; i < 600; i++); //空指令循环

}

}

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

* 主函数 *

实验板上连接到单片机上的LED闪烁程序

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

void main (void){ //

while(1){ //无限循环以下程序

LED = ~LED; //取LED相反状态,闪烁

Delay(4000); //修改这里的数值看看会有什么变化

} //(0~65535之间)

}

要求:

89C52 IC 单片机

4分半钟 IC 1脚 低电平

5分钟 IC 2脚 低电平

10分钟 IC 3脚 低电平

15分钟 IC 4脚 低电平

注:1.硬件应使用12MHz晶振;

2.程序使用定时器0,溢出周期50ms,计90次溢出为

4分半,其它以此类推,15分到时IC4脚(P1.3)输

出低电平,然后关闭定时器,停止计数。

-------------------------------------------------*/

#include<reg52.h>

sbit P10=P1^0;

sbit P11=P1^1;

sbit P12=P1^2;

sbit P13=P1^3;

unsigned char Count=0;

unsigned char Half_Min=0;

void main()

{

TMOD=0x01;

TH0=0x3C;

TL0=0xB0;

ET0=1;

EA=1;

TR0=1;

while(1);

}

void timer_0() interrupt 1

{

TH0=0x3C;

TL0=0xB0;

Count++;

if(Count>10) //大于10则为500ms

{Half_Min++;

Count=0;

switch(Half_Min)

{

case 9:P10=0;break; //4分半

case 10:P11=0;break; //5分

case 20:P12=0;break; //10分

case 30:P13=0;TR0=0;break; //15分

default:break;

}

}

}


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

返回顶部