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

📄 guide.c

📁 基于TMS320LF2407的LED大屏幕显示程序
💻 C
字号:
//int start_state;

#include "config.h"

int num_dd=0;
int  my_second,div_second,i_delay;
int  rt_second,rt_tenminute,rt_min,rt_min2;
int  chgYesNo=0; 
int  test_gray;


#include ".\2407_add\lf2407.h"  
#include "general.h"

//#include "hanzi.h"
//#include "math.h" 
#include "dsp_timer.h"
#include "dsp_com.h"
#include "dsp_flash.h"
#include "dsp_display.h" 
#include "REAL_TIME.h"


 
void main(){                          
 
    int i, j, mm=120, m,aa,cycle,n,k;
    BYTE kk,temp;
    
    int main_temp;
    
   
    int num_main,i_start,i_end,flag,a_main;
    volatile unsigned char *pdata=(volatile unsigned char*)  0x8000;
      
    /*SCSR2=*SCSR2|0xFFFC;      
    *SCSR2=*SCSR2&0xFFFE;*/  /*DPM=1 AMD [PM=0 SELECT THE SRAM IN THE DATA RAM*/
    
    chg_speed(1); 
    my_second=0;
    div_second=0;
    i_delay=0;
    test_gray=0;
    rt_min=0;
    rt_min2=0;
    change_gray(test_gray);
     
    chg_speed(0);       
    init_sys();
    init_com(0);
    init_timer();
    timer1init();
    start_timer1();
    enable_int();
    
    my_second=2;
    while(my_second>0);
    
    
#ifdef _TEST_EASY
       while(1){
       
#endif  
       
    selectchip(0x08);  
    clr_dispRam(0x000F);
#ifdef _TEST_EASY
    clr_dispRam(0x0005);
#endif
    selectchip(0x18);
    my_second=3;
    while(my_second>0); 
                     
    clr_dispRam(0x00F0);
#ifdef _TEST_EASY
    clr_dispRam(0x00a0);
#endif
    selectchip(0x08);      
    chg_speed(0);
    
#ifdef _TEST_EASY  
    my_second=3;
    while(my_second>0);   
  }
#endif
  
    aa=0x08;    
    my_second=0;
    
    real_time_init();
    read_time(pTime);   
    rt_second=0;
    rt_tenminute=0;    
            
    my_second=2;
    while(my_second>0);    
    AT_init();
    my_second=1;
    while(my_second>0);
    AT_init();
    
    div_second=500;
    my_second=1;
    
    while(my_second>0);
    test_gray=0;
    change_gray(0);
    init_SRbuf(0x03);
 /*   
    for(i=0;i<10;i++)
       *(p_recbuf+i)=0x30+i;    
    aa=cal_crc(p_recbuf,10);
   */   
///////////////////  斜线
#ifdef  _TEST_LINE 
     while(1){
       test_lean();     
       }
#endif
/////////////////////////时钟   
     
     
/////////////////// 
     
   while(1){   
            
   
       if((rec_len>120)&&(start_index==-1))
            init_SRbuf(0x03);            
       while(i_com){
       
       for(i=0;i<100;i++){
           if(end_index==-1){
               div_second=200;
               my_second=1;         
              }
           while(my_second>0);         
         } 
           
       if(end_index-start_index<512){
            div_second=200;
            my_second=3;
            while(my_second>0);
         }
         
       if(end_index!=-1){  
            ///////////////收到内容
            error=0;
            rt_min2=0;
            ////////////校验
            if(crc_YesNo()!=1){
               error=1;
               init_SRbuf(0x02);
               chgYesNo=20;
               while(chgYesNo>0);
               AT_ack(0x31+error);            
            }
            ////////////判断操作
            else{
               temp=*(p_recbuf+start_index);
               
               if(temp==0x00){
                   if(end_index-start_index>=512){ 
                      com_movedata(p_recbuf+start_index+3);               
                      flash_write((*(p_recbuf+start_index+1))*256+(*(p_recbuf+start_index+2)),p_recbuf+start_index+4,(*(p_recbuf+start_index+3)));         
                      init_SRbuf(0x02);
                      chgYesNo=20;
                      while(chgYesNo>0);
                      AT_ack(0x31+error);
                  }
               }
               
               if(temp==0x01){                   
                  flash_write_cycle(*(p_recbuf+start_index+3), p_recbuf+start_index,(end_index-start_index)/16);
                  init_SRbuf(0x02);
                  chgYesNo=20;
                  while(chgYesNo>0);
                  AT_ack(0x31+error);
                 }
                 
               if(temp==0x04){                   
                  regulate_time(p_recbuf+start_index);
                  flash_write(240,p_recbuf+start_index+1,0);               
                  init_SRbuf(0x02);
                  chgYesNo=20;
                  while(chgYesNo>0);
                  AT_ack(0x31+error);
                  rt_tenminute=0;
               } 
                                   
             }////else  //CRC
         }////end_index!=-1
         else{   ////end_index!=-1
            init_SRbuf(0x02);
            rt_tenminute=0;         
         }           
         for(i=0;i<100;i++){
           if(start_index==-1){
               div_second=200;
               my_second=1;         
              }
           while(my_second>0);         
         }           
         //rt_min=0;
         num_dd=0;      
       }
       
       if(i_com!=0)  continue;
       if(i_delay>0) continue;
       ///////
       
       total_disp();
       rt_min=0;
       rt_min2=0;
       
       if(rt_tenminute==0){
          rt_tenminute=5;
          
          read_time(pTime);
          time_change_gray(pTime[4]&0xff);          
          move_data(240);
          
          pdata=(volatile unsigned char*)0x8000;
          if(compare_time(pdata+0x400)==0){
             test_gray=test_gray|0xf0;
             change_gray(test_gray);
           }
          else{
             test_gray=test_gray&0x0f;
             change_gray(test_gray);
           }  
       
        }
       ///
       //change_gray(0);
       
       
       
       /*if(((*SCIRXST)&(0x80))!=0)///////////////////////////串口出错          
            *WDCR=0xA8;
       */         
        ////////////低功耗
       while(i_delay>1){
          if(i_com>0)
             i_delay=0;          
          *SCSR1=(*SCSR1)&0xCFFF; 
         }
         
       
             
    } 
     
             
}   
 
 
void interrupt  sciint(){
    switch(*PIVR){ 
      case 6:com_recieve();break;
      case 7:com_send();break;        
    }                       
    //enable_int();
}
 
