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

📄 hello.lst

📁 uart,mcu,linux,embedded soc
💻 LST
📖 第 1 页 / 共 4 页
字号:

 673   1              P0=(ptr1<<4)|dispbuf[ptr1];     /*将扫描值左移至高4位元再加上资料码*/
 674   1      }                                       /*返回主程式*/
 675          /********************************************************/
 676          void rec_timer1_intr () interrupt 3 using 3     /*TIMER1中断副程式--秒计时器*/
 677          {
 678   1              TH1=(65536-59200)/256;          //重设TIMER1计数值
 679   1              TL1=(65536-59200)%256;
 680   1              dispbuf[8]=0x09;                                //蜂鸣器设定开/二次分频
 681   1              if(b1==0)                                       //中断次数完成否,是则表1秒到了
 682   1              {
 683   2                      b1=100;                         //重设中断次数
 684   2                      P3_6=1;                         //秒SEC加1
 685   2                      TR1=0;
 686   2                      dispbuf[8]=0x01;                //蜂鸣器关
 687   2                      clear();
 688   2                      //send_to_Led_a();              //串行发送到DTLED-6副程式
 689   2                      //send_to_Comm1();//huzm        
 690   2                      //LCD_disple();//huzm
 691   2              }
 692   1              TF1=0;
 693   1              b1--;                                           /*中断次数减1*/
 694   1        
 695   1      }               /*返回主程式*/
 696          /********************************************************/
 697          
 698          /******************************************************************/
 699          /*
 700          //串口接收中断函数 
 701          void serialRecCom() interrupt 4 using 3 
 702          { 
 703                  if (RI) 
 704                  { 
 705                          unsigned char ch; 
 706                          RI = 0 ; 
 707                          ch=SBUF;        
 708                          send_to_Comm1();
 709                  } 
 710          } */
 711          /***********************************************************************/
 712          /******************************************************/
 713          void Rd1302()                           /*读时钟芯片DS1302*/
 714          {
 715   1              char i,j,ts0,conb;
 716   1              conb=0x81;
 717   1              clocktmp[0]=0;
 718   1              clocktmp[1]=0;
 719   1              clocktmp[2]=0;
 720   1              ts0=conb;
 721   1              for(j=0;j<3;j++)
 722   1              {
 723   2                 clk=RST=0;                                   /*DS1302系统初始化*/
 724   2                      nop;nop;
 725   2                      RST=1;
 726   2                      for(i=0;i<8;i++)                        /*写控制字到DS1302*/
 727   2                        {
 728   3                              clk=0;                                  /*清时钟*/
 729   3                              if(conb&0x01) 
 730   3                                              DINOUT=1;
 731   3                              else    DINOUT=0;
 732   3                              clk=1;                                  /*时钟上升沿,发送数据有效*/
 733   3                              conb=conb>>1;   
 734   3                              nop;
C51 COMPILER V7.07   HELLO                                                                 11/07/2006 19:17:04 PAGE 13  

 735   3                        }
 736   2                      conb=ts0=ts0+2;
 737   2                      clk=0;
 738   2                      for(i=0;i<7;i++)                        /*读时钟芯片的时分秒单元*/
 739   2                      {
 740   3                      if(DINOUT==1) 
 741   3                                      clocktmp[j]=clocktmp[j]|0x80;
 742   3                      else    clocktmp[j]=clocktmp[j]&0x7f;
 743   3                      clk=1;
 744   3                      clocktmp[j]=clocktmp[j]>>1;     /*接收暂存单元*/        
 745   3                      nop;
 746   3                      clk=0;                                  /*时钟下降沿,接收数据有效*/
 747   3                      }
 748   2                      delay(5);
 749   2                      RST=0;
 750   2                      delay(10);
 751   2                 }    
 752   1              dispbuf[1]=clocktmp[0]&0x0f;    //转换秒分时显示单元
 753   1              dispbuf[2]=clocktmp[0]>>4&0x07;
 754   1              dispbuf[3]=clocktmp[1]&0x0f;
 755   1              dispbuf[4]=clocktmp[1]>>4&0x07;
 756   1              dispbuf[5]=clocktmp[2]&0x0f;
 757   1              dispbuf[6]=clocktmp[2]>>4&0x03; 
 758   1      nop;
 759   1      }               /*返回主程式*/
 760          
 761          void Rec_com1_intr () interrupt 4 using 1       //串行口中断副程式
 762          { 
 763   1              uchar v,i=0;
 764   1                while(RI!=1);                 /*接收完成否*/  
 765   1                 {
 766   2                      RI=0;
 767   2                      v=SBUF;                         /*接收的数据存入C*/     
 768   2                       //buf_rec_com1=SBUF;//huzm
 769   2                       
 770   2                      #if 1
 771   2                      if(v==0xa0)                     /*是否是识别码"A0"*/
 772   2                         {while(RI!=1);               /*接收完成否*/  
 773   3                           bufuart[i]=v;
 774   3                           for(i=1;i<7;i++) 
 775   3                                              {while(RI!=1);          /*接收完成否*/  
 776   4                                              bufuart[i]=SBUF;        /*接收的数据存入C*/     
 777   4                                              RI=0;                   /*清除接收完成标志位RI*/        
 778   4                                              }
 779   3                     }
 780   2                      else    delay(10);      
 781   2                      #endif
 782   2                      //delay(10);//huzm
 783   2                      //send_to_Comm1();
 784   2                      RI=0;
 785   2                      
 786   2                 }    
 787   1                send_to_Led_a();//huzm
 788   1        /*
 789   1      dispbuf[0]=bufuart[6];
 790   1      dispbuf[1]=bufuart[5];
 791   1      dispbuf[2]=bufuart[4];
 792   1      dispbuf[3]=bufuart[3];
 793   1      dispbuf[4]=bufuart[2];
 794   1      dispbuf[5]=bufuart[1];
 795   1      */
 796   1      }                                       /*返回主程式*/
