C51 COMPILER V9.59.0.0 MAIN 06/09/2021 13:46:54 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_Exti.h" 15 #include "STC8A_GPIO.h" 16 #include "STC8A_UART.h" 17 #include "STC8A_NVIC.h" 18 #include "STC8A_Delay.h" 19 20 /************* 功能说明 ************** 21 22 演示INT0~INT4 5个唤醒源将MCU从休眠唤醒. 23 24 从串口输出唤醒源跟唤醒次数,115200,N,8,1. 25 26 下载时, 选择时钟 22.1184MHz (用户可在"config.h"修改频率). 27 28 ******************************************/ 29 30 /************* 本地常量声明 **************/ 31 32 33 /************* 本地变量声明 **************/ 34 u8 WakeUpSource; 35 u8 WakeUpCnt; 36 37 /************* 本地函数声明 **************/ 38 39 40 41 /************* 外部函数和变量声明 *****************/ 42 43 44 45 /******************** IO口配置 ********************/ 46 void GPIO_config(void) 47 { 48 1 GPIO_InitTypeDef GPIO_InitStructure; //结构定义 49 1 50 1 GPIO_InitStructure.Pin = GPIO_Pin_All; //指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7, 或操作 51 1 GPIO_InitStructure.Mode = GPIO_PullUp; //指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO -_OUT_PP 52 1 GPIO_Inilize(GPIO_P3,&GPIO_InitStructure); //初始化 53 1 } C51 COMPILER V9.59.0.0 MAIN 06/09/2021 13:46:54 PAGE 2 54 55 /******************** INT配置 ********************/ 56 void Exti_config(void) 57 { 58 1 EXTI_InitTypeDef Exti_InitStructure; //结构定义 59 1 60 1 Exti_InitStructure.EXTI_Mode = EXT_MODE_Fall;//中断模式, EXT_MODE_RiseFall,EXT_MODE_Fall 61 1 Ext_Inilize(EXT_INT0,&Exti_InitStructure); //初始化 62 1 NVIC_INT0_Init(ENABLE,Priority_0); //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Prio -rity_2,Priority_3 63 1 64 1 Exti_InitStructure.EXTI_Mode = EXT_MODE_Fall;//中断模式, EXT_MODE_RiseFall,EXT_MODE_Fall 65 1 Ext_Inilize(EXT_INT1,&Exti_InitStructure); //初始化 66 1 NVIC_INT1_Init(ENABLE,Priority_0); //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Prio -rity_2,Priority_3 67 1 68 1 NVIC_INT2_Init(ENABLE,NULL); //中断使能, ENABLE/DISABLE; 无优先级 69 1 NVIC_INT3_Init(ENABLE,NULL); //中断使能, ENABLE/DISABLE; 无优先级 70 1 NVIC_INT4_Init(ENABLE,NULL); //中断使能, ENABLE/DISABLE; 无优先级 71 1 } 72 73 /**************** 串口初始化函数 *****************/ 74 void UART_config(void) 75 { 76 1 COMx_InitDefine COMx_InitStructure; //结构定义 77 1 COMx_InitStructure.UART_Mode = UART_8bit_BRTx; //模式, UART_ShiftRight,UART_8bit_BRTx,UART_9bit,U -ART_9bit_BRTx 78 1 COMx_InitStructure.UART_BRT_Use = BRT_Timer1; //使用波特率, BRT_Timer1, BRT_Timer2 (注意: 串口2固定使 -用BRT_Timer2) 79 1 COMx_InitStructure.UART_BaudRate = 115200ul; //波特率, 110 ~ 115200 80 1 COMx_InitStructure.UART_RxEnable = ENABLE; //接收允许, ENABLE或DISABLE 81 1 UART_Configuration(UART1, &COMx_InitStructure); //初始化串口 USART1,USART2,USART3,USART4 82 1 NVIC_UART1_Init(ENABLE,Priority_1); //中断使能, ENABLE/DISABLE; 优先级(低到高) Priority_0,Priority_1,Pri -ority_2,Priority_3 83 1 } 84 85 /******************** 主函数***********************/ 86 void main(void) 87 { 88 1 GPIO_config(); 89 1 UART_config(); 90 1 EA = 1; //Enable all interrupt 91 1 92 1 printf("STC8 EXINT Wakeup Test Programme!\r\n"); //UART发送一个字符串 93 1 94 1 while(1) 95 1 { 96 2 while(!INT0); //等待外中断为高电平 97 2 while(!INT1); //等待外中断为高电平 98 2 while(!INT2); //等待外中断为高电平 99 2 while(!INT3); //等待外中断为高电平 100 2 while(!INT4); //等待外中断为高电平 101 2 delay_ms(10); //delay 10ms 102 2 103 2 while(!INT0); //等待外中断为高电平 104 2 while(!INT1); //等待外中断为高电平 105 2 while(!INT2); //等待外中断为高电平 106 2 while(!INT3); //等待外中断为高电平 107 2 while(!INT4); //等待外中断为高电平 108 2 delay_ms(10); //delay 10ms 109 2 110 2 Exti_config(); C51 COMPILER V9.59.0.0 MAIN 06/09/2021 13:46:54 PAGE 3 111 2 WakeUpSource = 0; 112 2 113 2 PCON |= 2; //Sleep 114 2 _nop_(); 115 2 _nop_(); 116 2 _nop_(); 117 2 _nop_(); 118 2 _nop_(); 119 2 _nop_(); 120 2 _nop_(); 121 2 122 2 if(WakeUpSource == 1) printf("外中断INT0唤醒 "); 123 2 if(WakeUpSource == 2) printf("外中断INT1唤醒 "); 124 2 if(WakeUpSource == 3) printf("外中断INT2唤醒 "); 125 2 if(WakeUpSource == 4) printf("外中断INT3唤醒 "); 126 2 if(WakeUpSource == 5) printf("外中断INT4唤醒 "); 127 2 WakeUpSource = 0; 128 2 129 2 WakeUpCnt++; 130 2 TX1_write2buff(WakeUpCnt/100+'0'); 131 2 TX1_write2buff(WakeUpCnt%100/10+'0'); 132 2 TX1_write2buff(WakeUpCnt%10+'0'); 133 2 PrintString1("次唤醒\r\n"); 134 2 } 135 1 136 1 } 137 MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 331 ---- CONSTANT SIZE = 130 ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 2 12 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)