点亮LED STC15W1048脚单片机,开漏和推挽输出比较

增强型 8051 CPU,1T单时钟/机器周期,指令代码完全兼容传统8051
工作电压:2.5V - 5.5V
1K/2K/3K/4K/5K/7K字字节片内Flash程序存储器,擦写次数10万次以上
片内128字节的SRAM XRAM (xdata)
有片内功能,擦写次数10万次以上
ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器
内部高可靠复位,ISP编程时16级复位门槛电压可选,可彻底省掉外部复位电路
工作频率范围:5MHz ~ 35MHz,相当于普通8051的60MHz~
内部高精度R/C时钟(±0.3%),±1%温飘(-40℃+85℃),常温下温飘±0.6%(-20℃+65℃),ISP编程时内部时钟从5MHz~35MHz可设(5. / 11. / 22. / 33.).
不需外部晶振和外部复位,还可对外输出时钟和低电平复位信号
串口功能可由[P3.0/INT4,P3.1]结合定时器实现
支持程序加密后传输,防拦截
支持RS485下载
低功耗设计:低速模式,空闲模式,掉电模式/停机模式 。
可将掉电模式/停机模式唤醒的定时器:有内部低功耗掉电唤醒专用定时器
【点亮LEDSTC15W1048脚单片机,开漏和推挽输出比较】可将掉电模式/停机模式唤醒的资源有:
INT0/P3.2, INT1/P3.3 (INT0/INT1上升沿下降沿 中断均可), INT2 /P3.4, INT3/P3.5, INT4/P3.0(INT2 /INT3 /INT4 仅可下降沿中断);管脚T0/T2(下降 沿,不产生中断,前提是在进入掉电模式/停机 模式前相应的定时器中断已经被允许);内部低 功耗掉电唤醒专用定时器 。
共2个定时器/计数器——T0(兼容普通8051的定时器)/T2,并均可实现可编程时钟输出,另外管脚MCLKO可将内部主时钟对外分频输出(÷1或÷2或÷4) 。
可编程时钟输出功能(对内部系统时钟或对外部管脚的时钟输入进行时钟分频输出):
由于STC15系列5V单片机I/O口的对外输出速度最快不超过13.5MHz,所以5V单片机的对 外可编程时钟输出速度最快也不超过13.5MHz.;
而3.3V单片机I/O口的对外输出速度最快不超过8MHz,故3.3V单片机的对外可编程时钟 输出速度最快也不超过8MHz.
① T0在P3.5/进行可编程输出时钟(对内部系统时钟或对外部管脚T0/P3.4的 时钟输入进行可编程时钟分频输出);
② T2在P3.0/进行可编程输出时钟(对内部系统时钟或对外部管脚T2/P3.1的 时钟输入进行可编程时钟分频输出);
以上2个定时器/计数器均可1~65536级分频输出 。
③ 主时钟在P3.4/MCLKO对外输出时钟,并可如下分频MCLK/1, MCLK/2, MCLK/4.
系列单片机不支持外接外部晶体,其主时钟对外输出管脚P3.4/MCLKO只可 以对外输出内部R/C时钟 。MCLK是指主时钟频率,MCLKO是指主时钟输出 。
STC15系列8-pin单片机(如系列)在MCLKO/P3.4口对外输出时钟,STC15 系列16-pin及其以上单片机均在MCLKO/P5.4口对外 输出时钟,且系列20-pin及其以 上单片机除可在MCLKO/P5.4口对外输出时钟外,还可在/P1.6口对外输出时 钟 。
硬件看门狗(WDT)
先进的指令集结构,兼容普通8051指令集,有硬件乘法/除法指令
共6个通用I/O口,复位后为:准双向口/弱上拉(普通8051传统I/O口) 可设置成四种模式:准双向口/弱上拉,强推挽/强上拉,仅为输入/ 高阻,开漏
每个I/O口驱动能力均可达到20mA,但整个芯片电流最大不要超过90mA. 如果I/O口不够用,可外接(参考价0.15元)来 扩展I/O口,并可多芯片级联扩展几 十个I/O口
工作温度范围:-40 ~ +85℃(工业级) / 0 ~ 75℃(商业级)
封装:SOP-8, DIP-8, DFN-8
开发环境:在Keil C开发环境中,选择 Intel 8052 编译即可
流水灯程序
#include //包含STC15W104单片机的相关寄存器定义sbit LED1 = P1^0;//定义流水灯连接引脚,此处使用P1.0sbit LED2 = P1^1;sbit LED3 = P1^2;void main(){LED1 = 1;//将LED1亮起,表示流水灯开始的位置LED2 = 0;//其余两盏灯熄灭LED3 = 0;while(1)//设置死循环,确保程序一直运行{LED1 = !LED1;//取反亮灯状态,即实现灯的亮灭效果LED2 = !LED2;LED3 = !LED3;delay(1000);//延时一秒钟,使流水灯的效果更加明显}}void delay(unsigned int t){unsigned int i,j;for(i=0;i