MCU为77E516,附上主要程序: void main(void) {
McuIint(); EN1 = 1; T1_Init(); UART_Init(); EA = 1; while (1) { MainTask(); // 目前为空函数 } }
void McuIint(void) { EA = 0; // 中断禁止 P1 = 0xff; // 初始化P1口 PMR = 0x40; // 设定一个机器周期为4个振荡器周期
CKCON = 0x3c; // T0、T1、T2计数周期为4个振荡器周期 IP = 0x00; IE = 0x00; EIE = 0x00;
}
void T1_Init(void) { TMOD &= 0x0F; // 清除T1控制位(T0不变) TMOD |= 0x10; // T1作为16位定时器 TH1 = T1_RELOADH; TL1 = T1_RELOADL;
ET1 = 1; TR1 = 1; }
void UART_Init(void) { T2MOD = 0; // T2向上计数 T2CON = 0x30; // T2做波特率发生器 RCAP2L = T2_RELOADL; RCAP2H = T2_RELOADH; TH2 = T2_RELOADH; TL2 = T2_RELOADL; SCON0 = 0x50; // 串口工作于方式1:8位数据,1位停止位,无奇偶校验 PCON = 0x80; // 波特率加倍 ES0 = 0; // 串口中断允许 1-enable // PS0 = 0; // 串口中断优先级 1-高,0-低 TR2 = 0; // 启动T2 }
void T1_ISR(void) interrupt 3 { TR1 = 0; TH1 = T1_RELOADH; TL1 = T1_RELOADL; TR1 = 1; KeyScan(); } void UART_ISR(void) interrupt 4 { TI=0; } 结果编译过后,KEIL报告说T1_ISR和UART_ISR是未使用的段 真是奇怪了,这到底是什么原因造成的呢? |