打印
[PIC®/AVR®/dsPIC®产品]

找到了一个14年前的硬盘发现了我学51时候的代码

[复制链接]
510|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
 #include"reg51.h"



void delay(void)
{
unsigned int i,j;
for(i=0;i<400;i++)
   for(j=0;j<400;j++)
   ;
}

void main(void)
{  unsigned int i;
unsigned char codep2[]={139,251,141,169,249,169,137,187,137,169};       
    unsigned char codep0[]={246,254,254,254,246,247,247,254,246,246};
while(1)
  {
  for(i=0;i<10;i++)
   {P2=codep2[i];P0=codep0[i];delay(); P0=0xff;P2=0xff;}
  }                

}
能看出来我这是干啥用的代码不?

使用特权

评论回复
沙发
gaoyang9992006|  楼主 | 2025-1-18 10:43 | 只看该作者
#include<reg51.h>  
#define uchar unsigned char
#define uint  unsigned int
sbit s1=P1^0;
sbit s2=P1^1;
sbit s3=P1^2;
sbit p=P0^7;
uchar code value[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //定义0~9编码的数组,后面只需要调用数组
uchar code choice[4]={0x01,0x02,0x04,0x08};
uchar time;            //定义中断次数标识符
uchar second;  //定义秒的标识符
uchar minute; //定义分的标识符
uchar hour;         //定义小时


void delay(void)                   
   {
      uchar t;
      for(t=0;t<100;t++)
          ;
   }
void delay60ms(void)
  {
    unsigned char i,j;
         for(i=0;i<200;i++)
         for(j=0;j<100;j++)
           ;
  }
void displaysecond(uchar s)
   {
   P2=choice[0];p=0;delay();P2=choice[1];p=0;delay(); P2=choice[2];p=0;delay();P2=choice[3];p=0;delay();
   }
void displayminute(uchar m)
{
P2=choice[0];P0=value[m%10];delay();P2=choice[1];P0=value[m/10];delay();       
}
void displayhour(uchar h)
{
P2=choice[2];P0=value[h%10];delay();P2=choice[3];P0=value[h/10];delay();
}

void key(void)
{          
          if(s1==0)      
           {
                     delay60ms(); delay60ms();   
                         if(s1==0) { hour++; }
           }
           if(s2==0)      
           {
                     delay60ms(); delay60ms();   
                         if(s2==0) { minute++; }
           }
                  if(s3==0)      
           {
                     delay60ms(); delay60ms();   
                         if(s3==0)
                          {hour=0;minute=0;second=0;}
           }
}  
void main(void)
{
TMOD=0x01;
EA=1;
ET0=1;
TH0=0x4B;
TL0=0xFF;
TR0=1;
time=0;second=0;hour=0;
while(1)
  {
  displaysecond(second);
  displayminute(minute);
  displayhour(hour);
  div();
  key();
  
  }

}


   void interserve(void)interrupt 1 using 1                 //响应中断程序声明对应的模式
   {
           TH0=(65536-46083)/256;TL0=(65536-46083)%256;
           time++;
       if(time==20)
           {
           time=0;second++;
           }  
             
     
           if(second==60)
           {
           second=0;minute++;
           }
           if(minute==60)
           {
           minute=0;hour++;
           }
       if(hour==24)
           hour=0;
          


   }
          

使用特权

评论回复
板凳
gaoyang9992006|  楼主 | 2025-1-18 10:43 | 只看该作者
unsigned char year,month,K1,K2,K3,M0;
void key1();
void key2();
void delay();
unsigned char key();
unsigned char find();
void delay()                          //延时函数
{
  unsigned char i,j;
  for(i=0;i<2;i++)
  for(j=0;j<165;j++)
  ;
}

unsigned char find()          //按键功能选择
{
  if(K1==0)
  {
  delay();
  if(K1==0)
  M0++;delay();
  if(M0>3)
  M0=0;
  }
return M0;
}
unsigned char key(unsigned char M0)                                 //根据功能选项判断执行哪种指令
{

if(M0==1)
key1();
if(M0==2)
key2();
return 0;
}
main()
{
   
    key(find());
   
}

/************功能1********************************/
void key1()
{
if(K2==0)
{delay();
if(K2==0)
month++;
}
}
/****************功能2***************************/
void key2()
{
if(K3==0)
{delay();
if(K3==0)
year++;
}
}

使用特权

评论回复
地板
gaoyang9992006|  楼主 | 2025-1-18 10:45 | 只看该作者

当年还学数码管怎么显示数字。

使用特权

评论回复
5
gaoyang9992006|  楼主 | 2025-1-18 10:45 | 只看该作者

使用特权

评论回复
6
mintspring| | 2025-1-18 14:39 | 只看该作者
不知道现在的大学是不是也是以51为教学内容

使用特权

评论回复
7
yiy| | 2025-1-21 14:40 | 只看该作者
万年历的程序应该是很多人都玩过的。

使用特权

评论回复
8
mintspring| | 2025-1-25 16:02 | 只看该作者
万年历的程序吗?不错啊,入门都是学这个。

使用特权

评论回复
9
幸福小强| | 2025-1-25 16:57 | 只看该作者
很不错的用法,学到了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:如果你觉得我的分享或者答复还可以,请给我点赞,谢谢。

1997

主题

16068

帖子

211

粉丝