void interrupt  timer1(){
     
    int flag;
    
    
    flag=(*EVAIFRA)&0x0080;
    if(flag!=0x0080){ 
       enable_int();
       return;
     }
       
     *T1CNT=0x80;
     *EVAIFRA=(*EVAIFRA)&0x0080;
     if(chgYesNo>0)
        chgYesNo--;
     if(chgYesNo<=0)
        chgYesNo=0;
        
     if(div_second>1000)
        div_second=1000;
     div_second--;
     if(div_second<=0){
       my_second--;
       i_delay--; 
       div_second=1000;
       rt_second++;
     }
     if((rt_second<0)||(rt_second>=60)){
        rt_second=0;
        rt_min++;
        rt_min2++;
        if(rt_tenminute>0)
           rt_tenminute--;
        if((rt_tenminute<0)||(rt_tenminute>10))
           rt_tenminute=0;
      }
        
     if((my_second<=0)|(my_second>200))
         my_second=0;
     if((i_delay<0)|(i_delay>200))
         i_delay=0; 
          
     /*    
     if(((*SCIRXST)&(0x80))!=0){
          ///////////////////////////串口出错
           *WDCR=0xA8;
     } 
     */
      if((((*SCIRXST)&(0x80))==0)&&(rt_min<100)&&(rt_min2<20)){
                    ///////////////////////////没有 (串口出错   其他错误)
           clr_Watchdog();
      }     
         
     enable_int();

}

void interrupt  timer2(){

     ;
}        

void interrupt nothing(){

    
    return;
}

⌨️ 快捷键说明

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