这一篇文章主要介绍用C语言制作一个简易的十字路口红绿灯。
基本电路图如下:
使用的代码如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED0 = P0^0;
sbit LED1 = P0^1;
sbit LED2 = P0^2;
sbit LED3 = P0^3;
sbit LED4 = P0^4;
sbit LED5 = P0^5;
uchar Time = 0,Flash = 0;
uint flag = 1;
//T0 中断函数
void LED_Flash()interrupt 1
{
TH0 = (65536-5000)/256;
TL0 = (65536-5000)%256;
switch(flag)
{
case 1:
LED0 = 0;LED1 = 0;LED2 = 1;
LED3 = 1;LED4 = 0;LED5 = 0;
if(++Time != 200)
return;
Time = 0;flag = 2;
break;
case 2:
if(++Time != 10)
return;
Time = 0;
LED0 = 0;LED1 =! LED1;LED2 = 0;
LED3 = 0;LED4 =! LED4;LED5 = 0;
if(++Flash != 10)
return;
Flash = 0;flag = 3;
break;
case 3:
LED0 = 1;LED1 = 0;LED2 = 0;
LED3 = 0;LED4 = 0;LED5 = 1;
if(++Time != 200)
return;
Time = 0;flag = 4;
break;
case 4:
if(++Time != 10)
return;
Time = 0;
LED0 = 0;LED1 =! LED1;LED2 = 0;
LED3 = 0;LED4 =! LED4;LED5 = 0;
if(++Flash != 10)
return;
Flash = 0;flag = 1;
break;
default:break;
}
}
void main()
{
EA = 1;
ET0 = 1;
TMOD = 0x01; //定时器//计数器方式寄存器TMOD,定时器T0,工作于模式0
//方式:Mode 0x00,位数13位,计数范围:0——8191
TH0 = (65536-5000)/256;
TL0 = (65536-5000)%256;
IE = 0x82;
TR0 = 1; //定时器开关
while(1);
}
/*仅供学习参考*/
更多推荐
单片机(ISIS 7 Professional):实现简易十字路口红绿灯代码项目
发布评论