微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求各位大大帮忙看看我的单片机c语言程序能否完成实验目标

求各位大大帮忙看看我的单片机c语言程序能否完成实验目标

时间:10-02 整理:3721RD 点击:
/*******************************************************************************
*  单片机流水灯
*  引脚设定:LED = P2,P0          数码管 =p1         最小系统如图   
*  流水灯效果;1;LED(P2,PO)熄灭,2:数码管依次显示数字:0-9 ; 3: 数码管熄灭,LED(P2,P0)全亮
   4:LED(P2)亮,LED(p0)熄灭 延迟时间 交换亮灭 反复3次  5:LED(P2,P0)全灭,LED(p0)流水效果,延迟时间 LED(P2)流水效果
   6:LED(P2,P0)2.4.6 号LED闪烁效果, 7,LED(P2,P0)正流水效果,延迟时间 反流水效果 8:完  
*
*       
*
*******************************************************************************/
#include<reg51.h>
#include<intrins.h>
#define GPIO_LED0 P0
#define GPIO_LED2 P2
#define        GPIO_DIG  P1
sbit K1 = P3^1 ; // 左移
sbit K2 = P3^2 ; // 右移
unsigned int  j,i,p,t,r,k;
unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void Delay10ms();
main()
{
while(1)
{
   GPIO_LED0 = 1;
   GPIO_LED2 = 1;
          i = 10 ;
   GPIO_DIG = DIG_CODE[i];
          i--;
                 if(i==0)
                  {
                    i = 10;      
                                       }
        GPIO_LED0 = 0x00;
        GPIO_LED2 = 0x00;
                p = 0;
        while(p<6)
         {      
        Delay10ms();
                p++;
            if(p==5)
                {
                   GPIO_LED0 = 0xff;
                   GPIO_LED2 = 0x00;
                   for(j=0;j<20000;j++)       
                   {Delay10ms();}
                   GPIO_LED0 = 0x00;
                   GPIO_LED2 = 0xff;
                  for(j=0;j<20000;j++)       
                   {Delay10ms();}
                   GPIO_LED0 = 0xff;
                   GPIO_LED2 = 0x00;
                   for(j=0;j<20000;j++)       
                   {Delay10ms();}
                   GPIO_LED0 = 0x00;
                   GPIO_LED2 = 0xff;
                                    
                                                         }                }
               
                    GPIO_LED0=0xff;
                        GPIO_LED2=0xff;                                                                       }
                        Delay10ms();
                        while((1)&&(k<50))
                    {
                           k++;
                        GPIO_LED0=t;
                        t=0xFE;
                        for(j=0;j<20000;j++)                       
                        t=_crol_(t,1);          
                        if(t==0x7f)
                        {
                           t=0xff;               
                           for(j=0;j<20000;j++)                                    
                           GPIO_LED2 =r;
                           r=0xFE;
                           for(j=0;j<20000;j++)                       
                           r=_crol_(r,1);                  }
                           k=0;                                    
                           GPIO_LED2 = 0xd5;
                           GPIO_LED0 = 0xd5;
                           Delay10ms();
                           GPIO_LED2=  0xff;
                           GPIO_LED0=  0xff;
                           for(j=0;j<20000;j++)                                                                       
                           GPIO_LED0=t;
                           GPIO_LED2=t;
                             t=0xFE;
                            for(j=0;j<20000;j++);               
                            t=_crol_(t,1);                                                                                                        }
                                if(t==0x7f)
                                {
                                   t=_cror_(t,1) ;             }
                                  
                                          
                                                  
                                                   }
void Delay10ms(void)   
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);}

程序在仿真器上仿真一下就知道结果了

WIN7的系统我装不起PRotuse,就无法仿真,求具体方法

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top