C51 COMPILER V9.59.0.0 MAIN 06/10/2021 10:17:41 PAGE 1 C51 COMPILER V9.59.0.0, COMPILATION OF MODULE MAIN OBJECT MODULE PLACED IN .\list\main.obj COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE main.c OMF2 OPTIMIZE(8,SPEED) BROWSE DEBUG PRINT(.\list\main.lst) TABS(2 -) OBJECT(.\list\main.obj) line level source 1 /*---------------------------------------------------------------------*/ 2 /* --- STC MCU Limited ------------------------------------------------*/ 3 /* --- STC 1T Series MCU Demo Programme -------------------------------*/ 4 /* --- Mobile: (86)13922805190 ----------------------------------------*/ 5 /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/ 6 /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/ 7 /* --- Web: www.STCMCU.com --------------------------------------------*/ 8 /* --- Web: www.STCMCUDATA.com ---------------------------------------*/ 9 /* --- QQ: 800003751 -------------------------------------------------*/ 10 /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */ 11 /*---------------------------------------------------------------------*/ 12 13 #include "config.h" 14 #include "STC8A_Timer.h" 15 #include "STC8A_GPIO.h" 16 #include "STC8A_NVIC.h" 17 18 /************* 功能说明 ************** 19 20 程序演示5个定时器的使用, 均使用16位自动重装. 21 22 定时器0做16位自动重装, 中断频率为100000HZ,中断函数从P6.7取反输出50KHZ方波信号. 23 24 定时器1做16位自动重装, 中断频率为10000HZ,中断函数从P6.6取反输出5KHZ方波信号. 25 26 定时器2做16位自动重装, 中断频率为1000HZ,中断函数从P6.5取反输出500HZ方波信号. 27 28 定时器3做16位自动重装, 中断频率为100HZ,中断函数从P6.4取反输出50HZ方波信号. 29 30 定时器4做16位自动重装, 中断频率为50HZ,中断函数从P6.3取反输出25HZ方波信号. 31 32 下载时, 选择时钟 24MHz (可以在配置文件"config.h"中修改). 33 34 ******************************************/ 35 36 /************* 本地常量声明 **************/ 37 38 39 /************* 本地变量声明 **************/ 40 41 42 /************* 本地函数声明 **************/ 43 44 45 46 /************* 外部函数和变量声明 *****************/ 47 48 49 50 /************************ IO口配置 ****************************/ 51 void GPIO_config(void) 52 { 53 1 GPIO_InitTypeDef GPIO_InitStructure; //结构定义 54 1 C51 COMPILER V9.59.0.0 MAIN 06/10/2021 10:17:41 PAGE 2 55 1 GPIO_InitStructure.Pin = GPIO_Pin_HIGH | GPIO_Pin_3; //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7, 或操 -作 56 1 GPIO_InitStructure.Mode = GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO -_OUT_PP 57 1 GPIO_Inilize(GPIO_P6,&GPIO_InitStructure); //初始化 58 1 } 59 60 /************************ 定时器配置 ****************************/ 61 void Timer_config(void) 62 { 63 1 TIM_InitTypeDef TIM_InitStructure; //结构定义 64 1 TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; //指定工作模式, TIM_16BitAutoReload,TIM_16Bit,TI -M_8BitAutoReload,TIM_16BitAutoReloadNoMask 65 1 TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T; //指定时钟源, TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_E -xt 66 1 TIM_InitStructure.TIM_ClkOut = DISABLE; //是否输出高速脉冲, ENABLE或DISABLE 67 1 TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / 100000UL); //初值, 68 1 TIM_InitStructure.TIM_Run = ENABLE; //是否初始化后启动定时器, ENABLE或DISABLE 69 1 Timer_Inilize(Timer0,&TIM_InitStructure); //初始化Timer0 Timer0,Timer1,Timer2,Timer3,Timer4 70 1 NVIC_Timer0_Init(ENABLE,Priority_0); //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Pr -iority_2,Priority_3 71 1 72 1 TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload; //指定工作模式, TIM_16BitAutoReload,TIM_16Bit,TI -M_8BitAutoReload,TIM_16BitAutoReloadNoMask 73 1 TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T; //指定时钟源, TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext 74 1 TIM_InitStructure.TIM_ClkOut = DISABLE; //是否输出高速脉冲, ENABLE或DISABLE 75 1 TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / 10000); //初值, 76 1 TIM_InitStructure.TIM_Run = ENABLE; //是否初始化后启动定时器, ENABLE或DISABLE 77 1 Timer_Inilize(Timer1,&TIM_InitStructure); //初始化Timer1 Timer0,Timer1,Timer2,Timer3,Timer4 78 1 NVIC_Timer1_Init(ENABLE,Priority_0); //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Pr -iority_2,Priority_3 79 1 80 1 TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T; //指定时钟源, TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_E -xt 81 1 TIM_InitStructure.TIM_ClkOut = DISABLE; //是否输出高速脉冲, ENABLE或DISABLE 82 1 TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / 1000); //初值 83 1 TIM_InitStructure.TIM_Run = ENABLE; //是否初始化后启动定时器, ENABLE或DISABLE 84 1 Timer_Inilize(Timer2,&TIM_InitStructure); //初始化Timer2 Timer0,Timer1,Timer2,Timer3,Timer4 85 1 NVIC_Timer2_Init(ENABLE,NULL); //中断使能, ENABLE/DISABLE; 无优先级 86 1 87 1 TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_12T; //指定时钟源, TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_E -xt 88 1 TIM_InitStructure.TIM_ClkOut = ENABLE; //是否输出高速脉冲, ENABLE或DISABLE 89 1 TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / (100*12)); //初值 90 1 TIM_InitStructure.TIM_Run = ENABLE; //是否初始化后启动定时器, ENABLE或DISABLE 91 1 Timer_Inilize(Timer3,&TIM_InitStructure); //初始化Timer3 Timer0,Timer1,Timer2,Timer3,Timer4 92 1 NVIC_Timer3_Init(ENABLE,NULL); //中断使能, ENABLE/DISABLE; 无优先级 93 1 94 1 TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_12T; //指定时钟源, TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_E -xt 95 1 TIM_InitStructure.TIM_ClkOut = ENABLE; //是否输出高速脉冲, ENABLE或DISABLE 96 1 TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / (50*12)); //初值 97 1 TIM_InitStructure.TIM_Run = ENABLE; //是否初始化后启动定时器, ENABLE或DISABLE 98 1 Timer_Inilize(Timer4,&TIM_InitStructure); //初始化Timer4 Timer0,Timer1,Timer2,Timer3,Timer4 99 1 NVIC_Timer4_Init(ENABLE,NULL); //中断使能, ENABLE/DISABLE; 无优先级 100 1 } 101 102 103 /******************** 主函数**************************/ 104 void main(void) 105 { 106 1 C51 COMPILER V9.59.0.0 MAIN 06/10/2021 10:17:41 PAGE 3 107 1 GPIO_config(); 108 1 Timer_config(); 109 1 EA = 1; 110 1 111 1 while (1); 112 1 } 113 114 115 MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 189 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = ---- 8 IDATA SIZE = ---- ---- BIT SIZE = ---- ---- EDATA SIZE = ---- ---- HDATA SIZE = ---- ---- XDATA CONST SIZE = ---- ---- FAR CONST SIZE = ---- ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)