Keil和Protues联调 圣诞树

#include <REG52.H>//80C52特殊功能寄存器定义

#define LED_PORT0 P0	//用P0口驱动灯,低亮,高灭
#define LED_PORT1 P1  //用p1口驱动灯,低亮,高灭
#define LED_PORT2 P2  //用P2口驱动灯,低亮,高灭
#define LED_PORT3 P3  //用p3口驱动灯,低亮,高灭
void time(unsigned int ucMs);/* 延时单位:毫秒 */
void main(void)
{
unsigned char	ucTimes;	
#define DELAY_TIME 400 //延时
     while(1)
    {
     LED_PORT0=0xff;//灭P0口灯
     time(200);
     //从左往右依次点亮LED
     for(ucTimes=0;ucTimes<8;ucTimes++){//循环点亮P1口灯
     LED_PORT0 = LED_PORT0 - (0x80>>ucTimes);//亮灯需低电平驱动
     time(DELAY_TIME);
     }
		 LED_PORT1=0xff;//灭P1口灯
			time(200);
		 //然后从右往左依次点亮LED
     for(ucTimes=0;ucTimes<8;ucTimes++){//循环点亮P1口灯
     LED_PORT1 = LED_PORT1 - (0x01<<ucTimes);//亮灯需低电平驱动
     time(DELAY_TIME);
		 }
    LED_PORT2=0xff;//灭P2口灯
		time(200);
		 //然后从右往左依次点亮LED
     for(ucTimes=0;ucTimes<8;ucTimes++){//循环点亮P2口灯
     LED_PORT2 = LED_PORT2 - (0x01<<ucTimes);//亮灯需低电平驱动
     time(DELAY_TIME);
		 }
		 LED_PORT3=0xff;//灭p3口灯
		 time(200);
		 for(ucTimes=0;ucTimes<1;ucTimes++){//循环点亮P2口灯
     LED_PORT3 = LED_PORT3 - (0x01<<ucTimes);//亮灯需低电平驱动
     time(DELAY_TIME);
		 }
     LED_PORT0=0xff;//灭P0口灯
		 LED_PORT1=0xff;//灭p1口灯
		 LED_PORT2=0xff;//灭p2口灯
		 LED_PORT3=0xff;//灭p3口灯
     time(200);
		 //从左往右依次点亮LED
     for(ucTimes=7;ucTimes<8;ucTimes++){//循环点亮P3口灯
     LED_PORT3 = LED_PORT3 - (0x80>>ucTimes);//亮灯需低电平驱动
     time(DELAY_TIME);
		 }
		 //从左往右依次点亮LED
     for(ucTimes=0;ucTimes<8;ucTimes++){//循环点亮P2口灯
     LED_PORT2 = LED_PORT2 - (0x80>>ucTimes);//亮灯需低电平驱动
     time(DELAY_TIME);
		 }
     //然后从右往左依次点亮LED
     for(ucTimes=0;ucTimes<8;ucTimes++){//循环点亮P1口灯
     LED_PORT1 = LED_PORT1 - (0x80>>ucTimes);//亮灯需低电平驱动
     time(DELAY_TIME);
		 }
		//从左往右依次点亮LED
     for(ucTimes=0;ucTimes<8;ucTimes++){//循环点亮P0口灯
     LED_PORT0 = LED_PORT0 - (0x01<<ucTimes);//亮灯需低电平驱动
     time(DELAY_TIME);
		 }
		 
		 
			 
		time(1000);
     LED_PORT0=0xff;//time(DELAY_TIME);//全灭
     LED_PORT1=0xff;//time(DELAY_TIME);//全灭
     LED_PORT2=0xff;//time(DELAY_TIME);//全灭
		 LED_PORT3=0xff;//time(DELAY_TIME);//全灭
		 time(1000);
     LED_PORT0=0;//time(DELAY_TIME);//全亮
		 LED_PORT1=0;//time(DELAY_TIME);//全亮
     LED_PORT2=0;//time(DELAY_TIME);//全亮
		 LED_PORT3=0;//time(DELAY_TIME);//全亮
		 time(1000);
     LED_PORT0=0xff;//time(DELAY_TIME);//全灭
     LED_PORT1=0xff;//time(DELAY_TIME);//全灭
		 LED_PORT2=0xff;//time(DELAY_TIME);//全灭
		 LED_PORT3=0xff;//time(DELAY_TIME);//全灭
		 time(1000);
     LED_PORT0=0;//time(DELAY_TIME);//全亮
     LED_PORT1=0;//time(DELAY_TIME);//全亮
     LED_PORT2=0;//time(DELAY_TIME);//全亮
		 LED_PORT3=0;//time(DELAY_TIME);//全亮
	
     }
}
/*********** time C **************/
void time(unsigned int ucMs)//延时单位:ms
{
#define DELAYTIMES 239
unsigned char  ucCounter;  // 延时设定的循环次数

	while (ucMs!=0) {
		for (ucCounter=0; ucCounter<DELAYTIMES; ucCounter++){}//延时
		ucMs--;
  	}
}

上面的是keil部分的代码

上面两幅图是Protues的仿真图,第一个是LED的连接,第二个是芯片的连接。芯片采用AT89C52(没有.BUS的后缀)。本人艺术水平不高,摆出来的圣诞树可能不太好看。

联调的步骤在之前本人的第一个文章中http://t.csdnimg.cn/WPFNe

如果有技术上的问题,欢迎指正。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值