C51 COMPILER V7.07   HELLO                                                                 11/07/2006 19:17:04 PAGE 14  

 797          
 798          //**************************************************************
 799          void send_to_Comm1(void)                        /*宣告串口serial发送副程式*/    
 800          { 
 801   1              //uchar i=0;//huzm
 802   1      //      
 803   1              uchar sec,min,hour;
 804   1              sec=((dispbuf[2]<<4)&0xf0)|(dispbuf[1]&0x0f);
 805   1              min=((dispbuf[4]<<4)&0xf0)|(dispbuf[3]&0x0f);
 806   1              hour=((dispbuf[6]<<4)&0xf0)|(dispbuf[5]&0x0f);
 807   1              //
 808   1              IE=0x8f;                 
 809   1              SBUF=hour;              //根据扫描指标到TAB中取ASCII码由SBUF发送出去
 810   1              //for( i=0; i<rec_comm1_len; i++)//huzm
 811   1              {
 812   2                      //SBUF=buf_rec_com1;//huzm      
 813   2                      while(TI!=1);                   /*发送完成否?*/
 814   2                      TI=0;                                   /*是,则清除发送完成旗标TI=0*/
 815   2                      delay(20);
 816   2              }
 817   1              
 818   1              #if 1
 819   1              SBUF=min;               /*根据扫描指标到TAB中取ASCII码由SBUF发送出去*/
 820   1              //SBUF=dispbuf_huzm[0];
 821   1              //SBUF=dispbuf[0];
 822   1              //dispbuf[0]++; 
 823   1              while(TI!=1);                   /*发送完成否?*/
 824   1              TI=0;                                   /*是,则清除发送完成旗标TI=0*/
 825   1              delay(20);
 826   1              SBUF=sec;               /*根据扫描指标到TAB中取ASCII码由SBUF发送出去*/
 827   1              while(TI!=1);                   /*发送完成否?*/
 828   1              TI=0;                                   /*是,则清除发送完成旗标TI=0*/
 829   1              delay(20);
 830   1              #endif
 831   1              
 832   1               IE=0x9f;
 833   1      }
 834          
 835          main()                                  /*主程式*/
 836          {
 837   1      /*
 838   1              TMOD=0x11;      
 839   1              TH1=256-(28800/9600);
 840   1              TH0=(65536-3000)/256;   
 841   1          TL0=(65536-3000)%256;
 842   1          TR0=0;                              
 843   1              T2CON=0x38;
 844   1              TL2=0xfd;                       
 845   1              TH2=0xff;                       
 846   1              RCAP2L=0xdc;            
 847   1              RCAP2H=0xff;            
 848   1              TH2=256-(28800/9600);
 849   1              TR2=1;                          
 850   1              SCON=0x50;
 851   1              IE=0;
 852   1              IP=0x10;
 853   1              read24c02();
 854   1              P1=0xff;
 855   1              */
 856   1      while(1)
 857   1              {
 858   2                              #if 0
C51 COMPILER V7.07   HELLO                                                                 11/07/2006 19:17:04 PAGE 15  

                                                      //scan();                       //呼叫键盘扫描副程式有按FLAG0会为1
                                      /*
                                                      if(FLAG0==1) 
                                                              {
                                                              temp();                 //判断有按键输入否?
                                                              }
                                                      else
                                                              */
                                                              {
                                                                      //FLAG4=FLAG5=0;
                                                                      //if(FLAG2==1)
                                                                      {
                                                                      Rd1302();                               /*读时钟芯片DS1302*/
                                                                      if(dispbuf[1]!=clockbak)        /*秒加一*/      
                                                                      {
                                                                              clockbak=dispbuf[1];
                                                                              send_to_Led_a();                /*串行发送到DTLED-6副程式*/     
                                                                              send_to_Comm1();                //宣告串口serial发送副程式
                                                                      }
                                                                      }
                                                              }
                                      #endif
 881   2                              //Rec_com1_intr();//huzm
 882   2                              //send_to_Comm1();
 883   2              }
 884   1      }
 885          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1777    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     81      17
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      7       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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