P_SW2|= 0x80; //使能访问XFR (EAXFR)
P_SW2 |= 0x80;PWMCKS = 0x01;// PWM时钟选择,系统时钟2分频:12MHz,但实际测得的输出是 约2...
串口2、3、4是通过“外设端口切换控制寄存器2(P_SW2)”中的S2_S、S3_S和S4_S配置的,如下图所示。 外设端口切换控制寄存器2(P_SW2): S2_S:串口2功能脚选择位,如下表所示。 表3:串口2功能脚选择位 S3_S:串口3功能脚选择位,如下表所示。 表4:串口3功能脚选择位 S4_S:串口4功能...
下面的代码是开启Timer3外部输入引脚P0.4的片内上拉电阻。 代码清单:开启P3.4的内部上拉电阻 P_SW2 |= 0x80; //将EAXFR位置1,允许访问扩展RAM区特殊功能寄存器(XFR) P0PU |= 0x10; //开启P0.4的上拉电阻 P_SW2 &= 0x7F; //将EAXFR位置0,禁止访问XFR 设置计数器初值和配置中断 Timer在计数器模式下...
P_SW2 = store;}void main(void){ P0M1 = 0; P0M0 = 0; //设置为准双向口 P1M1 = 0; P1M0 = 0; //设置为准双向口 P2M1 = 0; P2M0 = 0; //设置为准双向口 P3M1 = 0; P3M0 = 0; //设置为准双向口 P4M1 = 0; P4M0 = 0; //设置为准双向口 P5M1 = 0; P5M0 = 0; //设置...
(MCLK_XOSCCR,0,MCLK_EXPORT_DIV8,MCLK_EXPORT_IO_P54); 示波器测P54:1个周期7.2格*50ns/格,==> 频率2.77MHz ==> 2.77*8=22.22,正确! */ void SYSCLK_Init(enum_MCLK_SOURCE eMclkSource,u8 u8MclkDiv,enum_MCLK_EXPORT_DIV eMclkExDiv,enum_MCLK_EXPORT_IO eMclkExIo ) { P_SW2 |= B1000...
P_SW2 = 0x80;//因为I2C的寄存器在扩展的SFR中(XFR外部RAM),所以使用前必须将P_SW2最高位EAXFR置1。 P1M1 = 0; P1M0 = 0; I2CCFG = 0xe0; //允许I2C,主机模式,等待时钟数16 I2CMSST = 0x00;//清空状态标志位 EA = 1; } /***开始信号***/ void Start() { busy =...
P_SW2 =0x00; clkdiv = (__CONF_CLKDIV ==0)?1: __CONF_CLKDIV; SYS_SetFOSC(__CONF_IRCBAND, __CONF_VRTRIM, __CONF_IRTRIM, __CONF_LIRTRIM); while(--i);// Wait } 读取各预设值的代码 INTERRUPT(tm0isr,1) { uint8_ti, j; ...
由于PWM的配置相关特殊功能寄存器位于扩展RAM区域,访问这些寄存器,需先将P_SW2的BIT7设置为1,才可正常读写。 EAXSFR(); /* 扩展寄存器访问使能 */ 详细可参见STC8手册: 3.1.2 《外设端口切换控制寄存器 2(P_SW2)》 9.2.8 《扩展 SFR 使能寄存器 EAXFR 的使用说明》 ...
P_SW2 = 0x80; XOSCCR = 0xc0; for(a=4;a>0;a--); //启动外部晶振 while (!(XOSCCR & 1)); //等待时钟稳定 CLKDIV = 0x00; //时钟不分频 CKSEL = 0x01; //选择外部晶振 PWMCKS = 0x00; // PWM时钟为系统时钟 PWMC = 0x1000; //设置PWM周期为1000H个PWM时钟 ...