⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 生日提醒.lst

📁 单片机驱动32X64点阵资料
💻 LST
📖 第 1 页 / 共 5 页
字号:
 670   2      
 671   2              }
C51 COMPILER V8.08   蒧日提醒                                                              10/25/2011 08:42:07 PAGE 12  

 672   1               }
 673          
 674          /*主函数*/
 675          void main()
 676          {
 677   1       Move=0;  
 678   1      E=0;               //595使能
 679   1      zimuo=0;
 680   1      IP=0x04;           //设置优先级 外部中断1为优先级
 681   1      TMOD=0x12;      //定时器0 1 
 682   1      TH1=0x3C;    //15ms晶振为40M    定时器1方式1 16位模式初始化
 683   1      TL1=0xB0;
 684   1      EA=1;
 685   1      TR1=1;
 686   1      ET1=1;
 687   1      TH0=0x00;//定时器0初始化方式2 8位自动重装方式
 688   1      TL0=0x00;
 689   1      TR0=1;
 690   1      ET0=1;
 691   1      //外部中断
 692   1      IT1=1;  //下降沿触发中断
 693   1      
 694   1      RCAP2H = 0x7D;
 695   1      RCAP2L = 0x0CB;
 696   1      ET2 = 1;
 697   1      TR2=1;
 698   1      EX1=1;  //开外中断1
 699   1      ri=1;
 700   1      r=1;
 701   1      zz=0;
 702   1      rr=1;     
 703   1         while(1)             //重复(无限)循环显示
 704   1          {
 705   2      
 706   2                 if(irokk==1)
 707   2         {  
 708   3          Ircordpro();
 709   3           irokk=0;
 710   3         }
 711   2               if((resget==0)||(IRcord[0]==0x1A))
 712   2                   {  DelayMs();
 713   3                  if((resget==0)||(IRcord[0]==0x1A))
 714   3                          Set1302(starts_time);    //初始化 
 715   3                      W1302(0x8e,0x00);            //控制命令,WP=0,写操作                
 716   3                      W1302(0x90,0xa5);            //打开充电二级管  一个二级管串联一个2K电阻 
 717   3                  } 
 718   2              
 719   2                du1302();       //读取 秒 分 时 日 月 星期 年
 720   2               /* if((Cent>0x02)&&(Cent<0x07))
 721   2                {
 722   2                 
 723   2                       MCU_POWER_DOWN;
 724   2      
 725   2                }      */
 726   2              
 727   2                if(Sec!=ping)
 728   2                {     
 729   3                  ping=Sec;
 730   3                      w=~w;
 731   3                }
 732   2      
 733   2      
C51 COMPILER V8.08   蒧日提醒                                                              10/25/2011 08:42:07 PAGE 13  

 734   2      
 735   2                c_sun=0;
 736   2          //y=R1302(0x8c+1)/16*10+R1302(0x8c+1)%16 ;
 737   2      
 738   2          nian_sun=Year;
 739   2          // y=R1302(0x88+1)/16*10+R1302(0x88+1)%16   ;
 740   2          yue_sun=Month;
 741   2         //    y=R1302(0x86+1)/16*10+R1302(0x86+1)%16 ;
 742   2          ri_sun=Day;
 743   2          Conver_xingqi(c_sun,nian_sun,yue_sun,ri_sun);       //农历星期转换
 744   2          Conversion(c_sun,nian_sun,yue_sun,ri_sun);          //农历转换
 745   2      
 746   2                zimuo=0;                                      
 747   2                        if ((key_moda==0)||(IRcord[0]==0x0E))                  //设置和选择项目键
 748   2               {  DelayMs();
 749   3                      if((key_moda==0)||(IRcord[0]==0x0E))
 750   3                         {
 751   4                            if(id++==10) {id=0;}
 752   4                                        ha=0;msec=0;            //清闪烁标志
 753   4                                while((key_moda==0)||(IRcord[0]==0x0E))
 754   4                                        {
 755   5                                         Show_word();IRcord[0]=0x00;                            
 756   5                                        }    
 757   4                     }
 758   3                                                                                 
 759   3                   }
 760   2      
 761   2                
 762   2            if(id!=0)
 763   2                {
 764   3            if ((key_up==0)||(IRcord[0]==0x0A))                  //增加
 765   3               {
 766   4                  DelayMs();
 767   4                  if((key_up==0)||(IRcord[0]==0x0A))
 768   4                         {
 769   5                                while((key_up==0)||(IRcord[0]==0x0A))
 770   5                                                      {Show_word();IRcord[0]=0x00;
 771   6                                                      
 772   6                                                      }        //调用显示
 773   5                                ha=0;msec=0;            //清闪烁标志
 774   5                                       
 775   5                                Set(id,0);
 776   5                                                       //调用时间调调整
 777   5                             }
 778   4                                   
 779   4               }
 780   3         
 781   3            if ((key_Down==0)||(IRcord[0]==0x09))  //减少
 782   3               {
 783   4                  DelayMs();
 784   4                  if((key_Down==0)||(IRcord[0]==0x09))
 785   4                          {
 786   5                            while((key_Down==0)||(IRcord[0]==0x09))
 787   5                                    {Show_word();IRcord[0]=0x00;
 788   6                                               
 789   6                                                }   //调用显示
 790   5                                ha=0;msec=0;          //清闪烁标志
 791   5                                Set(id,1);       //调用时间调调整
 792   5                              }
 793   4                                               
 794   4               }
 795   3                }
C51 COMPILER V8.08   蒧日提醒                                                              10/25/2011 08:42:07 PAGE 14  

 796   2                else
 797   2                 {
 798   3                  if ((key_up==0)||(IRcord[0]==0x0A))                  //增加
 799   3                {
 800   4                  DelayMs();
 801   4                  if((key_up==0)||(IRcord[0]==0x0A))
 802   4                         {
 803   5                                while((key_up==0)||(IRcord[0]==0x0A))
 804   5                                                      {Show_word();IRcord[0]=0x00;
 805   6                                              
 806   6                                                      }        //调用显示
 807   5                                ha=0;msec=0;            //清闪烁标志  
 808   5                            if(b!=0)                           //手动调整显示的内容
 809   5                                 { 
 810   6                                           if(f++==6)                  //f为显示转换标志
 811   6                                           f=0;
 812   6                                 }
 813   5                    }
 814   4                                
 815   4                       }
 816   3                 }
 817   2                                //------------------------
 818   2      if (nn==1)         //调用温湿度读取子程序 
 819   2         {RH(); }
 820   2                 //串口显示程序 
 821   2                 //--------------------------  
 822   2         Show_word();   //待机显示按三秒间隔分别显示年、月日、星期、时分秒。
 823   2      
 824   2         IRcord[0]=0x00;
 825   2      
 826   2      
 827   2         }       
 828   1      }
 829          /************************************************/
 830          
 831          void tim0_isr (void) interrupt 1 using 1//定时器1中断服务函数
 832          {
 833   1        irtime++;
 834   1      }
 835          //外部中断解码程序
 836          void ex0_isr (void) interrupt 2 using 2//外部中断1服务函数
 837          {
 838   1        static unsigned char  i,p,z;
 839   1        static bit startflag;
 840   1      
 841   1       if(startflag)
 842   1       {
 843   2              
 844   2          if(irtime<208&&irtime>=109)//引导码 TC9012的头码
 845   2                 { i=0;
 846   3                         p=1;
 847   3                         z=0;
 848   3                              irdata[i]=irtime;
 849   3                              irtime=0;
 850   3                              }
 851   2             z++;
 852   2                if(z>=18)
 853   2                 {
 854   3            irdata[p]=irtime;
 855   3            irtime=0;
 856   3            p++;
 857   3             if(p==17)
C51 COMPILER V8.08   蒧日提醒                                                              10/25/2011 08:42:07 PAGE 15  

 858   3               {
 859   4             irokk=1;
 860   4           p=0;
 861   4            }   
 862   3                    }
 863   2        else 
 864   2          irtime=0;          
 865   2                      
 866   2                        }
 867   1       
 868   1         
 869   1          else
 870   1        {irtime=0;startflag=1;}
 871   1      
 872   1      }
 873          /************************************************/
 874          void Ircordpro(void)//红外码值处理函数
 875          {
 876   1        unsigned char i, j, k;
 877   1        unsigned char cord,value;
 878   1      
 879   1        k=1;
 880   1        for(i=0;i<2;i++)//处理4个字节
 881   1           {
 882   2            for(j=1;j<=8;j++) //处理1个字节8位
 883   2               {
 884   3                cord=irdata[k];
 885   3                if(cord>25)//大于某值为1
 886   3            {
 887   4                   value=value|0x80;
 888   4         }
 889   3                else
 890   3            {
 891   4                   value=value;
 892   4         }
 893   3                if(j<8)
 894   3            {
 895   4          value=value>>1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -