STC单片机
STC8
- STC8G1K08:08和08A的区别:A多了ADC和PCA(可编程计数器阵列)
烧写
- 理论上通过TXD、RXD、GND和VCC与USB转TTL直连即可
- 参考5.10.19章”使用PL2303-GL下载,也可支持仿真“
- 接线(二极管型号为IN5819、BAT54等,根据USB转串口芯片不同,没有电阻可能也能工作)

- 无法检测/下载
STC8G1K08A串口烧录程序,始终处在
正在检测目标单片机...的状态?- 测试通过:
- 下载/检测前断开GND的连接,在下载/检测开始后重新连接GND
- 下载/检测前断开VCC和RXD,在下载/检测开始后同时连接VCC和RXD
- 正常连接RXD、TXD、GND,单独使用一路电源为单片机供电
- 参考(添加上拉电阻后使用串口芯片CP2102测试未通过):STC8G1K08A 串口无法烧录程序_stc8g1k08a只能烧录一次吗-CSDN博客
- 测试通过:
除P3.0和P3.1外,其余所有I/O口上电后的状态均为高阻输入状态,用户在使用I/O口时必须先设置I/O口模式,另外每个I/O均可独立使能内部4K上拉电阻 也就是说默认情况下P3.0和P3.1没有进行内部上拉,因此在下载器为3.3V电平时候不能很好的识别到电平。这里的做法很简单: - 解决方法 1.对于已经烧录不进去的单片机,在外部对RXD和TXD进行10K-4.7K的上拉处理,即可烧录成功。 2.对于还未烧录的单片机为了避免此问题的发生在串口初始化时候 手动设置端口为推挽输出,修改方法如下:
void UART1_init()
{
P3M0 = 0;
P3M1 = 0; //设置P3端口的输出方式
SCON = 0x50;
TMOD = 0x00;
TL1 = BRT;
TH1 = BRT >> 8;
TR1 = 1;
AUXR = 0x40;
ES = 1;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
I/O口
端口工作模式
- 准双向口/弱上拉(Quasi-Bidir,标准8051输出口模式)、推挽输出/强上拉(Push-Pull)、高阻输入(Input-only电流既不能流入也不能流出)、开漏输出(Open-Drain)
带动三极管控制电路
- 参考9.6一种典型三极管控制电路

手册中的I/O口注意事项
- 参考 9 I/O口
关于 I/O 的注意事项:
1、 P3.0 和 P3.1 口上电后的状态为弱上拉双向口模式
2、 除 P3.0 和 P3.1 外,其余所有 IO 口上电后的状态均为高阻输入状态,用户在使用 IO 口
前必须先设置 IO 口模式
3、 芯片上电时如果不需要使用 USB 进行 ISP 下载, P3.0/P3.1/P3.2 这 3 个 I/O 口不能同时
为低电平,否则会进入 USB 下载模式而无法运行用户代码
4、 芯片上电时,若 P3.0 和 P3.1 同时为低电平, P3.2 口会短时间由高阻输入状态切换到双
向口模式,用以读取 P3.2 口外部状态来判断是否需要进入 USB 下载模式 5、 当使用 P5.4 当作复位脚时,这个端口内部的 4K 上拉电阻会一直打开; 但 P5.4 做普通
I/O 口时,基于这个 I/O 口与复位脚共享管脚的特殊考量, 端口内部的 4K 上拉电阻依
然会打开大约 6.5 毫秒时间,再自动关闭( 当用户的电路设计需要使用 P5.4 口驱动外
部电路时,请务必考虑上电瞬间会有 6.5 毫秒时间的高电平的问题)
低功耗的配置
- 参考附录S 应用注意事项
- 特别注意:由于 STC8G 系列的所有 I/O(除了 ISP 下载口 P3.0/P3.1 外)在上电后都是高 阻输入模式, I/O 外部电平不固定,此时如果 MCU 直接进入掉电模式/停机模式,会导致 I/O 有额外的耗电,所有在 MCU 进入掉电模式/停机模式前,必须将所有 I/O 口都根据实 际情况设置好 I/O 口的模式,对于所有没有使用的外部悬空的 I/O 都需要设置为准双向口, 并固定输出高电平。特别是部分管脚的芯片,由于芯片内部有部分 I/O 口并没有打线到外 部管脚,所以这些 I/O 也是处于悬空状态的,这部分 I/O 也需要设置为准双向口,并固定 输出高电平。
最后实践证明,掉电模式最省电,掉电前所有I/O设置为准双向并写1,唤醒后恢复原I/O口设置,这样最省电!!!!!!
节电
- 两种模式:省电(IDLE)模式和掉电模式(Power-Down关闭所有时钟源)
掉电模式可以使用INT0(P3.2)、INT1(P3.3)、INT2(P3.6)、INT3(P3.7)、INT4(P3.0)、T0(P3.4)、T1(P3.5)、T2(P1.2)、T3(P0.4)、T4(P0.6)、RXD(P3.0/P3.6/P1.6/P4.3)、RXD2(P1.0/P4.6)、RXD3(P0.0/P5.0)、RXD4(P0.2/P5.2)、CCP0(P1.1/P3.5/P2.5)、CCP1(P1.0/P3.6/P2.6)、CCP2(P3.7/P2.7)、I2C_SDA(P1.4/P3.3)以及比较器中断、低压检测中断、掉电唤醒定时器唤醒;
定时器
中断
编译
编译错误 ERROR L121: IMPROPER FIXUP
- 程序寻址范围问题,检查Project-> Options for Target中的Target选项卡
Code Rom Size是否为Small: Program 2K or less,尝试改为Compact: 2K functions, 64K program,或者其他选项