单片机(ISIS 7 Professional):实现简易十字路口红绿灯代码项目

这一篇文章主要介绍用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);
}
/*仅供学习参考*/

  • 8
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值