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

📄 main.c

📁 STC51系列的源码
💻 C
字号:
/********************************************************************************/
/* filename : MAIN.c                                                            */
/* created  : xillinx                                                           */
/* descript : 系统的C函数入口                                                   */
/********************************************************************************/
#include "../CPU/CPU.h"
#include "../CFG/CFG.h"
#include "../UART/UART.h"
#include "../LED/LED.h"
#include "../SEG7/SEG7.h"
#include "../HC595/HC595.h"
#include "../KEY/KEY.h"
#include "../TC1602A/TC1602A.h"

unsigned int  system_timer=0x00;    //* 这是系统需要的定时器变量

/********************************************************************************/
/* fun_name : MAIN_key_timer()                                                  */
/* version  : v1.00                                                             */
/* created  : xillinx                                                           */
/********************************************************************************/
void MAIN_key_timer(void) 
{   KEY_scan_timer=0x1;
} 

/********************************************************************************/
/* fun_name : MAIN_c51_key_scan()                                               */
/* version  : v1.00                                                             */
/* created  : xillinx                                                           */
/* descript : 这个函数需要在定时器里面调用                                      */
/********************************************************************************/
void MAIN_c51_key_scan(void)
{   unsigned char key_val; 
    char buffer[0x20];
    if(KEY_scan_timer==0x0) //* 定时器没有到
    {  return;
    }
    KEY_scan_timer=0x0;
    key_val=c51_key_scan_process_jitter(); //* 8x3=24MS定时器,扫描键盘
    if(key_val!=0x0)
    {  sprintf(buffer,"  KEY: %c          ",key_val);
       LCDT_print_string(0x0,0x0,buffer);
    }
    key_val=c51_key_scan_hi_process();
    switch(key_val)
    {
    case 0x1:
         sprintf(buffer,"  KEY: %s          ","F1");
         LCDT_print_string(0x0,0x1,buffer);
         break;
    case 0x2:
         sprintf(buffer,"  KEY: %s          ","F2");
         LCDT_print_string(0x0,0x1,buffer);
         break;
    case 0x3:
         sprintf(buffer,"  KEY: %s          ","F3");
         LCDT_print_string(0x0,0x1,buffer);
         break;
    case 0x4:
         sprintf(buffer,"  KEY: %s          ","F4");
         LCDT_print_string(0x0,0x1,buffer);
         break;
    default:
         break;
    }
    
    return;
}

/********************************************************************************/
/* fun_name : MAIN_interrupt_hook_process()                                     */
/* version  : v1.00                                                             */
/* created  : xillinx                                                           */
/* descript : 定时器钩子函数的处理,如果需要使用这些函数,需要重新挂接,如果不需要 */
/*  不需要做任何事情                                                            */
/********************************************************************************/
void MAIN_interrupt_hook_process (void)
{   CPU_001_tick_process = CPU_interrupt_proc_null; //* 定时器钩子函数的缺省处理,如果需要使用这些函数,需要重新挂接
    CPU_002_tick_process = CPU_interrupt_proc_null;
    CPU_004_tick_process = CPU_interrupt_proc_null;
    CPU_008_tick_process = CPU_interrupt_proc_null;
    CPU_010_tick_process = CPU_interrupt_proc_null;
    CPU_020_tick_process = CPU_interrupt_proc_null;
    CPU_040_tick_process = CPU_interrupt_proc_null;
    CPU_080_tick_process = CPU_interrupt_proc_null;
    CPU_100_tick_process = CPU_interrupt_proc_null;
    CPU_200_tick_process = CPU_interrupt_proc_null;
    CPU_400_tick_process = CPU_interrupt_proc_null;
    CPU_extern_0_process = CPU_interrupt_proc_null;
    CPU_extern_1_process = CPU_interrupt_proc_null;
    CPU_timer_02_process = CPU_interrupt_proc_null;
                                                    //* 重新挂接HOOK函数
    CPU_001_tick_process = HC595_refresh;           //* 2MS
    CPU_008_tick_process = MAIN_key_timer;          //* 按键扫描
    CPU_080_tick_process = LED_refresh;             //* 128x2=256MS
}

/********************************************************************************/
/* function : main()                                                            */
/* recension: xillinx                                                           */
/* descript : 主函数入口                                                        */
/********************************************************************************/
void main (void)
{   unsigned int delax=0x8000;
    while(delax--)
    {   ;
    }
    LCDT_initialize();
    UART_buffer_initilize();
    MAIN_interrupt_hook_process();      //* CPU的挂接函数处理
    CPU_source_initialize();            //* 控制CPU的资源
    SEG7_clear_screen();
    SEG7_printf_ascii("1234.567");      //* 测试七段数码管
    UART_printf("融益通讯学习板\r\n");  //* 测试UART串口
    LCDT_print_string(0x0,0x0,"rongyitong tech");     /* 测试点阵LCD */
    LCDT_print_string(0x0,0x1,"cchhww11@tom.com");
    while(1) 
    {   MAIN_c51_key_scan();
    }
}

⌨️ 快捷键说明

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