Keil和Protues联调爱心

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

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

   
		//从左往右依次点亮LED
     for(ucTimes=0;ucTimes<8;ucTimes++){//循环点亮P0口灯
     LED_PORT0 = LED_PORT0 - (0x80>>ucTimes);//亮灯需低电平驱动
     time(DELAY_TIME);
		 }
		   //然后从右往左依次点亮LED
     for(ucTimes=0;ucTimes<8;ucTimes++){//循环点亮P1口灯
     LED_PORT1 = LED_PORT1 - (0x01<<ucTimes);//亮灯需低电平驱动
     time(DELAY_TIME);
		 }
		 
			 

     LED_PORT1=0xff;//time(DELAY_TIME);//全灭
     LED_PORT2=0xff;//time(DELAY_TIME);//全灭
     LED_PORT0=0xff;//time(DELAY_TIME);//全灭
     LED_PORT1=0;//time(DELAY_TIME);//全亮
		 LED_PORT2=0;//time(DELAY_TIME);//全亮
     LED_PORT0=0;//time(DELAY_TIME);//全亮
     LED_PORT1=0xff;//time(DELAY_TIME);//全灭
     LED_PORT2=0xff;//time(DELAY_TIME);//全灭
		 LED_PORT0=0xff;//time(DELAY_TIME);//全灭
     LED_PORT1=0;//time(DELAY_TIME);//全亮
     LED_PORT2=0;//time(DELAY_TIME);//全亮
     LED_PORT0=0;//time(DELAY_TIME);//全亮

     //LED_PORT1=0x55;//time(DELAY_TIME);//隔一个点亮
     //LED_PORT1=0xaa;//time(DELAY_TIME);//交换

     //LED_PORT1=0x55;//time(DELAY_TIME);//隔一个点亮
     //LED_PORT1=0xaa;//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的图,本人艺术水平不太好,图有点乱。这次是AT89C52,没有(.BUS的后缀,有.BUS后缀的本人技术水平较差不会连接线)主要就是芯片的线与Led灯的线要一 一对应,不然识别不了导致所有灯不会亮,给线贴标签步骤是先切换大写,然后按A,就会弹出下图的框。在String那个文本框输入net=#你给线的命名,芯片就可以识别了。

 

联调的步骤在我之前的一个文章里面http://t.csdnimg.cn/WPFNe

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值