//2 为强推, 3 2_SEG_SET(); state = 3; }break; case 3: //2 { COM_H(2); COM2_SEG_SET_NOT(); state = 4; }break; case 4: //3 { COM_L(3); P1CFG1 = _b01011010; //3 为强推, 2 3_SEG_SET(); state = 5; }break; case 5: //3 { COM_H(3); COM3_SEG_SET_NOT(); state = 6; }break; case 6: //4 { COM_L(4); P1CFG1 = _b01101010; //3 为高阻 P3CFG0 = _b01010101; //4 4_SEG_SET(); state = 7; }break; case 7: //4 { COM_H(4); COM4_SEG_SET_NOT(); state = 0; }break; default: { state = 0; }break; }}4_SEG_SET_NOT(); 4_SEG_SET(); _L(4); 4 口其他类似这里说明一点,我是先将 IO 口电平输出再配置功能的,因为在实际操作过程中会发现从高阻态转换至强推模式时会有零点几微秒的脉冲干扰,具体宽度根据单片机速度来决定。大概是因为单片机在从强推模式转换至高阻态时 IO配置虽被改变,但输出寄存器中的数据还会继续保持, 所以才会有脉冲干扰的吧,先将 IO口输出电平改变再将 IO口状态从高阻切换至强推时就不会有脉冲干扰了这是先配置 IO输出状态再修改输出电平的,后来想了下,寄存器中应该是保存了最后一次 IO输出的电平, 所以从高阻态切换至强推后直接将输出相应的电平,等到再次配置 IO 口输出的电平时这是才会改变,所以才会在开始的时候有一个低脉冲