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

📄 fff.lst

📁 汽车专用电子钟程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 167   4                 } 
 168   3      
 169   3                       }
 170   2                    }
 171   1                 
 172   1                 }
 173          /*******************************************************************
 174          * 函数名称:d3()
 175          * 功    能:数码管输出显示
 176          * 入口参数:无
 177          * 出口参数:无
 178          *******************************************************************/ 
 179          void d3(void)             //显示输出
C51 COMPILER V7.06   FFF                                                                   05/01/2008 16:56:16 PAGE 4   

 180                 {
 181   1              uchar sel=0x80,i ;          //定义sel为位选通变量并初使化
 182   1         if(k2)             //判断是否处于调时状态
 183   1          {
 184   2           if(k2==4)a[0]=a[1]=a[4]=a[6]=a[7]=10;    //星期显示设置
 185   2           if(k1&&(k3--==0)) k3=255;       //设置位调节闪烁初值
 186   2          }
 187   1              for(i=0;i<=8;i++)          //循环显示八个数码管
 188   1                 {
 189   2            P2=0xff;           //清屏
 190   2                  P0=tt[a[i]];          //输出显示数值
 191   2                  if(k1&&(k3>200))         //判断是否闪烁
 192   2                     if     (k1==1&&(i==6||i==7))P2=0xff; //时位闪烁
 193   2                  else if(k1==2&&(i==3||i==4))P2=0xff; //分位闪烁
 194   2                  else if(k1==3&&(i==0||i==1))P2=0xff; //秒位闪烁
 195   2                   else P2=~sel;          //非闪烁状态
 196   2                  else P2=~sel;          //非闪烁状态
 197   2                  sel=sel>>1;           //显示位移位
 198   2                 }
 199   1             }
 200          /*******************************************************************
 201          * 函数名称:d2()
 202          * 功    能:循环调用
 203          * 入口参数:无
 204          * 出口参数:无
 205          *******************************************************************/        
 206          void d2(void)
 207                 {
 208   1           while(1)
 209   1                   { 
 210   2                    a[0]=*s%10;   //给显示数组赋值
 211   2                    a[1]=*s/10;
 212   2                    a[2]=10;
 213   2                    a[3]=*m%10;
 214   2                    a[4]=*m/10;
 215   2                    a[5]=10;
 216   2                    a[6]=*h%10;
 217   2                    a[7]=*h/10;
 218   2      
 219   2                    d3();     //调用显示输出函数 
 220   2          }
 221   1          }
 222          /*******************************************************************
 223          * 函数名称:d1()
 224          * 功    能:中断设置
 225          * 入口参数:无
 226          * 出口参数:无
 227          *******************************************************************/ 
 228          void d1(void)      
 229                 {
 230   1           TMOD=0x11;
 231   1              TH1=0xff; TH0=0xff;
 232   1              TL1=0xff; TL0=0xff;
 233   1             IE=0x8f;
 234   1           TR1=1;      
 235   1         IT0=1;   IT1=1;
 236   1              IP=0x02;
 237   1             }
 238          /*******************************************************************
 239          * 函数名称:main()
 240          * 功    能:程序入口,调用功能子函数
 241          * 入口参数:无
C51 COMPILER V7.06   FFF                                                                   05/01/2008 16:56:16 PAGE 5   

 242          * 出口参数:无
 243          *******************************************************************/            
 244          void main(void)
 245                   { 
 246   1                d1();      //调用中断位设置函数
 247   1             d2();                 
 248   1               }
 249          /*******************************************************************
 250          * 函数名称:d5()
 251          * 功    能:切换显示菜单
 252          * 入口参数:无
 253          * 出口参数:无
 254          *******************************************************************/
 255          void d5(void)             //显示菜单调节函数
 256                 {
 257   1           switch(k2)
 258   1              {
 259   2            case 1:{h=&h1; m=&m1;   s=&s1; }break;//菜单1:显示时钟时间
 260   2            case 2:{h=&h2; m=&m2;   s=&s2; }break;//菜单2:显示定时时刻 
 261   2            case 3:{h=&year;m=&month;s=&day; }break;//菜单3:显示日历年月日
 262   2            case 4:{h=&wday;m=&wday; s=&wday;}break;//菜单4:显示星期0--6
 263   2            default:{k2=0;h=&h1;m=&m1;s=&s1; }break;//复位显示
 264   2           }
 265   1          }
 266          /*******************************************************************
 267          * 函数名称:d7()
 268          * 功    能:调节限制,防止数值调节超出值域
 269          * 入口参数:无
 270          * 出口参数:无
 271          *******************************************************************/          
 272          void d7(void)             //调节限制函数
 273                 {
 274   1              if(k2==1||k2==2)          //计时与定时限制
 275   1                 if     (k1==1&&*p>=24) *p=0;       //小时限制
 276   1                 else if(*p>=60) *p=0;        //分、秒限制
 277   1              if(k2==3)            //日历限制
 278   1                 if     (k1==1&&*p>=100)*p=0;       //年限制
 279   1                 else if(k1==2&&*p>12) *p=1;       //月限制
 280   1                 else if(k1==3&&*p>n)   *p=1;       //日限制
 281   1              if(k2==4)            
 282   1                 if     (k1==2&&*p>6)   *p=0;       //星期限制
 283   1                         
 284   1             }
 285          /*******************************************************************
 286          * 函数名称:timer0()
 287          * 功    能:菜单切换及位加数调节
 288          * 入口参数:无
 289          * 出口参数:无
 290          *******************************************************************/          
 291          /**外部中断1调节函数**/            
 292          void timer0(void)interrupt 0 using 0 //外部中断0调节
 293                     {        
 294   1                  if(k1)       //判断是位调节还是菜单调节
 295   1           {          
 296   2            (*p)++;     //位加数调节
 297   2             d7();     //调用调节限制函数
 298   2           }          
 299   1                  else         
 300   1           {         
 301   2            k2++;     //菜单加数调节
 302   2            d5();     //调用调节菜单
 303   2           }         
C51 COMPILER V7.06   FFF                                                                   05/01/2008 16:56:16 PAGE 6   

 304   1                 }
 305          /*******************************************************************
 306          * 函数名称:timer2()
 307          * 功    能:调节位选择及关铃声
 308          * 入口参数:无
 309          * 出口参数:无
 310          *******************************************************************/                        
 311          void timer2(void)interrupt 2 using 2 //外部中断1调节
 312                     {        
 313   1            TR0=0;k5=0;     //手动关铃声
 314   1                  if(k2)      //断是否处于调节状态
 315   1                 {       
 316   2               if   (k2==4){k1++;} //期调节位选择
 317   2                  if   (++k1==1) p=h; //选择时位
 318   2                     else if(k1==2) p=m; //选择分位
 319   2                     else if(k1==3) p=s; //选择秒位
 320   2                     else    k1=0;      //复位
 321   2              }       
 322   1                 }
 323          /***************************lns主程序snl***************************/
 324           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1016    ----
   CONSTANT SIZE    =    206    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     39    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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